summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp3
-rw-r--r--api/Android.bp3
-rw-r--r--cmds/screencap/screencap.cpp286
-rw-r--r--core/api/current.txt18
-rw-r--r--core/api/system-current.txt47
-rw-r--r--core/java/Android.bp26
-rw-r--r--core/java/android/accessibilityservice/OWNERS10
-rw-r--r--core/java/android/app/SystemServiceRegistry.java4
-rw-r--r--core/java/android/companion/AssociationInfo.java8
-rw-r--r--core/java/android/companion/CompanionDeviceManager.java10
-rw-r--r--core/java/android/content/Context.java13
-rw-r--r--core/java/android/os/IHintSession.aidl2
-rw-r--r--core/java/android/os/WorkDuration.java90
-rw-r--r--core/java/android/permission/flags.aconfig11
-rw-r--r--core/java/android/provider/BlockedNumberContract.java335
-rw-r--r--core/java/android/provider/BlockedNumbersManager.java400
-rw-r--r--core/java/android/provider/ProviderFrameworkInitializer.java48
-rw-r--r--core/java/android/service/ondeviceintelligence/OnDeviceSandboxedInferenceService.java40
-rw-r--r--core/java/android/view/WindowManager.java90
-rw-r--r--core/java/android/view/WindowManagerGlobal.java56
-rw-r--r--core/java/android/view/WindowManagerImpl.java8
-rw-r--r--core/java/android/view/accessibility/OWNERS27
-rw-r--r--core/java/android/window/InputTransferToken.java4
-rw-r--r--core/java/android/window/TransitionInfo.java3
-rw-r--r--core/java/com/android/internal/accessibility/OWNERS10
-rw-r--r--core/java/com/android/internal/os/CpuScalingPolicyReader.java3
-rw-r--r--core/java/com/android/internal/os/ZygoteInit.java2
-rw-r--r--core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java5
-rw-r--r--core/jni/Android.bp1
-rw-r--r--core/jni/AndroidRuntime.cpp2
-rw-r--r--core/jni/android_view_SurfaceControl.cpp19
-rw-r--r--core/jni/android_view_WindowManagerGlobal.cpp91
-rw-r--r--core/jni/android_view_WindowManagerGlobal.h29
-rw-r--r--core/jni/android_window_InputTransferToken.cpp10
-rw-r--r--core/jni/include/android_runtime/android_view_SurfaceControl.h3
-rw-r--r--core/jni/include/android_runtime/android_window_InputTransferToken.h2
-rw-r--r--core/res/AndroidManifest.xml1
-rw-r--r--core/res/res/values-af/strings.xml3
-rw-r--r--core/res/res/values-am/strings.xml3
-rw-r--r--core/res/res/values-ar/strings.xml3
-rw-r--r--core/res/res/values-as/strings.xml3
-rw-r--r--core/res/res/values-az/strings.xml3
-rw-r--r--core/res/res/values-b+sr+Latn/strings.xml3
-rw-r--r--core/res/res/values-be/strings.xml3
-rw-r--r--core/res/res/values-bg/strings.xml3
-rw-r--r--core/res/res/values-bn/strings.xml3
-rw-r--r--core/res/res/values-bs/strings.xml3
-rw-r--r--core/res/res/values-ca/strings.xml3
-rw-r--r--core/res/res/values-cs/strings.xml3
-rw-r--r--core/res/res/values-da/strings.xml5
-rw-r--r--core/res/res/values-de/strings.xml3
-rw-r--r--core/res/res/values-el/strings.xml3
-rw-r--r--core/res/res/values-en-rAU/strings.xml3
-rw-r--r--core/res/res/values-en-rGB/strings.xml3
-rw-r--r--core/res/res/values-en-rIN/strings.xml3
-rw-r--r--core/res/res/values-es-rUS/strings.xml3
-rw-r--r--core/res/res/values-es/strings.xml3
-rw-r--r--core/res/res/values-et/strings.xml3
-rw-r--r--core/res/res/values-eu/strings.xml3
-rw-r--r--core/res/res/values-fa/strings.xml3
-rw-r--r--core/res/res/values-fi/strings.xml3
-rw-r--r--core/res/res/values-fr-rCA/strings.xml3
-rw-r--r--core/res/res/values-fr/strings.xml3
-rw-r--r--core/res/res/values-gl/strings.xml3
-rw-r--r--core/res/res/values-gu/strings.xml3
-rw-r--r--core/res/res/values-hi/strings.xml3
-rw-r--r--core/res/res/values-hr/strings.xml3
-rw-r--r--core/res/res/values-hu/strings.xml3
-rw-r--r--core/res/res/values-hy/strings.xml3
-rw-r--r--core/res/res/values-in/strings.xml3
-rw-r--r--core/res/res/values-is/strings.xml3
-rw-r--r--core/res/res/values-it/strings.xml3
-rw-r--r--core/res/res/values-iw/strings.xml3
-rw-r--r--core/res/res/values-ja/strings.xml2
-rw-r--r--core/res/res/values-ka/strings.xml3
-rw-r--r--core/res/res/values-kk/strings.xml3
-rw-r--r--core/res/res/values-km/strings.xml3
-rw-r--r--core/res/res/values-kn/strings.xml5
-rw-r--r--core/res/res/values-ko/strings.xml3
-rw-r--r--core/res/res/values-ky/strings.xml3
-rw-r--r--core/res/res/values-lo/strings.xml3
-rw-r--r--core/res/res/values-lt/strings.xml3
-rw-r--r--core/res/res/values-lv/strings.xml3
-rw-r--r--core/res/res/values-mk/strings.xml3
-rw-r--r--core/res/res/values-ml/strings.xml3
-rw-r--r--core/res/res/values-mn/strings.xml3
-rw-r--r--core/res/res/values-mr/strings.xml3
-rw-r--r--core/res/res/values-ms/strings.xml3
-rw-r--r--core/res/res/values-my/strings.xml3
-rw-r--r--core/res/res/values-nb/strings.xml3
-rw-r--r--core/res/res/values-ne/strings.xml3
-rw-r--r--core/res/res/values-nl/strings.xml3
-rw-r--r--core/res/res/values-or/strings.xml3
-rw-r--r--core/res/res/values-pl/strings.xml3
-rw-r--r--core/res/res/values-pt-rBR/strings.xml3
-rw-r--r--core/res/res/values-pt-rPT/strings.xml5
-rw-r--r--core/res/res/values-pt/strings.xml3
-rw-r--r--core/res/res/values-ro/strings.xml3
-rw-r--r--core/res/res/values-ru/strings.xml3
-rw-r--r--core/res/res/values-si/strings.xml3
-rw-r--r--core/res/res/values-sk/strings.xml5
-rw-r--r--core/res/res/values-sl/strings.xml3
-rw-r--r--core/res/res/values-sq/strings.xml3
-rw-r--r--core/res/res/values-sr/strings.xml3
-rw-r--r--core/res/res/values-sv/strings.xml3
-rw-r--r--core/res/res/values-sw/strings.xml3
-rw-r--r--core/res/res/values-ta/strings.xml3
-rw-r--r--core/res/res/values-te/strings.xml3
-rw-r--r--core/res/res/values-th/strings.xml3
-rw-r--r--core/res/res/values-tl/strings.xml3
-rw-r--r--core/res/res/values-tr/strings.xml3
-rw-r--r--core/res/res/values-uk/strings.xml3
-rw-r--r--core/res/res/values-ur/strings.xml3
-rw-r--r--core/res/res/values-uz/strings.xml3
-rw-r--r--core/res/res/values-vi/strings.xml3
-rw-r--r--core/res/res/values-zh-rCN/strings.xml5
-rw-r--r--core/res/res/values-zh-rHK/strings.xml3
-rw-r--r--core/res/res/values-zh-rTW/strings.xml5
-rw-r--r--core/res/res/values-zu/strings.xml3
-rw-r--r--core/res/res/values/attrs.xml15
-rw-r--r--core/res/res/values/strings.xml3
-rw-r--r--core/res/res/values/symbols.xml1
-rw-r--r--core/tests/coretests/src/android/os/PerformanceHintManagerTest.java14
-rw-r--r--core/tests/coretests/src/android/view/WindowManagerTests.java77
-rw-r--r--libs/WindowManager/Jetpack/src/androidx/window/extensions/WindowExtensionsImpl.java89
-rw-r--r--libs/WindowManager/Jetpack/src/androidx/window/extensions/WindowExtensionsProvider.java48
-rw-r--r--libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java6
-rw-r--r--libs/WindowManager/Jetpack/src/androidx/window/sidecar/SidecarProvider.java27
-rw-r--r--libs/WindowManager/Jetpack/src/androidx/window/sidecar/StubSidecar.java15
-rw-r--r--libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/WindowExtensionsTest.java57
-rw-r--r--libs/WindowManager/Shell/res/drawable/bubble_drop_target_background.xml22
-rw-r--r--libs/WindowManager/Shell/res/layout/bubble_bar_drop_target.xml22
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java20
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java1
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java8
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/PhysicsAnimationLayout.java2
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarDropTargetController.kt125
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewDragController.kt24
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java61
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java9
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java5
-rw-r--r--media/java/android/media/IMediaRouter2Manager.aidl1
-rw-r--r--media/java/android/media/MediaFormat.java65
-rw-r--r--media/java/android/media/MediaRouter2.java181
-rw-r--r--media/java/android/media/MediaRouter2Manager.java6
-rw-r--r--native/android/Android.bp3
-rw-r--r--native/android/input_transfer_token.cpp4
-rw-r--r--native/android/libandroid.map.txt8
-rw-r--r--native/android/performance_hint.cpp181
-rw-r--r--native/android/surface_control_input_receiver.cpp213
-rw-r--r--native/android/tests/performance_hint/Android.bp1
-rw-r--r--native/android/tests/performance_hint/PerformanceHintNativeTest.cpp299
-rw-r--r--nfc/api/current.txt3
-rw-r--r--nfc/java/android/nfc/INfcCardEmulation.aidl3
-rw-r--r--nfc/java/android/nfc/cardemulation/ApduServiceInfo.java81
-rw-r--r--nfc/java/android/nfc/cardemulation/CardEmulation.java147
-rw-r--r--packages/CompanionDeviceManager/res/values-af/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-am/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-ar/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-as/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-az/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-be/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-bg/strings.xml5
-rw-r--r--packages/CompanionDeviceManager/res/values-bn/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-bs/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-ca/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-cs/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-da/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-de/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-el/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-en-rAU/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-en-rCA/strings.xml5
-rw-r--r--packages/CompanionDeviceManager/res/values-en-rGB/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-en-rIN/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-en-rXC/strings.xml5
-rw-r--r--packages/CompanionDeviceManager/res/values-es-rUS/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-es/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-et/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-eu/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-fa/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-fi/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-fr/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-gl/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-gu/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-hi/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-hr/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-hu/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-hy/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-in/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-is/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-it/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-iw/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-ja/strings.xml5
-rw-r--r--packages/CompanionDeviceManager/res/values-ka/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-kk/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-km/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-kn/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-ko/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-ky/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-lo/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-lt/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-lv/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-mk/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-ml/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-mn/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-mr/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-ms/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-my/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-nb/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-ne/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-nl/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-or/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-pa/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-pl/strings.xml5
-rw-r--r--packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-pt/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-ro/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-ru/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-si/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-sk/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-sl/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-sq/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-sr/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-sv/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-sw/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-ta/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-te/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-th/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-tl/strings.xml5
-rw-r--r--packages/CompanionDeviceManager/res/values-tr/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-uk/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-ur/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-uz/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-vi/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml10
-rw-r--r--packages/CompanionDeviceManager/res/values-zu/strings.xml10
-rw-r--r--packages/CredentialManager/res/values-uz/strings.xml2
-rw-r--r--packages/SettingsLib/SearchWidget/res/values-fr-rCA/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-af/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-am/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-ar/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-as/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-az/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-b+sr+Latn/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-be/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-bg/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-bn/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-bs/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-ca/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-cs/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-da/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-de/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-el/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-en-rAU/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-en-rCA/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-en-rGB/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-en-rIN/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-en-rXC/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-es-rUS/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-es/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-et/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-eu/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-fa/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-fi/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-fr-rCA/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-fr/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-gl/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-gu/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-hi/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-hr/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-hu/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-hy/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-in/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-is/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-it/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-iw/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-ja/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-ka/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-kk/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-km/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-kn/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-ko/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-ky/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-lo/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-lt/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-lv/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-mk/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-ml/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-mn/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-mr/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-ms/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-my/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-nb/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-ne/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-nl/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-or/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-pa/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-pl/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-pt-rBR/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-pt-rPT/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-pt/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-ro/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-ru/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-si/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-sk/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-sl/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-sq/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-sr/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-sv/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-sw/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-ta/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-te/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-th/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-tl/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-tr/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-uk/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-ur/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-uz/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-vi/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-zh-rCN/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-zh-rHK/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-zh-rTW/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-zu/strings.xml3
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java2
-rw-r--r--packages/SettingsProvider/res/values-af/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-am/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-ar/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-as/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-az/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-b+sr+Latn/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-be/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-bg/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-bn/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-bs/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-ca/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-cs/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-da/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-de/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-el/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-en-rAU/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-en-rCA/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-en-rGB/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-en-rIN/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-en-rXC/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-es-rUS/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-es/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-et/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-eu/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-fa/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-fi/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-fr-rCA/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-fr/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-gl/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-gu/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-hi/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-hr/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-hu/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-hy/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-in/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-is/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-it/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-iw/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-ja/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-ka/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-kk/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-km/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-kn/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-ko/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-ky/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-lo/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-lt/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-lv/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-mk/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-ml/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-mn/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-mr/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-ms/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-my/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-nb/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-ne/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-nl/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-or/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-pa/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-pl/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-pt-rBR/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-pt-rPT/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-pt/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-ro/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-ru/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-si/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-sk/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-sl/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-sq/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-sr/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-sv/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-sw/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-ta/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-te/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-th/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-tl/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-tr/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-uk/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-ur/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-uz/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-vi/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-zh-rCN/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-zh-rHK/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-zh-rTW/strings.xml2
-rw-r--r--packages/SettingsProvider/res/values-zu/strings.xml2
-rw-r--r--packages/SystemUI/accessibility/accessibilitymenu/res/values-kk/strings.xml2
-rw-r--r--packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/AccessibilityMenuService.java33
-rw-r--r--packages/SystemUI/aconfig/systemui.aconfig28
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt3
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt14
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/util/Assert.java33
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModelTest.kt89
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToLockscreenTransitionViewModelTest.kt4
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGlanceableHubTransitionViewModelTest.kt4
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileDataInteractorTest.kt24
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationStackAppearanceIntegrationTest.kt11
-rw-r--r--packages/SystemUI/res-keyguard/values-af/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-am/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-ar/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-as/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-az/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-be/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-bg/strings.xml3
-rw-r--r--packages/SystemUI/res-keyguard/values-bn/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-bs/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-ca/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-cs/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-da/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-de/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-el/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-en-rAU/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-en-rCA/strings.xml3
-rw-r--r--packages/SystemUI/res-keyguard/values-en-rGB/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-en-rIN/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-en-rXC/strings.xml3
-rw-r--r--packages/SystemUI/res-keyguard/values-es-rUS/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-es/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-et/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-eu/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-fa/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-fi/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-fr/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-gl/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-gu/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-hi/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-hr/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-hu/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-hy/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-in/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-is/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-it/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-iw/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-ja/strings.xml3
-rw-r--r--packages/SystemUI/res-keyguard/values-ka/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-kk/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-km/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-kn/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-ko/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-ky/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-lo/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-lt/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-lv/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-mk/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-ml/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-mn/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-mr/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-ms/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-my/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-nb/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-ne/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-nl/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-or/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-pa/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-pl/strings.xml3
-rw-r--r--packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-pt/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-ro/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-ru/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-si/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-sk/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-sl/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-sq/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-sr/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-sv/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-sw/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-ta/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-te/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-th/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-tl/strings.xml3
-rw-r--r--packages/SystemUI/res-keyguard/values-tr/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-uk/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-ur/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-uz/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-vi/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml6
-rw-r--r--packages/SystemUI/res-keyguard/values-zu/strings.xml6
-rw-r--r--packages/SystemUI/res/layout/super_notification_shade.xml5
-rw-r--r--packages/SystemUI/res/values-af/strings.xml39
-rw-r--r--packages/SystemUI/res/values-am/strings.xml39
-rw-r--r--packages/SystemUI/res/values-ar/strings.xml39
-rw-r--r--packages/SystemUI/res/values-as/strings.xml48
-rw-r--r--packages/SystemUI/res/values-az/strings.xml39
-rw-r--r--packages/SystemUI/res/values-b+sr+Latn/strings.xml39
-rw-r--r--packages/SystemUI/res/values-be/strings.xml48
-rw-r--r--packages/SystemUI/res/values-bg/strings.xml32
-rw-r--r--packages/SystemUI/res/values-bn/strings.xml50
-rw-r--r--packages/SystemUI/res/values-bs/strings.xml45
-rw-r--r--packages/SystemUI/res/values-ca/strings.xml48
-rw-r--r--packages/SystemUI/res/values-cs/strings.xml39
-rw-r--r--packages/SystemUI/res/values-da/strings.xml41
-rw-r--r--packages/SystemUI/res/values-de/strings.xml48
-rw-r--r--packages/SystemUI/res/values-el/strings.xml48
-rw-r--r--packages/SystemUI/res/values-en-rAU/strings.xml39
-rw-r--r--packages/SystemUI/res/values-en-rCA/strings.xml19
-rw-r--r--packages/SystemUI/res/values-en-rGB/strings.xml39
-rw-r--r--packages/SystemUI/res/values-en-rIN/strings.xml39
-rw-r--r--packages/SystemUI/res/values-en-rXC/strings.xml19
-rw-r--r--packages/SystemUI/res/values-es-rUS/strings.xml50
-rw-r--r--packages/SystemUI/res/values-es/strings.xml53
-rw-r--r--packages/SystemUI/res/values-et/strings.xml48
-rw-r--r--packages/SystemUI/res/values-eu/strings.xml41
-rw-r--r--packages/SystemUI/res/values-fa/strings.xml48
-rw-r--r--packages/SystemUI/res/values-fi/strings.xml48
-rw-r--r--packages/SystemUI/res/values-fr-rCA/strings.xml41
-rw-r--r--packages/SystemUI/res/values-fr/strings.xml45
-rw-r--r--packages/SystemUI/res/values-gl/strings.xml39
-rw-r--r--packages/SystemUI/res/values-gu/strings.xml50
-rw-r--r--packages/SystemUI/res/values-hi/strings.xml71
-rw-r--r--packages/SystemUI/res/values-hr/strings.xml41
-rw-r--r--packages/SystemUI/res/values-hu/strings.xml39
-rw-r--r--packages/SystemUI/res/values-hy/strings.xml48
-rw-r--r--packages/SystemUI/res/values-in/strings.xml47
-rw-r--r--packages/SystemUI/res/values-is/strings.xml39
-rw-r--r--packages/SystemUI/res/values-it/strings.xml45
-rw-r--r--packages/SystemUI/res/values-iw/strings.xml39
-rw-r--r--packages/SystemUI/res/values-ja/strings.xml32
-rw-r--r--packages/SystemUI/res/values-ka/strings.xml39
-rw-r--r--packages/SystemUI/res/values-kk/strings.xml39
-rw-r--r--packages/SystemUI/res/values-km/strings.xml48
-rw-r--r--packages/SystemUI/res/values-kn/strings.xml50
-rw-r--r--packages/SystemUI/res/values-ko/strings.xml43
-rw-r--r--packages/SystemUI/res/values-ky/strings.xml39
-rw-r--r--packages/SystemUI/res/values-lo/strings.xml39
-rw-r--r--packages/SystemUI/res/values-lt/strings.xml39
-rw-r--r--packages/SystemUI/res/values-lv/strings.xml48
-rw-r--r--packages/SystemUI/res/values-mk/strings.xml48
-rw-r--r--packages/SystemUI/res/values-ml/strings.xml39
-rw-r--r--packages/SystemUI/res/values-mn/strings.xml39
-rw-r--r--packages/SystemUI/res/values-mr/strings.xml50
-rw-r--r--packages/SystemUI/res/values-ms/strings.xml39
-rw-r--r--packages/SystemUI/res/values-my/strings.xml39
-rw-r--r--packages/SystemUI/res/values-nb/strings.xml41
-rw-r--r--packages/SystemUI/res/values-ne/strings.xml48
-rw-r--r--packages/SystemUI/res/values-nl/strings.xml43
-rw-r--r--packages/SystemUI/res/values-or/strings.xml50
-rw-r--r--packages/SystemUI/res/values-pa/strings.xml50
-rw-r--r--packages/SystemUI/res/values-pl/strings.xml32
-rw-r--r--packages/SystemUI/res/values-pt-rBR/strings.xml39
-rw-r--r--packages/SystemUI/res/values-pt-rPT/strings.xml41
-rw-r--r--packages/SystemUI/res/values-pt/strings.xml39
-rw-r--r--packages/SystemUI/res/values-ro/strings.xml39
-rw-r--r--packages/SystemUI/res/values-ru/strings.xml41
-rw-r--r--packages/SystemUI/res/values-si/strings.xml48
-rw-r--r--packages/SystemUI/res/values-sk/strings.xml39
-rw-r--r--packages/SystemUI/res/values-sl/strings.xml39
-rw-r--r--packages/SystemUI/res/values-sq/strings.xml48
-rw-r--r--packages/SystemUI/res/values-sr/strings.xml39
-rw-r--r--packages/SystemUI/res/values-sv/strings.xml48
-rw-r--r--packages/SystemUI/res/values-sw/strings.xml39
-rw-r--r--packages/SystemUI/res/values-ta/strings.xml39
-rw-r--r--packages/SystemUI/res/values-te/strings.xml48
-rw-r--r--packages/SystemUI/res/values-th/strings.xml39
-rw-r--r--packages/SystemUI/res/values-tl/strings.xml32
-rw-r--r--packages/SystemUI/res/values-tr/strings.xml39
-rw-r--r--packages/SystemUI/res/values-uk/strings.xml48
-rw-r--r--packages/SystemUI/res/values-ur/strings.xml48
-rw-r--r--packages/SystemUI/res/values-uz/strings.xml39
-rw-r--r--packages/SystemUI/res/values-vi/strings.xml39
-rw-r--r--packages/SystemUI/res/values-zh-rCN/strings.xml45
-rw-r--r--packages/SystemUI/res/values-zh-rHK/strings.xml39
-rw-r--r--packages/SystemUI/res/values-zh-rTW/strings.xml50
-rw-r--r--packages/SystemUI/res/values-zu/strings.xml39
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/SystemUIApplication.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/RadiiAnimator.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModel.kt54
-rw-r--r--packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/NotificationStackScrollLayoutSection.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToGlanceableHubTransitionViewModel.kt12
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToDreamingTransitionViewModel.kt12
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToLockscreenTransitionViewModel.kt22
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGlanceableHubTransitionViewModel.kt20
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt14
-rw-r--r--packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootViewBinder.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java24
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifBindPipeline.java38
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationEntryProcessorFactory.kt (renamed from packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/shared/SceneContainerFlagsExtension.kt)20
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationEntryProcessorFactoryExecutorImpl.kt56
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationEntryProcessorFactoryLooperImpl.kt60
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/Processor.kt (renamed from core/java/android/os/WorkDuration.aidl)12
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotificationStackAppearanceViewBinder.kt12
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationStackAppearanceViewModel.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt21
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/user/utils/UserScopedService.kt66
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt53
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifBindPipelineTest.java15
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java38
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java10
-rw-r--r--packages/SystemUI/tests/utils/src/android/animation/AnimatorTestRule.java6
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModelKosmos.kt35
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationStackAppearanceViewModelKosmos.kt2
-rw-r--r--services/accessibility/OWNERS15
-rw-r--r--services/accessibility/java/com/android/server/accessibility/ProxyAccessibilityServiceConnection.java6
-rw-r--r--services/backup/java/com/android/server/backup/PackageManagerBackupAgent.java109
-rw-r--r--services/companion/java/com/android/server/companion/BackupRestoreProcessor.java121
-rw-r--r--services/companion/java/com/android/server/companion/CompanionApplicationController.java4
-rw-r--r--services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java480
-rw-r--r--services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java31
-rw-r--r--services/companion/java/com/android/server/companion/association/AssociationDiskStore.java285
-rw-r--r--services/companion/java/com/android/server/companion/association/AssociationRequestsProcessor.java63
-rw-r--r--services/companion/java/com/android/server/companion/association/AssociationRevokeProcessor.java383
-rw-r--r--services/companion/java/com/android/server/companion/association/AssociationStore.java435
-rw-r--r--services/companion/java/com/android/server/companion/association/Associations.java68
-rw-r--r--services/companion/java/com/android/server/companion/association/DisassociationProcessor.java218
-rw-r--r--services/companion/java/com/android/server/companion/association/InactiveAssociationsRemovalService.java2
-rw-r--r--services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java63
-rw-r--r--services/companion/java/com/android/server/companion/presence/BleCompanionDeviceScanner.java10
-rw-r--r--services/companion/java/com/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener.java4
-rw-r--r--services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java4
-rw-r--r--services/companion/java/com/android/server/companion/presence/ObservableUuidStore.java4
-rw-r--r--services/companion/java/com/android/server/companion/utils/DataStoreUtils.java4
-rw-r--r--services/companion/java/com/android/server/companion/utils/PackageUtils.java20
-rw-r--r--services/companion/java/com/android/server/companion/utils/RolesUtils.java12
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java28
-rw-r--r--services/core/java/com/android/server/am/BroadcastConstants.java32
-rw-r--r--services/core/java/com/android/server/am/BroadcastQueue.java8
-rw-r--r--services/core/java/com/android/server/am/BroadcastQueueModernImpl.java83
-rw-r--r--services/core/java/com/android/server/am/BroadcastRecord.java149
-rw-r--r--services/core/java/com/android/server/am/BroadcastSkipPolicy.java14
-rw-r--r--services/core/java/com/android/server/am/PendingIntentController.java15
-rw-r--r--services/core/java/com/android/server/am/ProcessReceiverRecord.java4
-rw-r--r--services/core/java/com/android/server/am/flags.aconfig26
-rw-r--r--services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java119
-rw-r--r--services/core/java/com/android/server/om/OverlayManagerService.java3
-rw-r--r--services/core/java/com/android/server/om/OverlayManagerShellCommand.java2
-rw-r--r--services/core/java/com/android/server/pm/InstallPackageHelper.java3
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java2
-rw-r--r--services/core/java/com/android/server/pm/parsing/PackageCacher.java21
-rw-r--r--services/core/java/com/android/server/power/hint/HintManagerService.java46
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java37
-rw-r--r--services/core/java/com/android/server/wm/BackgroundActivityStartController.java110
-rw-r--r--services/core/java/com/android/server/wm/Transition.java10
-rw-r--r--services/core/jni/com_android_server_hint_HintManagerService.cpp76
-rw-r--r--services/permission/java/com/android/server/permission/access/AccessCheckingService.kt2
-rw-r--r--services/permission/java/com/android/server/permission/access/AccessPolicy.kt6
-rw-r--r--services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPersistence.kt15
-rw-r--r--services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt217
-rw-r--r--services/permission/java/com/android/server/permission/access/permission/Permission.kt3
-rw-r--r--services/tests/PermissionServiceMockingTests/src/com/android/server/permission/test/AppIdPermissionPolicyPermissionDefinitionsTest.kt17
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/am/ActivityManagerServiceTest.java102
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/am/BaseBroadcastQueueTest.java2
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java5
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/am/BroadcastRecordTest.java145
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/backup/PackageManagerBackupAgentTest.java63
-rw-r--r--services/tests/servicestests/src/com/android/server/accessibility/ProxyAccessibilityServiceConnectionTest.java21
-rw-r--r--services/tests/servicestests/src/com/android/server/power/hint/HintManagerServiceTest.java32
-rw-r--r--telephony/common/com/android/internal/telephony/CarrierAppUtils.java35
-rw-r--r--tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/EmbeddedWindowService.java2
-rw-r--r--tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/SurfaceInputTestActivity.java4
691 files changed, 8789 insertions, 5122 deletions
diff --git a/Android.bp b/Android.bp
index 8d7ab983593d..057b1d62ea5a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -355,8 +355,11 @@ java_defaults {
"packages/modules/Media/apex/aidl/stable",
"hardware/interfaces/biometrics/common/aidl",
"hardware/interfaces/biometrics/fingerprint/aidl",
+ "hardware/interfaces/common/aidl",
+ "hardware/interfaces/common/fmq/aidl",
"hardware/interfaces/graphics/common/aidl",
"hardware/interfaces/keymaster/aidl",
+ "hardware/interfaces/power/aidl",
"system/hardware/interfaces/media/aidl",
],
},
diff --git a/api/Android.bp b/api/Android.bp
index 093ee4beab50..010a2a587057 100644
--- a/api/Android.bp
+++ b/api/Android.bp
@@ -342,8 +342,11 @@ stubs_defaults {
"packages/modules/Media/apex/aidl/stable",
"hardware/interfaces/biometrics/common/aidl",
"hardware/interfaces/biometrics/fingerprint/aidl",
+ "hardware/interfaces/common/aidl",
+ "hardware/interfaces/common/fmq/aidl",
"hardware/interfaces/graphics/common/aidl",
"hardware/interfaces/keymaster/aidl",
+ "hardware/interfaces/power/aidl",
"system/hardware/interfaces/media/aidl",
],
},
diff --git a/cmds/screencap/screencap.cpp b/cmds/screencap/screencap.cpp
index 917529ec1dcf..7e4f95bc9274 100644
--- a/cmds/screencap/screencap.cpp
+++ b/cmds/screencap/screencap.cpp
@@ -51,11 +51,13 @@ using namespace android;
void usage(const char* pname, ftl::Optional<DisplayId> displayIdOpt) {
fprintf(stderr, R"(
-usage: %s [-hp] [-d display-id] [FILENAME]
+usage: %s [-ahp] [-d display-id] [FILENAME]
-h: this message
- -p: save the file as a png.
+ -a: captures all the active displays. This appends an integer postfix to the FILENAME.
+ e.g., FILENAME_0.png, FILENAME_1.png. If both -a and -d are given, it ignores -d.
-d: specify the display ID to capture%s
see "dumpsys SurfaceFlinger --display-id" for valid display IDs.
+ -p: outputs in png format.
--hint-for-seamless If set will use the hintForSeamless path in SF
If FILENAME ends with .png it will be saved as a png.
@@ -63,11 +65,13 @@ If FILENAME is not given, the results will be printed to stdout.
)",
pname,
displayIdOpt
- .transform([](DisplayId id) {
- return std::string(ftl::Concat(" (default: ", id.value, ')').str());
- })
- .value_or(std::string())
- .c_str());
+ .transform([](DisplayId id) {
+ return std::string(ftl::Concat(
+ " (If the id is not given, it defaults to ", id.value,')'
+ ).str());
+ })
+ .value_or(std::string())
+ .c_str());
}
// For options that only exist in long-form. Anything in the
@@ -123,8 +127,8 @@ static status_t notifyMediaScanner(const char* fileName) {
int status;
int pid = fork();
if (pid < 0){
- fprintf(stderr, "Unable to fork in order to send intent for media scanner.\n");
- return UNKNOWN_ERROR;
+ fprintf(stderr, "Unable to fork in order to send intent for media scanner.\n");
+ return UNKNOWN_ERROR;
}
if (pid == 0){
int fd = open("/dev/null", O_WRONLY);
@@ -146,19 +150,119 @@ static status_t notifyMediaScanner(const char* fileName) {
return NO_ERROR;
}
+status_t capture(const DisplayId displayId,
+ const gui::CaptureArgs& captureArgs,
+ ScreenCaptureResults& outResult) {
+ sp<SyncScreenCaptureListener> captureListener = new SyncScreenCaptureListener();
+ ScreenshotClient::captureDisplay(displayId, captureArgs, captureListener);
+
+ ScreenCaptureResults captureResults = captureListener->waitForResults();
+ if (!captureResults.fenceResult.ok()) {
+ fprintf(stderr, "Failed to take screenshot. Status: %d\n",
+ fenceStatus(captureResults.fenceResult));
+ return 1;
+ }
+
+ outResult = captureResults;
+
+ return 0;
+}
+
+status_t saveImage(const char* fn, bool png, const ScreenCaptureResults& captureResults) {
+ void* base = nullptr;
+ ui::Dataspace dataspace = captureResults.capturedDataspace;
+ sp<GraphicBuffer> buffer = captureResults.buffer;
+
+ status_t result = buffer->lock(GraphicBuffer::USAGE_SW_READ_OFTEN, &base);
+
+ if (base == nullptr || result != NO_ERROR) {
+ String8 reason;
+ if (result != NO_ERROR) {
+ reason.appendFormat(" Error Code: %d", result);
+ } else {
+ reason = "Failed to write to buffer";
+ }
+ fprintf(stderr, "Failed to take screenshot (%s)\n", reason.c_str());
+ return 1;
+ }
+
+ int fd = -1;
+ if (fn == nullptr) {
+ fd = dup(STDOUT_FILENO);
+ if (fd == -1) {
+ fprintf(stderr, "Error writing to stdout. (%s)\n", strerror(errno));
+ return 1;
+ }
+ } else {
+ fd = open(fn, O_WRONLY | O_CREAT | O_TRUNC, 0664);
+ if (fd == -1) {
+ fprintf(stderr, "Error opening file: %s (%s)\n", fn, strerror(errno));
+ return 1;
+ }
+ }
+
+ if (png) {
+ AndroidBitmapInfo info;
+ info.format = flinger2bitmapFormat(buffer->getPixelFormat());
+ info.flags = ANDROID_BITMAP_FLAGS_ALPHA_PREMUL;
+ info.width = buffer->getWidth();
+ info.height = buffer->getHeight();
+ info.stride = buffer->getStride() * bytesPerPixel(buffer->getPixelFormat());
+
+ int result = AndroidBitmap_compress(&info, static_cast<int32_t>(dataspace), base,
+ ANDROID_BITMAP_COMPRESS_FORMAT_PNG, 100, &fd,
+ [](void* fdPtr, const void* data, size_t size) -> bool {
+ int bytesWritten = write(*static_cast<int*>(fdPtr),
+ data, size);
+ return bytesWritten == size;
+ });
+
+ if (result != ANDROID_BITMAP_RESULT_SUCCESS) {
+ fprintf(stderr, "Failed to compress PNG (error code: %d)\n", result);
+ }
+
+ if (fn != NULL) {
+ notifyMediaScanner(fn);
+ }
+ } else {
+ uint32_t w = buffer->getWidth();
+ uint32_t h = buffer->getHeight();
+ uint32_t s = buffer->getStride();
+ uint32_t f = buffer->getPixelFormat();
+ uint32_t c = dataSpaceToInt(dataspace);
+
+ write(fd, &w, 4);
+ write(fd, &h, 4);
+ write(fd, &f, 4);
+ write(fd, &c, 4);
+ size_t Bpp = bytesPerPixel(f);
+ for (size_t y=0 ; y<h ; y++) {
+ write(fd, base, w*Bpp);
+ base = (void *)((char *)base + s*Bpp);
+ }
+ }
+ close(fd);
+
+ return 0;
+}
+
int main(int argc, char** argv)
{
- const std::vector<PhysicalDisplayId> ids = SurfaceComposerClient::getPhysicalDisplayIds();
- if (ids.empty()) {
+ const std::vector<PhysicalDisplayId> physicalDisplays =
+ SurfaceComposerClient::getPhysicalDisplayIds();
+
+ if (physicalDisplays.empty()) {
fprintf(stderr, "Failed to get ID for any displays.\n");
return 1;
}
std::optional<DisplayId> displayIdOpt;
+ std::vector<DisplayId> displaysToCapture;
gui::CaptureArgs captureArgs;
const char* pname = argv[0];
bool png = false;
+ bool all = false;
int c;
- while ((c = getopt_long(argc, argv, "phd:", LONG_OPTIONS, nullptr)) != -1) {
+ while ((c = getopt_long(argc, argv, "aphd:", LONG_OPTIONS, nullptr)) != -1) {
switch (c) {
case 'p':
png = true;
@@ -177,12 +281,17 @@ int main(int argc, char** argv)
fprintf(stderr, "Invalid display ID: Incorrect encoding.\n");
return 1;
}
+ displaysToCapture.push_back(displayIdOpt.value());
+ break;
+ }
+ case 'a': {
+ all = true;
break;
}
case '?':
case 'h':
- if (ids.size() == 1) {
- displayIdOpt = ids.front();
+ if (physicalDisplays.size() >= 1) {
+ displayIdOpt = physicalDisplays.front();
}
usage(pname, displayIdOpt);
return 1;
@@ -192,44 +301,52 @@ int main(int argc, char** argv)
}
}
- if (!displayIdOpt) {
- displayIdOpt = ids.front();
- if (ids.size() > 1) {
- fprintf(stderr,
- "[Warning] Multiple displays were found, but no display id was specified! "
- "Defaulting to the first display found, however this default is not guaranteed "
- "to be consistent across captures. A display id should be specified.\n");
- fprintf(stderr, "A display ID can be specified with the [-d display-id] option.\n");
- fprintf(stderr, "See \"dumpsys SurfaceFlinger --display-id\" for valid display IDs.\n");
- }
- }
-
argc -= optind;
argv += optind;
- int fd = -1;
- const char* fn = NULL;
- if (argc == 0) {
- fd = dup(STDOUT_FILENO);
- } else if (argc == 1) {
- fn = argv[0];
- fd = open(fn, O_WRONLY | O_CREAT | O_TRUNC, 0664);
- if (fd == -1) {
- fprintf(stderr, "Error opening file: %s (%s)\n", fn, strerror(errno));
- return 1;
+ // We don't expect more than 2 arguments.
+ if (argc >= 2) {
+ if (physicalDisplays.size() >= 1) {
+ usage(pname, physicalDisplays.front());
+ } else {
+ usage(pname, std::nullopt);
}
- const int len = strlen(fn);
- if (len >= 4 && 0 == strcmp(fn+len-4, ".png")) {
+ return 1;
+ }
+
+ std::string baseName;
+ std::string suffix;
+
+ if (argc == 1) {
+ std::string_view filename = { argv[0] };
+ if (filename.ends_with(".png")) {
+ baseName = filename.substr(0, filename.size()-4);
+ suffix = ".png";
png = true;
+ } else {
+ baseName = filename;
}
}
- if (fd == -1) {
- usage(pname, displayIdOpt);
- return 1;
+ if (all) {
+ // Ignores -d if -a is given.
+ displaysToCapture.clear();
+ for (int i = 0; i < physicalDisplays.size(); i++) {
+ displaysToCapture.push_back(physicalDisplays[i]);
+ }
}
- void* base = NULL;
+ if (displaysToCapture.empty()) {
+ displaysToCapture.push_back(physicalDisplays.front());
+ if (physicalDisplays.size() > 1) {
+ fprintf(stderr,
+ "[Warning] Multiple displays were found, but no display id was specified! "
+ "Defaulting to the first display found, however this default is not guaranteed "
+ "to be consistent across captures. A display id should be specified.\n");
+ fprintf(stderr, "A display ID can be specified with the [-d display-id] option.\n");
+ fprintf(stderr, "See \"dumpsys SurfaceFlinger --display-id\" for valid display IDs.\n");
+ }
+ }
// setThreadPoolMaxThreadCount(0) actually tells the kernel it's
// not allowed to spawn any additional threads, but we still spawn
@@ -238,74 +355,39 @@ int main(int argc, char** argv)
ProcessState::self()->setThreadPoolMaxThreadCount(0);
ProcessState::self()->startThreadPool();
- sp<SyncScreenCaptureListener> captureListener = new SyncScreenCaptureListener();
- ScreenshotClient::captureDisplay(*displayIdOpt, captureArgs, captureListener);
-
- ScreenCaptureResults captureResults = captureListener->waitForResults();
- if (!captureResults.fenceResult.ok()) {
- close(fd);
- fprintf(stderr, "Failed to take screenshot. Status: %d\n",
- fenceStatus(captureResults.fenceResult));
- return 1;
- }
- ui::Dataspace dataspace = captureResults.capturedDataspace;
- sp<GraphicBuffer> buffer = captureResults.buffer;
+ std::vector<ScreenCaptureResults> results;
+ const size_t numDisplays = displaysToCapture.size();
+ for (int i=0; i<numDisplays; i++) {
+ ScreenCaptureResults result;
- status_t result = buffer->lock(GraphicBuffer::USAGE_SW_READ_OFTEN, &base);
+ // 1. Capture the screen
+ if (const status_t captureStatus =
+ capture(displaysToCapture[i], captureArgs, result) != 0) {
- if (base == nullptr || result != NO_ERROR) {
- String8 reason;
- if (result != NO_ERROR) {
- reason.appendFormat(" Error Code: %d", result);
- } else {
- reason = "Failed to write to buffer";
+ fprintf(stderr, "Capturing failed.\n");
+ return captureStatus;
}
- fprintf(stderr, "Failed to take screenshot (%s)\n", reason.c_str());
- close(fd);
- return 1;
- }
-
- if (png) {
- AndroidBitmapInfo info;
- info.format = flinger2bitmapFormat(buffer->getPixelFormat());
- info.flags = ANDROID_BITMAP_FLAGS_ALPHA_PREMUL;
- info.width = buffer->getWidth();
- info.height = buffer->getHeight();
- info.stride = buffer->getStride() * bytesPerPixel(buffer->getPixelFormat());
-
- int result = AndroidBitmap_compress(&info, static_cast<int32_t>(dataspace), base,
- ANDROID_BITMAP_COMPRESS_FORMAT_PNG, 100, &fd,
- [](void* fdPtr, const void* data, size_t size) -> bool {
- int bytesWritten = write(*static_cast<int*>(fdPtr),
- data, size);
- return bytesWritten == size;
- });
- if (result != ANDROID_BITMAP_RESULT_SUCCESS) {
- fprintf(stderr, "Failed to compress PNG (error code: %d)\n", result);
+ // 2. Save the capture result as an image.
+ // When there's more than one file to capture, add the index as postfix.
+ std::string filename;
+ if (!baseName.empty()) {
+ filename = baseName;
+ if (numDisplays > 1) {
+ filename += "_";
+ filename += std::to_string(i);
+ }
+ filename += suffix;
}
-
- if (fn != NULL) {
- notifyMediaScanner(fn);
+ const char* fn = nullptr;
+ if (!filename.empty()) {
+ fn = filename.c_str();
}
- } else {
- uint32_t w = buffer->getWidth();
- uint32_t h = buffer->getHeight();
- uint32_t s = buffer->getStride();
- uint32_t f = buffer->getPixelFormat();
- uint32_t c = dataSpaceToInt(dataspace);
-
- write(fd, &w, 4);
- write(fd, &h, 4);
- write(fd, &f, 4);
- write(fd, &c, 4);
- size_t Bpp = bytesPerPixel(f);
- for (size_t y=0 ; y<h ; y++) {
- write(fd, base, w*Bpp);
- base = (void *)((char *)base + s*Bpp);
+ if (const status_t saveImageStatus = saveImage(fn, png, result) != 0) {
+ fprintf(stderr, "Saving image failed.\n");
+ return saveImageStatus;
}
}
- close(fd);
return 0;
}
diff --git a/core/api/current.txt b/core/api/current.txt
index 925cf4c605de..4d3ca1335416 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -23735,6 +23735,13 @@ package android.media {
field public static final int VIDEO_ENCODING_STATISTICS_LEVEL_NONE = 0; // 0x0
}
+ @FlaggedApi("android.media.codec.region_of_interest") public static final class MediaFormat.QpOffsetRect {
+ ctor public MediaFormat.QpOffsetRect(@NonNull android.graphics.Rect, int);
+ method @NonNull public String flattenToString();
+ method @NonNull public static String flattenToString(@NonNull java.util.List<android.media.MediaFormat.QpOffsetRect>);
+ method public void set(@NonNull android.graphics.Rect, int);
+ }
+
public final class MediaMetadata implements android.os.Parcelable {
method public boolean containsKey(String);
method public int describeContents();
@@ -24527,7 +24534,7 @@ package android.media {
method @Nullable public android.media.MediaRouter2.RoutingController getController(@NonNull String);
method @NonNull public java.util.List<android.media.MediaRouter2.RoutingController> getControllers();
method @NonNull public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context);
- method @FlaggedApi("com.android.media.flags.enable_cross_user_routing_in_media_router2") @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MEDIA_CONTENT_CONTROL, android.Manifest.permission.MEDIA_ROUTING_CONTROL}) public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context, @NonNull String);
+ method @FlaggedApi("com.android.media.flags.enable_privileged_routing_for_media_routing_control") @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MEDIA_CONTENT_CONTROL, android.Manifest.permission.MEDIA_ROUTING_CONTROL}) public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull Runnable);
method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") @Nullable public android.media.RouteListingPreference getRouteListingPreference();
method @NonNull public java.util.List<android.media.MediaRoute2Info> getRoutes();
method @NonNull public android.media.MediaRouter2.RoutingController getSystemController();
@@ -34172,9 +34179,8 @@ package android.os {
method @RequiresPermission(android.Manifest.permission.VIBRATE) public final void vibrate(@NonNull android.os.CombinedVibration, @Nullable android.os.VibrationAttributes);
}
- @FlaggedApi("android.os.adpf_gpu_report_actual_work_duration") public final class WorkDuration implements android.os.Parcelable {
+ @FlaggedApi("android.os.adpf_gpu_report_actual_work_duration") public final class WorkDuration {
ctor public WorkDuration();
- method public int describeContents();
method public long getActualCpuDurationNanos();
method public long getActualGpuDurationNanos();
method public long getActualTotalDurationNanos();
@@ -34183,8 +34189,6 @@ package android.os {
method public void setActualGpuDurationNanos(long);
method public void setActualTotalDurationNanos(long);
method public void setWorkPeriodStartTimestampNanos(long);
- method public void writeToParcel(@NonNull android.os.Parcel, int);
- field @NonNull public static final android.os.Parcelable.Creator<android.os.WorkDuration> CREATOR;
}
public class WorkSource implements android.os.Parcelable {
@@ -54419,9 +54423,9 @@ package android.view {
method @Deprecated public android.view.Display getDefaultDisplay();
method @NonNull public default android.view.WindowMetrics getMaximumWindowMetrics();
method public default boolean isCrossWindowBlurEnabled();
- method @FlaggedApi("com.android.window.flags.surface_control_input_receiver") @NonNull public default android.window.InputTransferToken registerBatchedSurfaceControlInputReceiver(int, @NonNull android.window.InputTransferToken, @NonNull android.view.SurfaceControl, @NonNull android.view.Choreographer, @NonNull android.view.SurfaceControlInputReceiver);
+ method @FlaggedApi("com.android.window.flags.surface_control_input_receiver") @NonNull public default android.window.InputTransferToken registerBatchedSurfaceControlInputReceiver(@NonNull android.window.InputTransferToken, @NonNull android.view.SurfaceControl, @NonNull android.view.Choreographer, @NonNull android.view.SurfaceControlInputReceiver);
method @FlaggedApi("com.android.window.flags.trusted_presentation_listener_for_window") public default void registerTrustedPresentationListener(@NonNull android.os.IBinder, @NonNull android.window.TrustedPresentationThresholds, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
- method @FlaggedApi("com.android.window.flags.surface_control_input_receiver") @NonNull public default android.window.InputTransferToken registerUnbatchedSurfaceControlInputReceiver(int, @NonNull android.window.InputTransferToken, @NonNull android.view.SurfaceControl, @NonNull android.os.Looper, @NonNull android.view.SurfaceControlInputReceiver);
+ method @FlaggedApi("com.android.window.flags.surface_control_input_receiver") @NonNull public default android.window.InputTransferToken registerUnbatchedSurfaceControlInputReceiver(@NonNull android.window.InputTransferToken, @NonNull android.view.SurfaceControl, @NonNull android.os.Looper, @NonNull android.view.SurfaceControlInputReceiver);
method public default void removeCrossWindowBlurEnabledListener(@NonNull java.util.function.Consumer<java.lang.Boolean>);
method public default void removeProposedRotationListener(@NonNull java.util.function.IntConsumer);
method @FlaggedApi("com.android.window.flags.screen_recording_callbacks") @RequiresPermission(android.Manifest.permission.DETECT_SCREEN_RECORDING) public default void removeScreenRecordingCallback(@NonNull java.util.function.Consumer<java.lang.Integer>);
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 9039bf169f8b..8ceda62e0e02 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -3778,6 +3778,7 @@ package android.content {
field public static final String BATTERY_STATS_SERVICE = "batterystats";
field public static final int BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS = 1048576; // 0x100000
field @Deprecated public static final int BIND_ALLOW_FOREGROUND_SERVICE_STARTS_FROM_BACKGROUND = 262144; // 0x40000
+ field @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") public static final String BLOCKED_NUMBERS_SERVICE = "blocked_numbers";
field public static final String CLOUDSEARCH_SERVICE = "cloudsearch";
field public static final String CONTENT_SUGGESTIONS_SERVICE = "content_suggestions";
field public static final String CONTEXTHUB_SERVICE = "contexthub";
@@ -7310,6 +7311,7 @@ package android.media {
public final class MediaRouter2 {
method @NonNull public java.util.List<android.media.MediaRoute2Info> getAllRoutes();
method @Nullable public String getClientPackageName();
+ method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MEDIA_CONTENT_CONTROL, android.Manifest.permission.MEDIA_ROUTING_CONTROL}) public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context, @NonNull String);
method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void startScan();
method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void stopScan();
method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void transfer(@NonNull android.media.MediaRouter2.RoutingController, @NonNull android.media.MediaRoute2Info);
@@ -10438,6 +10440,7 @@ package android.nfc.cardemulation {
@FlaggedApi("android.nfc.enable_nfc_mainline") public final class ApduServiceInfo implements android.os.Parcelable {
ctor @FlaggedApi("android.nfc.enable_nfc_mainline") public ApduServiceInfo(@NonNull android.content.pm.PackageManager, @NonNull android.content.pm.ResolveInfo, boolean) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
method @FlaggedApi("android.nfc.nfc_read_polling_loop") public void addPollingLoopFilter(@NonNull String, boolean);
+ method @FlaggedApi("android.nfc.nfc_read_polling_loop") public void addPollingLoopPatternFilter(@NonNull String, boolean);
method @FlaggedApi("android.nfc.enable_nfc_mainline") public int describeContents();
method @FlaggedApi("android.nfc.enable_nfc_mainline") public void dump(@NonNull android.os.ParcelFileDescriptor, @NonNull java.io.PrintWriter, @NonNull String[]);
method @FlaggedApi("android.nfc.enable_nfc_mainline") public void dumpDebug(@NonNull android.util.proto.ProtoOutputStream);
@@ -10449,6 +10452,7 @@ package android.nfc.cardemulation {
method @FlaggedApi("android.nfc.enable_nfc_mainline") @NonNull public android.nfc.cardemulation.AidGroup getDynamicAidGroupForCategory(@NonNull String);
method @FlaggedApi("android.nfc.enable_nfc_mainline") @Nullable public String getOffHostSecureElement();
method @FlaggedApi("android.nfc.nfc_read_polling_loop") @NonNull public java.util.List<java.lang.String> getPollingLoopFilters();
+ method @FlaggedApi("android.nfc.nfc_read_polling_loop") @NonNull public java.util.List<java.util.regex.Pattern> getPollingLoopPatternFilters();
method @FlaggedApi("android.nfc.enable_nfc_mainline") @NonNull public java.util.List<java.lang.String> getPrefixAids();
method @FlaggedApi("android.nfc.enable_nfc_mainline") @NonNull public String getSettingsActivityName();
method @FlaggedApi("android.nfc.nfc_read_polling_loop") public boolean getShouldAutoTransact(@NonNull String);
@@ -10463,6 +10467,7 @@ package android.nfc.cardemulation {
method @FlaggedApi("android.nfc.enable_nfc_mainline") @NonNull public CharSequence loadLabel(@NonNull android.content.pm.PackageManager);
method @FlaggedApi("android.nfc.enable_nfc_mainline") @NonNull public boolean removeDynamicAidGroupForCategory(@NonNull String);
method @FlaggedApi("android.nfc.nfc_read_polling_loop") public void removePollingLoopFilter(@NonNull String);
+ method @FlaggedApi("android.nfc.nfc_read_polling_loop") public void removePollingLoopPatternFilter(@NonNull String);
method @FlaggedApi("android.nfc.enable_nfc_mainline") public boolean requiresScreenOn();
method @FlaggedApi("android.nfc.enable_nfc_mainline") public boolean requiresUnlock();
method @FlaggedApi("android.nfc.enable_nfc_mainline") public void resetOffHostSecureElement();
@@ -11688,25 +11693,25 @@ package android.printservice.recommendation {
package android.provider {
- public static class BlockedNumberContract.BlockedNumbers {
- method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public static void endBlockSuppression(@NonNull android.content.Context);
- method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @NonNull @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public static android.provider.BlockedNumberContract.BlockedNumbers.BlockSuppressionStatus getBlockSuppressionStatus(@NonNull android.content.Context);
- method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public static boolean getBlockedNumberSetting(@NonNull android.content.Context, @NonNull String);
- method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public static void notifyEmergencyContact(@NonNull android.content.Context);
- method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public static void setBlockedNumberSetting(@NonNull android.content.Context, @NonNull String, boolean);
- method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public static boolean shouldShowEmergencyCallNotification(@NonNull android.content.Context);
- method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public static int shouldSystemBlockNumber(@NonNull android.content.Context, @NonNull String, int, boolean);
- field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String ACTION_BLOCK_SUPPRESSION_STATE_CHANGED = "android.provider.action.BLOCK_SUPPRESSION_STATE_CHANGED";
- field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String ENHANCED_SETTING_KEY_BLOCK_PAYPHONE = "block_payphone_calls_setting";
- field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String ENHANCED_SETTING_KEY_BLOCK_PRIVATE = "block_private_number_calls_setting";
- field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String ENHANCED_SETTING_KEY_BLOCK_UNAVAILABLE = "block_unavailable_calls_setting";
- field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String ENHANCED_SETTING_KEY_BLOCK_UNKNOWN = "block_unknown_calls_setting";
- field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED = "block_numbers_not_in_contacts_setting";
- field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String ENHANCED_SETTING_KEY_SHOW_EMERGENCY_CALL_NOTIFICATION = "show_emergency_call_notification";
- }
-
- @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final class BlockedNumberContract.BlockedNumbers.BlockSuppressionStatus {
- ctor public BlockedNumberContract.BlockedNumbers.BlockSuppressionStatus(boolean, long);
+ @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") public final class BlockedNumbersManager {
+ method @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public void endBlockSuppression();
+ method @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") @NonNull @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public android.provider.BlockedNumbersManager.BlockSuppressionStatus getBlockSuppressionStatus();
+ method @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public boolean getBlockedNumberSetting(@NonNull String);
+ method @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public void notifyEmergencyContact();
+ method @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public void setBlockedNumberSetting(@NonNull String, boolean);
+ method @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public boolean shouldShowEmergencyCallNotification();
+ method @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public int shouldSystemBlockNumber(@NonNull String, int, boolean);
+ field @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") public static final String ACTION_BLOCK_SUPPRESSION_STATE_CHANGED = "android.provider.action.BLOCK_SUPPRESSION_STATE_CHANGED";
+ field @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") public static final String ENHANCED_SETTING_KEY_BLOCK_PAYPHONE = "block_payphone_calls_setting";
+ field @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") public static final String ENHANCED_SETTING_KEY_BLOCK_PRIVATE = "block_private_number_calls_setting";
+ field @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") public static final String ENHANCED_SETTING_KEY_BLOCK_UNAVAILABLE = "block_unavailable_calls_setting";
+ field @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") public static final String ENHANCED_SETTING_KEY_BLOCK_UNKNOWN = "block_unknown_calls_setting";
+ field @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") public static final String ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED = "block_numbers_not_in_contacts_setting";
+ field @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") public static final String ENHANCED_SETTING_KEY_SHOW_EMERGENCY_CALL_NOTIFICATION = "show_emergency_call_notification";
+ }
+
+ @FlaggedApi("com.android.server.telecom.flags.telecom_mainline_blocked_numbers_manager") public static final class BlockedNumbersManager.BlockSuppressionStatus {
+ ctor public BlockedNumbersManager.BlockSuppressionStatus(boolean, long);
method public boolean getIsSuppressed();
method public long getUntilTimestampMillis();
}
@@ -12991,15 +12996,15 @@ package android.service.ondeviceintelligence {
@FlaggedApi("android.app.ondeviceintelligence.flags.enable_on_device_intelligence") public abstract class OnDeviceSandboxedInferenceService extends android.app.Service {
ctor public OnDeviceSandboxedInferenceService();
- method public final void fetchFeatureFileInputStreamMap(@NonNull android.app.ondeviceintelligence.Feature, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.util.Map<java.lang.String,java.io.FileInputStream>>);
+ method public final void fetchFeatureFileDescriptorMap(@NonNull android.app.ondeviceintelligence.Feature, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.util.Map<java.lang.String,android.os.ParcelFileDescriptor>>);
method @NonNull public java.util.concurrent.Executor getCallbackExecutor();
+ method public final void getReadOnlyFileDescriptor(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.os.ParcelFileDescriptor>) throws java.io.FileNotFoundException;
method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
method @NonNull public abstract void onProcessRequest(int, @NonNull android.app.ondeviceintelligence.Feature, @NonNull android.os.Bundle, int, @Nullable android.os.CancellationSignal, @Nullable android.app.ondeviceintelligence.ProcessingSignal, @NonNull android.app.ondeviceintelligence.ProcessingCallback);
method @NonNull public abstract void onProcessRequestStreaming(int, @NonNull android.app.ondeviceintelligence.Feature, @NonNull android.os.Bundle, int, @Nullable android.os.CancellationSignal, @Nullable android.app.ondeviceintelligence.ProcessingSignal, @NonNull android.app.ondeviceintelligence.StreamingProcessingCallback);
method @NonNull public abstract void onTokenInfoRequest(int, @NonNull android.app.ondeviceintelligence.Feature, @NonNull android.os.Bundle, @Nullable android.os.CancellationSignal, @NonNull android.os.OutcomeReceiver<android.app.ondeviceintelligence.TokenInfo,android.app.ondeviceintelligence.OnDeviceIntelligenceException>);
method public abstract void onUpdateProcessingState(@NonNull android.os.Bundle, @NonNull android.os.OutcomeReceiver<android.os.PersistableBundle,android.app.ondeviceintelligence.OnDeviceIntelligenceException>);
method public final java.io.FileInputStream openFileInput(@NonNull String) throws java.io.FileNotFoundException;
- method public final void openFileInputAsync(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.io.FileInputStream>) throws java.io.FileNotFoundException;
field public static final String SERVICE_INTERFACE = "android.service.ondeviceintelligence.OnDeviceSandboxedInferenceService";
}
diff --git a/core/java/Android.bp b/core/java/Android.bp
index 4f96206bfd08..db5888ec64b4 100644
--- a/core/java/Android.bp
+++ b/core/java/Android.bp
@@ -135,8 +135,6 @@ filegroup {
srcs: [
"android/os/Temperature.aidl",
"android/os/CoolingDevice.aidl",
- "android/os/IHintManager.aidl",
- "android/os/IHintSession.aidl",
"android/os/IThermalEventListener.aidl",
"android/os/IThermalStatusListener.aidl",
"android/os/IThermalService.aidl",
@@ -145,6 +143,30 @@ filegroup {
],
}
+aidl_interface {
+ name: "android.os.hintmanager_aidl",
+ srcs: [
+ "android/os/IHintManager.aidl",
+ "android/os/IHintSession.aidl",
+ ],
+ unstable: true,
+ backend: {
+ java: {
+ sdk_version: "module_current",
+ enabled: true,
+ },
+ cpp: {
+ enabled: false,
+ },
+ ndk: {
+ enabled: true,
+ },
+ },
+ imports: [
+ "android.hardware.power-V5",
+ ],
+}
+
aidl_library {
name: "ILogcatManagerService_aidl",
srcs: ["android/os/logcat/ILogcatManagerService.aidl"],
diff --git a/core/java/android/accessibilityservice/OWNERS b/core/java/android/accessibilityservice/OWNERS
index fb06e236dd8a..1265dfa2c441 100644
--- a/core/java/android/accessibilityservice/OWNERS
+++ b/core/java/android/accessibilityservice/OWNERS
@@ -1,6 +1,4 @@
-pweaver@google.com
-ryanlwlin@google.com
-danielnorman@google.com
-sallyyuen@google.com
-aarmaly@google.com
-fuego@google.com
+# Bug component: 44215
+
+# Android Accessibility Framework owners
+include /services/accessibility/OWNERS \ No newline at end of file
diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java
index 66269a52f0c7..1cbec3126aac 100644
--- a/core/java/android/app/SystemServiceRegistry.java
+++ b/core/java/android/app/SystemServiceRegistry.java
@@ -216,6 +216,7 @@ import android.permission.PermissionManager;
import android.print.IPrintManager;
import android.print.PrintManager;
import android.provider.E2eeContactKeysManager;
+import android.provider.ProviderFrameworkInitializer;
import android.safetycenter.SafetyCenterFrameworkInitializer;
import android.scheduling.SchedulingFrameworkInitializer;
import android.security.FileIntegrityManager;
@@ -1687,6 +1688,9 @@ public final class SystemServiceRegistry {
OnDevicePersonalizationFrameworkInitializer.registerServiceWrappers();
DeviceLockFrameworkInitializer.registerServiceWrappers();
VirtualizationFrameworkInitializer.registerServiceWrappers();
+ if (com.android.server.telecom.flags.Flags.telecomMainlineBlockedNumbersManager()) {
+ ProviderFrameworkInitializer.registerServiceWrappers();
+ }
// This code is executed on zygote during preload, where only read-only
// flags can be used. Do not use mutable flags.
if (android.permission.flags.Flags.enhancedConfirmationModeApisEnabled()) {
diff --git a/core/java/android/companion/AssociationInfo.java b/core/java/android/companion/AssociationInfo.java
index 843158c0e9fb..b4b96e2c69d6 100644
--- a/core/java/android/companion/AssociationInfo.java
+++ b/core/java/android/companion/AssociationInfo.java
@@ -252,6 +252,14 @@ public final class AssociationInfo implements Parcelable {
}
/**
+ * @return true if the association is not revoked nor pending
+ * @hide
+ */
+ public boolean isActive() {
+ return !mRevoked && !mPending;
+ }
+
+ /**
* @return the last time self reported disconnected for selfManaged only.
* @hide
*/
diff --git a/core/java/android/companion/CompanionDeviceManager.java b/core/java/android/companion/CompanionDeviceManager.java
index 91baa4ea1eeb..5e00b7a798d8 100644
--- a/core/java/android/companion/CompanionDeviceManager.java
+++ b/core/java/android/companion/CompanionDeviceManager.java
@@ -720,12 +720,14 @@ public final class CompanionDeviceManager {
return;
}
try {
- IntentSender intentSender = mService
- .requestNotificationAccess(component, mContext.getUserId())
- .getIntentSender();
- if (intentSender == null) {
+ PendingIntent pendingIntent = mService.requestNotificationAccess(
+ component, mContext.getUserId());
+
+ if (pendingIntent == null) {
return;
}
+ IntentSender intentSender = pendingIntent.getIntentSender();
+
mContext.startIntentSender(intentSender, null, 0, 0, 0,
ActivityOptions.makeBasic().setPendingIntentBackgroundActivityStartMode(
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED).toBundle());
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 1653bf538435..89300e3a15f1 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -6608,6 +6608,19 @@ public abstract class Context {
public static final String WEBVIEW_UPDATE_SERVICE = "webviewupdate";
/**
+ * Use with {@link #getSystemService(String)} to retrieve a
+ * {@link android.provider.BlockedNumbersManager} for accessing the blocked number service.
+ *
+ * @see #getSystemService(String)
+ * @see android.provider.BlockedNumbersManager
+ * @hide
+ */
+ @FlaggedApi(
+ com.android.server.telecom.flags.Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ @SystemApi
+ public static final String BLOCKED_NUMBERS_SERVICE = "blocked_numbers";
+
+ /**
* Determine whether the given permission is allowed for a particular
* process and user ID running in the system.
*
diff --git a/core/java/android/os/IHintSession.aidl b/core/java/android/os/IHintSession.aidl
index fe85da26e610..6fd4f3c7c01a 100644
--- a/core/java/android/os/IHintSession.aidl
+++ b/core/java/android/os/IHintSession.aidl
@@ -17,7 +17,7 @@
package android.os;
-import android.os.WorkDuration;
+import android.hardware.power.WorkDuration;
/** {@hide} */
oneway interface IHintSession {
diff --git a/core/java/android/os/WorkDuration.java b/core/java/android/os/WorkDuration.java
index 5a54e90372fc..3627502ed2d9 100644
--- a/core/java/android/os/WorkDuration.java
+++ b/core/java/android/os/WorkDuration.java
@@ -17,7 +17,6 @@
package android.os;
import android.annotation.FlaggedApi;
-import android.annotation.NonNull;
import java.util.Objects;
@@ -29,24 +28,11 @@ import java.util.Objects;
* All timings should be in {@link SystemClock#uptimeNanos()} and measured in wall time.
*/
@FlaggedApi(Flags.FLAG_ADPF_GPU_REPORT_ACTUAL_WORK_DURATION)
-public final class WorkDuration implements Parcelable {
- long mWorkPeriodStartTimestampNanos = 0;
+public final class WorkDuration {
long mActualTotalDurationNanos = 0;
+ long mWorkPeriodStartTimestampNanos = 0;
long mActualCpuDurationNanos = 0;
long mActualGpuDurationNanos = 0;
- long mTimestampNanos = 0;
-
- public static final @NonNull Creator<WorkDuration> CREATOR = new Creator<>() {
- @Override
- public WorkDuration createFromParcel(Parcel in) {
- return new WorkDuration(in);
- }
-
- @Override
- public WorkDuration[] newArray(int size) {
- return new WorkDuration[size];
- }
- };
public WorkDuration() {}
@@ -58,47 +44,37 @@ public final class WorkDuration implements Parcelable {
public WorkDuration(long workPeriodStartTimestampNanos,
long actualTotalDurationNanos,
long actualCpuDurationNanos,
- long actualGpuDurationNanos,
- long timestampNanos) {
- mWorkPeriodStartTimestampNanos = workPeriodStartTimestampNanos;
+ long actualGpuDurationNanos) {
mActualTotalDurationNanos = actualTotalDurationNanos;
+ mWorkPeriodStartTimestampNanos = workPeriodStartTimestampNanos;
mActualCpuDurationNanos = actualCpuDurationNanos;
mActualGpuDurationNanos = actualGpuDurationNanos;
- mTimestampNanos = timestampNanos;
- }
-
- WorkDuration(@NonNull Parcel in) {
- mWorkPeriodStartTimestampNanos = in.readLong();
- mActualTotalDurationNanos = in.readLong();
- mActualCpuDurationNanos = in.readLong();
- mActualGpuDurationNanos = in.readLong();
- mTimestampNanos = in.readLong();
}
/**
- * Sets the work period start timestamp in nanoseconds.
+ * Sets the actual total duration in nanoseconds.
*
* All timings should be in {@link SystemClock#uptimeNanos()}.
*/
- public void setWorkPeriodStartTimestampNanos(long workPeriodStartTimestampNanos) {
- if (workPeriodStartTimestampNanos <= 0) {
+ public void setActualTotalDurationNanos(long actualTotalDurationNanos) {
+ if (actualTotalDurationNanos <= 0) {
throw new IllegalArgumentException(
- "the work period start timestamp should be greater than zero.");
+ "the actual total duration should be greater than zero.");
}
- mWorkPeriodStartTimestampNanos = workPeriodStartTimestampNanos;
+ mActualTotalDurationNanos = actualTotalDurationNanos;
}
/**
- * Sets the actual total duration in nanoseconds.
+ * Sets the work period start timestamp in nanoseconds.
*
* All timings should be in {@link SystemClock#uptimeNanos()}.
*/
- public void setActualTotalDurationNanos(long actualTotalDurationNanos) {
- if (actualTotalDurationNanos <= 0) {
+ public void setWorkPeriodStartTimestampNanos(long workPeriodStartTimestampNanos) {
+ if (workPeriodStartTimestampNanos <= 0) {
throw new IllegalArgumentException(
- "the actual total duration should be greater than zero.");
+ "the work period start timestamp should be greater than zero.");
}
- mActualTotalDurationNanos = actualTotalDurationNanos;
+ mWorkPeriodStartTimestampNanos = workPeriodStartTimestampNanos;
}
/**
@@ -128,21 +104,21 @@ public final class WorkDuration implements Parcelable {
}
/**
- * Returns the work period start timestamp based in nanoseconds.
+ * Returns the actual total duration in nanoseconds.
*
* All timings should be in {@link SystemClock#uptimeNanos()}.
*/
- public long getWorkPeriodStartTimestampNanos() {
- return mWorkPeriodStartTimestampNanos;
+ public long getActualTotalDurationNanos() {
+ return mActualTotalDurationNanos;
}
/**
- * Returns the actual total duration in nanoseconds.
+ * Returns the work period start timestamp based in nanoseconds.
*
* All timings should be in {@link SystemClock#uptimeNanos()}.
*/
- public long getActualTotalDurationNanos() {
- return mActualTotalDurationNanos;
+ public long getWorkPeriodStartTimestampNanos() {
+ return mWorkPeriodStartTimestampNanos;
}
/**
@@ -163,27 +139,6 @@ public final class WorkDuration implements Parcelable {
return mActualGpuDurationNanos;
}
- /**
- * @hide
- */
- public long getTimestampNanos() {
- return mTimestampNanos;
- }
-
- @Override
- public void writeToParcel(@NonNull Parcel dest, int flags) {
- dest.writeLong(mWorkPeriodStartTimestampNanos);
- dest.writeLong(mActualTotalDurationNanos);
- dest.writeLong(mActualCpuDurationNanos);
- dest.writeLong(mActualGpuDurationNanos);
- dest.writeLong(mTimestampNanos);
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
@Override
public boolean equals(Object obj) {
if (obj == this) {
@@ -193,9 +148,8 @@ public final class WorkDuration implements Parcelable {
return false;
}
WorkDuration workDuration = (WorkDuration) obj;
- return workDuration.mTimestampNanos == this.mTimestampNanos
+ return workDuration.mActualTotalDurationNanos == this.mActualTotalDurationNanos
&& workDuration.mWorkPeriodStartTimestampNanos == this.mWorkPeriodStartTimestampNanos
- && workDuration.mActualTotalDurationNanos == this.mActualTotalDurationNanos
&& workDuration.mActualCpuDurationNanos == this.mActualCpuDurationNanos
&& workDuration.mActualGpuDurationNanos == this.mActualGpuDurationNanos;
}
@@ -203,6 +157,6 @@ public final class WorkDuration implements Parcelable {
@Override
public int hashCode() {
return Objects.hash(mWorkPeriodStartTimestampNanos, mActualTotalDurationNanos,
- mActualCpuDurationNanos, mActualGpuDurationNanos, mTimestampNanos);
+ mActualCpuDurationNanos, mActualGpuDurationNanos);
}
}
diff --git a/core/java/android/permission/flags.aconfig b/core/java/android/permission/flags.aconfig
index dc782d4e1e9b..999bc99b6915 100644
--- a/core/java/android/permission/flags.aconfig
+++ b/core/java/android/permission/flags.aconfig
@@ -121,17 +121,6 @@ flag {
}
flag {
- name: "new_permission_gid_enabled"
- is_fixed_read_only: true
- namespace: "permissions"
- description: "Enable new permission GID implementation"
- bug: "325137277"
- metadata {
- purpose: PURPOSE_BUGFIX
- }
-}
-
-flag {
name: "ignore_process_text"
namespace: "permissions"
description: "Ignore activities that handle PROCESS_TEXT in TextView"
diff --git a/core/java/android/provider/BlockedNumberContract.java b/core/java/android/provider/BlockedNumberContract.java
index 4075e9009acd..49c10de21fed 100644
--- a/core/java/android/provider/BlockedNumberContract.java
+++ b/core/java/android/provider/BlockedNumberContract.java
@@ -15,20 +15,12 @@
*/
package android.provider;
-import android.Manifest;
-import android.annotation.FlaggedApi;
import android.annotation.IntDef;
-import android.annotation.NonNull;
-import android.annotation.RequiresPermission;
-import android.annotation.SystemApi;
import android.annotation.WorkerThread;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.telecom.Log;
-import android.telecom.TelecomManager;
-
-import com.android.server.telecom.flags.Flags;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -222,333 +214,6 @@ public class BlockedNumberContract {
* <p>TYPE: String</p>
*/
public static final String COLUMN_E164_NUMBER = "e164_number";
-
- /**
- * A protected broadcast intent action for letting components with
- * {@link android.Manifest.permission#READ_BLOCKED_NUMBERS} know that the block suppression
- * status as returned by {@link #getBlockSuppressionStatus(Context)} has been updated.
- * @hide
- */
- @SystemApi
- @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
- public static final String ACTION_BLOCK_SUPPRESSION_STATE_CHANGED =
- "android.provider.action.BLOCK_SUPPRESSION_STATE_CHANGED";
-
- /**
- * Preference key of block numbers not in contacts setting.
- * @hide
- */
- @SystemApi
- @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
- public static final String ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED =
- "block_numbers_not_in_contacts_setting";
-
- /**
- * Preference key of block private number calls setting.
- * @hide
- */
- @SystemApi
- @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
- public static final String ENHANCED_SETTING_KEY_BLOCK_PRIVATE =
- "block_private_number_calls_setting";
-
- /**
- * Preference key of block payphone calls setting.
- * @hide
- */
- @SystemApi
- @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
- public static final String ENHANCED_SETTING_KEY_BLOCK_PAYPHONE =
- "block_payphone_calls_setting";
-
- /**
- * Preference key of block unknown calls setting.
- * @hide
- */
- @SystemApi
- @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
- public static final String ENHANCED_SETTING_KEY_BLOCK_UNKNOWN =
- "block_unknown_calls_setting";
-
- /**
- * Preference key for whether should show an emergency call notification.
- * @hide
- */
- @SystemApi
- @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
- public static final String ENHANCED_SETTING_KEY_SHOW_EMERGENCY_CALL_NOTIFICATION =
- "show_emergency_call_notification";
-
- /**
- * Preference key of block unavailable calls setting.
- * @hide
- */
- @SystemApi
- @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
- public static final String ENHANCED_SETTING_KEY_BLOCK_UNAVAILABLE =
- "block_unavailable_calls_setting";
-
- /**
- * Notifies the provider that emergency services were contacted by the user.
- * <p> This results in {@link #shouldSystemBlockNumber} returning {@code false} independent
- * of the contents of the provider for a duration defined by
- * {@link android.telephony.CarrierConfigManager#KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT}
- * the provider unless {@link #endBlockSuppression(Context)} is called.
- * @hide
- */
- @SystemApi
- @RequiresPermission(allOf = {
- android.Manifest.permission.READ_BLOCKED_NUMBERS,
- android.Manifest.permission.WRITE_BLOCKED_NUMBERS
- })
- @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
- public static void notifyEmergencyContact(@NonNull Context context) {
- verifyBlockedNumbersPermission(context);
- try {
- Log.i(LOG_TAG, "notifyEmergencyContact; caller=%s", context.getOpPackageName());
- context.getContentResolver().call(
- AUTHORITY_URI, SystemContract.METHOD_NOTIFY_EMERGENCY_CONTACT, null, null);
- } catch (NullPointerException | IllegalArgumentException ex) {
- // The content resolver can throw an NPE or IAE; we don't want to crash Telecom if
- // either of these happen.
- Log.w(null, "notifyEmergencyContact: provider not ready.");
- }
- }
-
- /**
- * Notifies the provider to disable suppressing blocking. If emergency services were not
- * contacted recently at all, calling this method is a no-op.
- * @hide
- */
- @SystemApi
- @RequiresPermission(allOf = {
- android.Manifest.permission.READ_BLOCKED_NUMBERS,
- android.Manifest.permission.WRITE_BLOCKED_NUMBERS
- })
- @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
- public static void endBlockSuppression(@NonNull Context context) {
- verifyBlockedNumbersPermission(context);
- String caller = context.getOpPackageName();
- Log.i(LOG_TAG, "endBlockSuppression: caller=%s", caller);
- context.getContentResolver().call(
- AUTHORITY_URI, SystemContract.METHOD_END_BLOCK_SUPPRESSION, null, null);
- }
-
- /**
- * Returns {@code true} if {@code phoneNumber} is blocked taking
- * {@link #notifyEmergencyContact(Context)} into consideration. If emergency services
- * have not been contacted recently and enhanced call blocking not been enabled, this
- * method is equivalent to {@link #isBlocked(Context, String)}.
- *
- * @param context the context of the caller.
- * @param phoneNumber the number to check.
- * @param numberPresentation the presentation code associated with the call.
- * @param isNumberInContacts indicates if the provided number exists as a contact.
- * @return result code indicating if the number should be blocked, and if so why.
- * Valid values are: {@link #STATUS_NOT_BLOCKED}, {@link #STATUS_BLOCKED_IN_LIST},
- * {@link #STATUS_BLOCKED_NOT_IN_CONTACTS}, {@link #STATUS_BLOCKED_PAYPHONE},
- * {@link #STATUS_BLOCKED_RESTRICTED}, {@link #STATUS_BLOCKED_UNKNOWN_NUMBER}.
- * @hide
- */
- @SystemApi
- @RequiresPermission(allOf = {
- android.Manifest.permission.READ_BLOCKED_NUMBERS,
- android.Manifest.permission.WRITE_BLOCKED_NUMBERS
- })
- @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
- public static int shouldSystemBlockNumber(@NonNull Context context,
- @NonNull String phoneNumber, @TelecomManager.Presentation int numberPresentation,
- boolean isNumberInContacts) {
- verifyBlockedNumbersPermission(context);
- try {
- String caller = context.getOpPackageName();
- Bundle extras = new Bundle();
- extras.putInt(BlockedNumberContract.EXTRA_CALL_PRESENTATION, numberPresentation);
- extras.putBoolean(BlockedNumberContract.EXTRA_CONTACT_EXIST, isNumberInContacts);
- final Bundle res = context.getContentResolver().call(AUTHORITY_URI,
- SystemContract.METHOD_SHOULD_SYSTEM_BLOCK_NUMBER, phoneNumber, extras);
- int blockResult = res != null ? res.getInt(RES_BLOCK_STATUS, STATUS_NOT_BLOCKED) :
- BlockedNumberContract.STATUS_NOT_BLOCKED;
- Log.d(LOG_TAG, "shouldSystemBlockNumber: number=%s, caller=%s, result=%s",
- Log.piiHandle(phoneNumber), caller,
- SystemContract.blockStatusToString(blockResult));
- return blockResult;
- } catch (NullPointerException | IllegalArgumentException ex) {
- // The content resolver can throw an NPE or IAE; we don't want to crash Telecom if
- // either of these happen.
- Log.w(null, "shouldSystemBlockNumber: provider not ready.");
- return BlockedNumberContract.STATUS_NOT_BLOCKED;
- }
- }
-
- /**
- * Returns the current status of block suppression.
- * @hide
- */
- @SystemApi
- @RequiresPermission(allOf = {
- android.Manifest.permission.READ_BLOCKED_NUMBERS,
- android.Manifest.permission.WRITE_BLOCKED_NUMBERS
- })
- @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
- public static @NonNull BlockSuppressionStatus getBlockSuppressionStatus(
- @NonNull Context context) {
- verifyBlockedNumbersPermission(context);
- final Bundle res = context.getContentResolver().call(
- AUTHORITY_URI, SystemContract.METHOD_GET_BLOCK_SUPPRESSION_STATUS, null, null);
- BlockSuppressionStatus blockSuppressionStatus = new BlockSuppressionStatus(
- res.getBoolean(SystemContract.RES_IS_BLOCKING_SUPPRESSED, false),
- res.getLong(SystemContract.RES_BLOCKING_SUPPRESSED_UNTIL_TIMESTAMP, 0));
- Log.d(LOG_TAG, "getBlockSuppressionStatus: caller=%s, status=%s",
- context.getOpPackageName(), blockSuppressionStatus);
- return blockSuppressionStatus;
- }
-
- /**
- * Check whether should show the emergency call notification.
- *
- * @param context the context of the caller.
- * @return {@code true} if should show emergency call notification. {@code false} otherwise.
- * @hide
- */
- @SystemApi
- @RequiresPermission(allOf = {
- android.Manifest.permission.READ_BLOCKED_NUMBERS,
- android.Manifest.permission.WRITE_BLOCKED_NUMBERS
- })
- @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
- public static boolean shouldShowEmergencyCallNotification(@NonNull Context context) {
- verifyBlockedNumbersPermission(context);
- try {
- final Bundle res = context.getContentResolver().call(AUTHORITY_URI,
- SystemContract.METHOD_SHOULD_SHOW_EMERGENCY_CALL_NOTIFICATION, null, null);
- return res != null && res.getBoolean(RES_SHOW_EMERGENCY_CALL_NOTIFICATION, false);
- } catch (NullPointerException | IllegalArgumentException ex) {
- // The content resolver can throw an NPE or IAE; we don't want to crash Telecom if
- // either of these happen.
- Log.w(null, "shouldShowEmergencyCallNotification: provider not ready.");
- return false;
- }
- }
-
- /**
- * Check whether the enhanced block setting is enabled.
- *
- * @param context the context of the caller.
- * @param key the key of the setting to check, can be
- * {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED}
- * {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_PRIVATE}
- * {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_PAYPHONE}
- * {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNKNOWN}
- * {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNAVAILABLE}
- * {@link SystemContract#ENHANCED_SETTING_KEY_SHOW_EMERGENCY_CALL_NOTIFICATION}
- * @return {@code true} if the setting is enabled. {@code false} otherwise.
- * @hide
- */
- @SystemApi
- @RequiresPermission(allOf = {
- android.Manifest.permission.READ_BLOCKED_NUMBERS,
- android.Manifest.permission.WRITE_BLOCKED_NUMBERS
- })
- @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
- public static boolean getBlockedNumberSetting(
- @NonNull Context context, @NonNull String key) {
- verifyBlockedNumbersPermission(context);
- Bundle extras = new Bundle();
- extras.putString(EXTRA_ENHANCED_SETTING_KEY, key);
- try {
- final Bundle res = context.getContentResolver().call(AUTHORITY_URI,
- SystemContract.METHOD_GET_ENHANCED_BLOCK_SETTING, null, extras);
- return res != null && res.getBoolean(RES_ENHANCED_SETTING_IS_ENABLED, false);
- } catch (NullPointerException | IllegalArgumentException ex) {
- // The content resolver can throw an NPE or IAE; we don't want to crash Telecom if
- // either of these happen.
- Log.w(null, "getEnhancedBlockSetting: provider not ready.");
- return false;
- }
- }
-
- /**
- * Set the enhanced block setting enabled status.
- *
- * @param context the context of the caller.
- * @param key the key of the setting to set, can be
- * {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED}
- * {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_PRIVATE}
- * {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_PAYPHONE}
- * {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNKNOWN}
- * {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNAVAILABLE}
- * {@link SystemContract#ENHANCED_SETTING_KEY_SHOW_EMERGENCY_CALL_NOTIFICATION}
- * @param value the enabled statue of the setting to set.
- * @hide
- */
- @SystemApi
- @RequiresPermission(allOf = {
- android.Manifest.permission.READ_BLOCKED_NUMBERS,
- android.Manifest.permission.WRITE_BLOCKED_NUMBERS
- })
- @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
- public static void setBlockedNumberSetting(@NonNull Context context,
- @NonNull String key, boolean value) {
- verifyBlockedNumbersPermission(context);
- Bundle extras = new Bundle();
- extras.putString(EXTRA_ENHANCED_SETTING_KEY, key);
- extras.putBoolean(EXTRA_ENHANCED_SETTING_VALUE, value);
- context.getContentResolver().call(AUTHORITY_URI,
- SystemContract.METHOD_SET_ENHANCED_BLOCK_SETTING, null, extras);
- }
-
- /**
- * Represents the current status of
- * {@link #shouldSystemBlockNumber(Context, String, int, boolean)}. If emergency services
- * have been contacted recently, {@link #mIsSuppressed} is {@code true}, and blocking
- * is disabled until the timestamp {@link #mUntilTimestampMillis}.
- * @hide
- */
- @SystemApi
- @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
- public static final class BlockSuppressionStatus {
- private boolean mIsSuppressed;
-
- /**
- * Timestamp in milliseconds from epoch.
- */
- private long mUntilTimestampMillis;
-
- public BlockSuppressionStatus(boolean isSuppressed, long untilTimestampMillis) {
- this.mIsSuppressed = isSuppressed;
- this.mUntilTimestampMillis = untilTimestampMillis;
- }
-
- @Override
- public String toString() {
- return "[BlockSuppressionStatus; isSuppressed=" + mIsSuppressed + ", until="
- + mUntilTimestampMillis + "]";
- }
-
- public boolean getIsSuppressed() {
- return mIsSuppressed;
- }
-
- public long getUntilTimestampMillis() {
- return mUntilTimestampMillis;
- }
- }
-
- /**
- * Verifies that the caller holds both the
- * {@link android.Manifest.permission#READ_BLOCKED_NUMBERS} permission and the
- * {@link android.Manifest.permission#WRITE_BLOCKED_NUMBERS} permission.
- *
- * @param context
- * @throws SecurityException if the caller is missing the necessary permissions
- */
- private static void verifyBlockedNumbersPermission(Context context) {
- context.enforceCallingOrSelfPermission(Manifest.permission.READ_BLOCKED_NUMBERS,
- "Caller does not have the android.permission.READ_BLOCKED_NUMBERS permission");
- context.enforceCallingOrSelfPermission(Manifest.permission.WRITE_BLOCKED_NUMBERS,
- "Caller does not have the android.permission.WRITE_BLOCKED_NUMBERS permission");
- }
}
/** @hide */
diff --git a/core/java/android/provider/BlockedNumbersManager.java b/core/java/android/provider/BlockedNumbersManager.java
new file mode 100644
index 000000000000..aee396dec5bc
--- /dev/null
+++ b/core/java/android/provider/BlockedNumbersManager.java
@@ -0,0 +1,400 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.provider;
+
+import static android.provider.BlockedNumberContract.AUTHORITY_URI;
+import static android.provider.BlockedNumberContract.EXTRA_ENHANCED_SETTING_KEY;
+import static android.provider.BlockedNumberContract.EXTRA_ENHANCED_SETTING_VALUE;
+import static android.provider.BlockedNumberContract.RES_BLOCK_STATUS;
+import static android.provider.BlockedNumberContract.RES_ENHANCED_SETTING_IS_ENABLED;
+import static android.provider.BlockedNumberContract.RES_SHOW_EMERGENCY_CALL_NOTIFICATION;
+import static android.provider.BlockedNumberContract.STATUS_NOT_BLOCKED;
+import static android.provider.BlockedNumberContract.SystemContract.METHOD_END_BLOCK_SUPPRESSION;
+import static android.provider.BlockedNumberContract.SystemContract.METHOD_GET_BLOCK_SUPPRESSION_STATUS;
+import static android.provider.BlockedNumberContract.SystemContract.METHOD_GET_ENHANCED_BLOCK_SETTING;
+import static android.provider.BlockedNumberContract.SystemContract.METHOD_NOTIFY_EMERGENCY_CONTACT;
+import static android.provider.BlockedNumberContract.SystemContract.METHOD_SET_ENHANCED_BLOCK_SETTING;
+import static android.provider.BlockedNumberContract.SystemContract.METHOD_SHOULD_SHOW_EMERGENCY_CALL_NOTIFICATION;
+import static android.provider.BlockedNumberContract.SystemContract.METHOD_SHOULD_SYSTEM_BLOCK_NUMBER;
+import static android.provider.BlockedNumberContract.SystemContract.RES_BLOCKING_SUPPRESSED_UNTIL_TIMESTAMP;
+import static android.provider.BlockedNumberContract.SystemContract.RES_IS_BLOCKING_SUPPRESSED;
+
+import android.Manifest;
+import android.annotation.FlaggedApi;
+import android.annotation.NonNull;
+import android.annotation.RequiresPermission;
+import android.annotation.SystemApi;
+import android.content.Context;
+import android.os.Bundle;
+import android.telecom.Log;
+import android.telecom.TelecomManager;
+
+import com.android.server.telecom.flags.Flags;
+
+/**
+ * Constants and methods to interact with the blocked numbers list. This class also serves as
+ * a mediator between the BlockedNumber provider and the system: it manages blocking behavior
+ * when the user contacts emergency services. Currently, this is only used internally by Telecom.
+ *
+ * Refer to {@link BlockedNumberContract} for more context.
+ * @hide
+ */
+@SystemApi
+@FlaggedApi(Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+public final class BlockedNumbersManager {
+ private static final String LOG_TAG = BlockedNumbersManager.class.getSimpleName();
+ private Context mContext;
+
+ /**
+ * @hide
+ */
+ public BlockedNumbersManager(Context context) {
+ mContext = context;
+ }
+
+ /**
+ * A protected broadcast intent action for letting components with
+ * {@link android.Manifest.permission#READ_BLOCKED_NUMBERS} know that the block suppression
+ * status as returned by {@link #getBlockSuppressionStatus()} has been updated.
+ * @hide
+ */
+ @SystemApi
+ @FlaggedApi(Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ public static final String ACTION_BLOCK_SUPPRESSION_STATE_CHANGED =
+ "android.provider.action.BLOCK_SUPPRESSION_STATE_CHANGED";
+
+ /**
+ * Preference key of block numbers not in contacts setting.
+ * @hide
+ */
+ @SystemApi
+ @FlaggedApi(Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ public static final String ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED =
+ "block_numbers_not_in_contacts_setting";
+
+ /**
+ * Preference key of block private number calls setting.
+ * @hide
+ */
+ @SystemApi
+ @FlaggedApi(Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ public static final String ENHANCED_SETTING_KEY_BLOCK_PRIVATE =
+ "block_private_number_calls_setting";
+
+ /**
+ * Preference key of block payphone calls setting.
+ * @hide
+ */
+ @SystemApi
+ @FlaggedApi(Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ public static final String ENHANCED_SETTING_KEY_BLOCK_PAYPHONE =
+ "block_payphone_calls_setting";
+
+ /**
+ * Preference key of block unknown calls setting.
+ * @hide
+ */
+ @SystemApi
+ @FlaggedApi(Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ public static final String ENHANCED_SETTING_KEY_BLOCK_UNKNOWN =
+ "block_unknown_calls_setting";
+
+ /**
+ * Preference key for whether should show an emergency call notification.
+ * @hide
+ */
+ @SystemApi
+ @FlaggedApi(Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ public static final String ENHANCED_SETTING_KEY_SHOW_EMERGENCY_CALL_NOTIFICATION =
+ "show_emergency_call_notification";
+
+ /**
+ * Preference key of block unavailable calls setting.
+ * @hide
+ */
+ @SystemApi
+ @FlaggedApi(Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ public static final String ENHANCED_SETTING_KEY_BLOCK_UNAVAILABLE =
+ "block_unavailable_calls_setting";
+
+ /**
+ * Notifies the provider that emergency services were contacted by the user.
+ * <p> This results in {@link #shouldSystemBlockNumber} returning {@code false} independent
+ * of the contents of the provider for a duration defined by
+ * {@link android.telephony.CarrierConfigManager#KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT}
+ * the provider unless {@link #endBlockSuppression()} is called.
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(allOf = {
+ android.Manifest.permission.READ_BLOCKED_NUMBERS,
+ android.Manifest.permission.WRITE_BLOCKED_NUMBERS
+ })
+ @FlaggedApi(Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ public void notifyEmergencyContact() {
+ verifyBlockedNumbersPermission();
+ try {
+ Log.i(LOG_TAG, "notifyEmergencyContact; caller=%s", mContext.getOpPackageName());
+ mContext.getContentResolver().call(AUTHORITY_URI, METHOD_NOTIFY_EMERGENCY_CONTACT,
+ null, null);
+ } catch (NullPointerException | IllegalArgumentException ex) {
+ // The content resolver can throw an NPE or IAE; we don't want to crash Telecom if
+ // either of these happen.
+ Log.w(null, "notifyEmergencyContact: provider not ready.");
+ }
+ }
+
+ /**
+ * Notifies the provider to disable suppressing blocking. If emergency services were not
+ * contacted recently at all, calling this method is a no-op.
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(allOf = {
+ android.Manifest.permission.READ_BLOCKED_NUMBERS,
+ android.Manifest.permission.WRITE_BLOCKED_NUMBERS
+ })
+ @FlaggedApi(Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ public void endBlockSuppression() {
+ verifyBlockedNumbersPermission();
+ String caller = mContext.getOpPackageName();
+ Log.i(LOG_TAG, "endBlockSuppression: caller=%s", caller);
+ mContext.getContentResolver().call(AUTHORITY_URI, METHOD_END_BLOCK_SUPPRESSION, null, null);
+ }
+
+ /**
+ * Returns {@code true} if {@code phoneNumber} is blocked taking
+ * {@link #notifyEmergencyContact()} into consideration. If emergency services
+ * have not been contacted recently and enhanced call blocking not been enabled, this
+ * method is equivalent to {@link BlockedNumberContract#isBlocked(Context, String)}.
+ *
+ * @param phoneNumber the number to check.
+ * @param numberPresentation the presentation code associated with the call.
+ * @param isNumberInContacts indicates if the provided number exists as a contact.
+ * @return result code indicating if the number should be blocked, and if so why.
+ * Valid values are: {@link BlockedNumberContract#STATUS_NOT_BLOCKED},
+ * {@link BlockedNumberContract#STATUS_BLOCKED_IN_LIST},
+ * {@link BlockedNumberContract#STATUS_BLOCKED_NOT_IN_CONTACTS},
+ * {@link BlockedNumberContract#STATUS_BLOCKED_PAYPHONE},
+ * {@link BlockedNumberContract#STATUS_BLOCKED_RESTRICTED},
+ * {@link BlockedNumberContract#STATUS_BLOCKED_UNKNOWN_NUMBER}.
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(allOf = {
+ android.Manifest.permission.READ_BLOCKED_NUMBERS,
+ android.Manifest.permission.WRITE_BLOCKED_NUMBERS
+ })
+ @FlaggedApi(Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ public int shouldSystemBlockNumber(@NonNull String phoneNumber,
+ @TelecomManager.Presentation int numberPresentation, boolean isNumberInContacts) {
+ verifyBlockedNumbersPermission();
+ try {
+ String caller = mContext.getOpPackageName();
+ Bundle extras = new Bundle();
+ extras.putInt(BlockedNumberContract.EXTRA_CALL_PRESENTATION, numberPresentation);
+ extras.putBoolean(BlockedNumberContract.EXTRA_CONTACT_EXIST, isNumberInContacts);
+ final Bundle res = mContext.getContentResolver().call(AUTHORITY_URI,
+ METHOD_SHOULD_SYSTEM_BLOCK_NUMBER, phoneNumber, extras);
+ int blockResult = res != null ? res.getInt(RES_BLOCK_STATUS, STATUS_NOT_BLOCKED) :
+ BlockedNumberContract.STATUS_NOT_BLOCKED;
+ Log.d(LOG_TAG, "shouldSystemBlockNumber: number=%s, caller=%s, result=%s",
+ Log.piiHandle(phoneNumber), caller,
+ BlockedNumberContract.SystemContract.blockStatusToString(blockResult));
+ return blockResult;
+ } catch (NullPointerException | IllegalArgumentException ex) {
+ // The content resolver can throw an NPE or IAE; we don't want to crash Telecom if
+ // either of these happen.
+ Log.w(null, "shouldSystemBlockNumber: provider not ready.");
+ return BlockedNumberContract.STATUS_NOT_BLOCKED;
+ }
+ }
+
+ /**
+ * @return The current status of block suppression.
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(allOf = {
+ android.Manifest.permission.READ_BLOCKED_NUMBERS,
+ android.Manifest.permission.WRITE_BLOCKED_NUMBERS
+ })
+ @FlaggedApi(Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ public @NonNull BlockSuppressionStatus getBlockSuppressionStatus() {
+ verifyBlockedNumbersPermission();
+ final Bundle res = mContext.getContentResolver().call(
+ AUTHORITY_URI, METHOD_GET_BLOCK_SUPPRESSION_STATUS, null, null);
+ BlockSuppressionStatus blockSuppressionStatus = new BlockSuppressionStatus(
+ res.getBoolean(RES_IS_BLOCKING_SUPPRESSED, false),
+ res.getLong(RES_BLOCKING_SUPPRESSED_UNTIL_TIMESTAMP, 0));
+ Log.d(LOG_TAG, "getBlockSuppressionStatus: caller=%s, status=%s",
+ mContext.getOpPackageName(), blockSuppressionStatus);
+ return blockSuppressionStatus;
+ }
+
+ /**
+ * Check whether should show the emergency call notification.
+ *
+ * @return {@code true} if should show emergency call notification. {@code false} otherwise.
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(allOf = {
+ android.Manifest.permission.READ_BLOCKED_NUMBERS,
+ android.Manifest.permission.WRITE_BLOCKED_NUMBERS
+ })
+ @FlaggedApi(Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ public boolean shouldShowEmergencyCallNotification() {
+ verifyBlockedNumbersPermission();
+ try {
+ final Bundle res = mContext.getContentResolver().call(AUTHORITY_URI,
+ METHOD_SHOULD_SHOW_EMERGENCY_CALL_NOTIFICATION, null, null);
+ return res != null && res.getBoolean(RES_SHOW_EMERGENCY_CALL_NOTIFICATION, false);
+ } catch (NullPointerException | IllegalArgumentException ex) {
+ // The content resolver can throw an NPE or IAE; we don't want to crash Telecom if
+ // either of these happen.
+ Log.w(null, "shouldShowEmergencyCallNotification: provider not ready.");
+ return false;
+ }
+ }
+
+ /**
+ * Check whether the enhanced block setting is enabled.
+ *
+ * @param key the key of the setting to check, can be
+ * {@link BlockedNumberContract.SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED}
+ * {@link BlockedNumberContract.SystemContract#ENHANCED_SETTING_KEY_BLOCK_PRIVATE}
+ * {@link BlockedNumberContract.SystemContract#ENHANCED_SETTING_KEY_BLOCK_PAYPHONE}
+ * {@link BlockedNumberContract.SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNKNOWN}
+ * {@link BlockedNumberContract.SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNAVAILABLE}
+ * {@link BlockedNumberContract.SystemContract
+ * #ENHANCED_SETTING_KEY_SHOW_EMERGENCY_CALL_NOTIFICATION}
+ * @return {@code true} if the setting is enabled. {@code false} otherwise.
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(allOf = {
+ android.Manifest.permission.READ_BLOCKED_NUMBERS,
+ android.Manifest.permission.WRITE_BLOCKED_NUMBERS
+ })
+ @FlaggedApi(Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ public boolean getBlockedNumberSetting(@NonNull String key) {
+ verifyBlockedNumbersPermission();
+ Bundle extras = new Bundle();
+ extras.putString(EXTRA_ENHANCED_SETTING_KEY, key);
+ try {
+ final Bundle res = mContext.getContentResolver().call(AUTHORITY_URI,
+ METHOD_GET_ENHANCED_BLOCK_SETTING, null, extras);
+ return res != null && res.getBoolean(RES_ENHANCED_SETTING_IS_ENABLED, false);
+ } catch (NullPointerException | IllegalArgumentException ex) {
+ // The content resolver can throw an NPE or IAE; we don't want to crash Telecom if
+ // either of these happen.
+ Log.w(null, "getEnhancedBlockSetting: provider not ready.");
+ return false;
+ }
+ }
+
+ /**
+ * Set the enhanced block setting enabled status.
+ *
+ * @param key the key of the setting to set, can be
+ * {@link BlockedNumberContract.SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED}
+ * {@link BlockedNumberContract.SystemContract#ENHANCED_SETTING_KEY_BLOCK_PRIVATE}
+ * {@link BlockedNumberContract.SystemContract#ENHANCED_SETTING_KEY_BLOCK_PAYPHONE}
+ * {@link BlockedNumberContract.SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNKNOWN}
+ * {@link BlockedNumberContract.SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNAVAILABLE}
+ * {@link BlockedNumberContract.SystemContract
+ * #ENHANCED_SETTING_KEY_SHOW_EMERGENCY_CALL_NOTIFICATION}
+ * @param value the enabled statue of the setting to set.
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(allOf = {
+ android.Manifest.permission.READ_BLOCKED_NUMBERS,
+ android.Manifest.permission.WRITE_BLOCKED_NUMBERS
+ })
+ @FlaggedApi(Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ public void setBlockedNumberSetting(@NonNull String key, boolean value) {
+ verifyBlockedNumbersPermission();
+ Bundle extras = new Bundle();
+ extras.putString(EXTRA_ENHANCED_SETTING_KEY, key);
+ extras.putBoolean(EXTRA_ENHANCED_SETTING_VALUE, value);
+ mContext.getContentResolver().call(AUTHORITY_URI, METHOD_SET_ENHANCED_BLOCK_SETTING,
+ null, extras);
+ }
+
+ /**
+ * Represents the current status of
+ * {@link #shouldSystemBlockNumber(String, int, boolean)}. If emergency services
+ * have been contacted recently, {@link #mIsSuppressed} is {@code true}, and blocking
+ * is disabled until the timestamp {@link #mUntilTimestampMillis}.
+ * @hide
+ */
+ @SystemApi
+ @FlaggedApi(Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ public static final class BlockSuppressionStatus {
+ /**
+ * Indicates if block suppression is enabled.
+ */
+ private boolean mIsSuppressed;
+
+ /**
+ * Timestamp in milliseconds from epoch.
+ */
+ private long mUntilTimestampMillis;
+
+ public BlockSuppressionStatus(boolean isSuppressed, long untilTimestampMillis) {
+ this.mIsSuppressed = isSuppressed;
+ this.mUntilTimestampMillis = untilTimestampMillis;
+ }
+
+ @Override
+ public String toString() {
+ return "[BlockSuppressionStatus; isSuppressed=" + mIsSuppressed + ", until="
+ + mUntilTimestampMillis + "]";
+ }
+
+ /**
+ * @return mIsSuppressed Indicates whether or not block suppression is enabled.
+ */
+ public boolean getIsSuppressed() {
+ return mIsSuppressed;
+ }
+
+ /**
+ * @return mUntilTimestampMillis The timestamp until which block suppression would be
+ * enabled for
+ */
+ public long getUntilTimestampMillis() {
+ return mUntilTimestampMillis;
+ }
+ }
+
+ /**
+ * Verifies that the caller holds both the
+ * {@link android.Manifest.permission#READ_BLOCKED_NUMBERS} permission and the
+ * {@link android.Manifest.permission#WRITE_BLOCKED_NUMBERS} permission.
+ *
+ * @throws SecurityException if the caller is missing the necessary permissions
+ */
+ private void verifyBlockedNumbersPermission() {
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.READ_BLOCKED_NUMBERS,
+ "Caller does not have the android.permission.READ_BLOCKED_NUMBERS permission");
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.WRITE_BLOCKED_NUMBERS,
+ "Caller does not have the android.permission.WRITE_BLOCKED_NUMBERS permission");
+ }
+}
diff --git a/core/java/android/provider/ProviderFrameworkInitializer.java b/core/java/android/provider/ProviderFrameworkInitializer.java
new file mode 100644
index 000000000000..92c24027dd7f
--- /dev/null
+++ b/core/java/android/provider/ProviderFrameworkInitializer.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.provider;
+
+import android.annotation.FlaggedApi;
+import android.app.SystemServiceRegistry;
+import android.content.Context;
+
+/**
+ * Class for performing registration for all provider services.
+ *
+ * @hide
+ */
+public class ProviderFrameworkInitializer {
+ private ProviderFrameworkInitializer() {}
+
+ /**
+ * Called by {@link SystemServiceRegistry}'s static initializer and registers all provider
+ * services to {@link Context}, so that {@link Context#getSystemService} can return them.
+ *
+ * @throws IllegalStateException if this is called from anywhere besides
+ * {@link SystemServiceRegistry}
+ */
+ @FlaggedApi(
+ com.android.server.telecom.flags.Flags.FLAG_TELECOM_MAINLINE_BLOCKED_NUMBERS_MANAGER)
+ public static void registerServiceWrappers() {
+ SystemServiceRegistry.registerContextAwareService(
+ Context.BLOCKED_NUMBERS_SERVICE,
+ BlockedNumbersManager.class,
+ context -> new BlockedNumbersManager(context)
+ );
+ }
+}
+
diff --git a/core/java/android/service/ondeviceintelligence/OnDeviceSandboxedInferenceService.java b/core/java/android/service/ondeviceintelligence/OnDeviceSandboxedInferenceService.java
index d943c80e525b..fc7a4c83f82c 100644
--- a/core/java/android/service/ondeviceintelligence/OnDeviceSandboxedInferenceService.java
+++ b/core/java/android/service/ondeviceintelligence/OnDeviceSandboxedInferenceService.java
@@ -27,21 +27,21 @@ import android.annotation.SdkConstant;
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.app.Service;
-import android.app.ondeviceintelligence.OnDeviceIntelligenceException;
-import android.os.Bundle;
import android.app.ondeviceintelligence.Feature;
import android.app.ondeviceintelligence.IProcessingSignal;
import android.app.ondeviceintelligence.IResponseCallback;
import android.app.ondeviceintelligence.IStreamingResponseCallback;
import android.app.ondeviceintelligence.ITokenInfoCallback;
+import android.app.ondeviceintelligence.OnDeviceIntelligenceException;
import android.app.ondeviceintelligence.OnDeviceIntelligenceManager;
import android.app.ondeviceintelligence.OnDeviceIntelligenceManager.InferenceParams;
-import android.app.ondeviceintelligence.ProcessingSignal;
import android.app.ondeviceintelligence.ProcessingCallback;
+import android.app.ondeviceintelligence.ProcessingSignal;
import android.app.ondeviceintelligence.StreamingProcessingCallback;
import android.app.ondeviceintelligence.TokenInfo;
import android.content.Context;
import android.content.Intent;
+import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.Handler;
import android.os.HandlerExecutor;
@@ -292,15 +292,15 @@ public abstract class OnDeviceSandboxedInferenceService extends Service {
/**
* Provides read-only access to the internal app storage via the
- * {@link OnDeviceIntelligenceService}. This is an asynchronous implementation for
+ * {@link OnDeviceIntelligenceService}. This is an asynchronous alternative for
* {@link #openFileInput(String)}.
*
* @param fileName File name relative to the {@link Context#getFilesDir()}.
- * @param resultConsumer Consumer to populate the corresponding file stream in.
+ * @param resultConsumer Consumer to populate the corresponding file descriptor in.
*/
- public final void openFileInputAsync(@NonNull String fileName,
+ public final void getReadOnlyFileDescriptor(@NonNull String fileName,
@NonNull @CallbackExecutor Executor executor,
- @NonNull Consumer<FileInputStream> resultConsumer) throws FileNotFoundException {
+ @NonNull Consumer<ParcelFileDescriptor> resultConsumer) throws FileNotFoundException {
AndroidFuture<ParcelFileDescriptor> future = new AndroidFuture<>();
try {
mRemoteStorageService.getReadOnlyFileDescriptor(fileName, future);
@@ -314,7 +314,7 @@ public abstract class OnDeviceSandboxedInferenceService extends Service {
executor.execute(() -> resultConsumer.accept(null));
} else {
executor.execute(
- () -> resultConsumer.accept(new FileInputStream(pfd.getFileDescriptor())));
+ () -> resultConsumer.accept(pfd));
}
}, executor);
}
@@ -328,12 +328,12 @@ public abstract class OnDeviceSandboxedInferenceService extends Service {
* @param resultConsumer Consumer to receive a map of filePath to the corresponding file input
* stream.
*/
- public final void fetchFeatureFileInputStreamMap(@NonNull Feature feature,
+ public final void fetchFeatureFileDescriptorMap(@NonNull Feature feature,
@NonNull @CallbackExecutor Executor executor,
- @NonNull Consumer<Map<String, FileInputStream>> resultConsumer) {
+ @NonNull Consumer<Map<String, ParcelFileDescriptor>> resultConsumer) {
try {
mRemoteStorageService.getReadOnlyFeatureFileDescriptorMap(feature,
- wrapResultReceiverAsReadOnly(resultConsumer, executor));
+ wrapAsRemoteCallback(resultConsumer, executor));
} catch (RemoteException e) {
throw new RuntimeException(e);
}
@@ -359,22 +359,18 @@ public abstract class OnDeviceSandboxedInferenceService extends Service {
}
- private RemoteCallback wrapResultReceiverAsReadOnly(
- @NonNull Consumer<Map<String, FileInputStream>> resultConsumer,
+ private RemoteCallback wrapAsRemoteCallback(
+ @NonNull Consumer<Map<String, ParcelFileDescriptor>> resultConsumer,
@NonNull Executor executor) {
return new RemoteCallback(result -> {
if (result == null) {
executor.execute(() -> resultConsumer.accept(new HashMap<>()));
} else {
- Map<String, FileInputStream> bundleMap = new HashMap<>();
- result.keySet().forEach(key -> {
- ParcelFileDescriptor pfd = result.getParcelable(key,
- ParcelFileDescriptor.class);
- if (pfd != null) {
- bundleMap.put(key, new FileInputStream(pfd.getFileDescriptor()));
- }
- });
- executor.execute(() -> resultConsumer.accept(bundleMap));
+ Map<String, ParcelFileDescriptor> pfdMap = new HashMap<>();
+ result.keySet().forEach(key ->
+ pfdMap.put(key, result.getParcelable(key,
+ ParcelFileDescriptor.class)));
+ executor.execute(() -> resultConsumer.accept(pfdMap));
}
});
}
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index 107c5f20acde..86fc6f48a145 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -93,8 +93,12 @@ import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.TestApi;
+import android.app.ActivityTaskManager;
+import android.app.ActivityThread;
import android.app.KeyguardManager;
import android.app.Presentation;
+import android.compat.annotation.ChangeId;
+import android.compat.annotation.EnabledSince;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.ClipData;
import android.content.ComponentName;
@@ -1416,23 +1420,71 @@ public interface WindowManager extends ViewManager {
public static final String PARCEL_KEY_SHORTCUTS_ARRAY = "shortcuts_array";
/**
- * Whether the device supports the WindowManager Extensions.
- * OEMs can enable this by having their device config to inherit window_extensions.mk, such as:
+ * Whether the WindowManager Extensions - Activity Embedding feature should be guarded by
+ * the app's target SDK on Android 15.
+ *
+ * WindowManager Extensions are only required for foldable and large screen before Android 15,
+ * so we want to guard the Activity Embedding feature since it can have app compat impact on
+ * devices with a compact size display.
+ *
+ * <p>If {@code true}, the feature is only enabled if the app's target SDK is Android 15 or
+ * above.
+ *
+ * <p>If {@code false}, the feature is enabled for all apps.
+ *
+ * <p>The default value is {@code true}. OEMs can set to {@code false} by having their device
+ * config to inherit window_extensions.mk. This is also required for large screen devices.
* <pre>
* $(call inherit-product, $(SRC_TARGET_DIR)/product/window_extensions.mk)
* </pre>
+ *
+ * @hide
+ */
+ boolean ACTIVITY_EMBEDDING_GUARD_WITH_ANDROID_15 = SystemProperties.getBoolean(
+ "persist.wm.extensions.activity_embedding_guard_with_android_15", true);
+
+ /**
+ * For devices with {@link #ACTIVITY_EMBEDDING_GUARD_WITH_ANDROID_15} as {@code true},
+ * the Activity Embedding feature is enabled if the app's target SDK is Android 15+.
+ *
+ * @see #ACTIVITY_EMBEDDING_GUARD_WITH_ANDROID_15
* @hide
*/
- boolean WINDOW_EXTENSIONS_ENABLED =
+ @ChangeId
+ @EnabledSince(targetSdkVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM)
+ long ENABLE_ACTIVITY_EMBEDDING_FOR_ANDROID_15 = 306666082L;
+
+ /**
+ * Whether the device contains the WindowManager Extensions shared library.
+ * This is enabled for all devices through window_extensions_base.mk, but can be dropped if the
+ * device doesn't support multi window.
+ *
+ * <p>Note: Large screen devices must also inherit window_extensions.mk to enable the Activity
+ * Embedding feature by default for all apps.
+ *
+ * @see #ACTIVITY_EMBEDDING_GUARD_WITH_ANDROID_15
+ * @hide
+ */
+ boolean HAS_WINDOW_EXTENSIONS_ON_DEVICE =
SystemProperties.getBoolean("persist.wm.extensions.enabled", false);
/**
- * @see #WINDOW_EXTENSIONS_ENABLED
+ * Whether the WindowManager Extensions are enabled.
+ * If {@code false}, the WM Jetpack will report most of its features as disabled.
+ * @see #HAS_WINDOW_EXTENSIONS_ON_DEVICE
* @hide
*/
@TestApi
static boolean hasWindowExtensionsEnabled() {
- return WINDOW_EXTENSIONS_ENABLED;
+ return HAS_WINDOW_EXTENSIONS_ON_DEVICE
+ && ActivityTaskManager.supportsMultiWindow(ActivityThread.currentApplication())
+ // Since enableWmExtensionsForAllFlag, HAS_WINDOW_EXTENSIONS_ON_DEVICE is now true
+ // on all devices by default as a build file property.
+ // Until finishing flag ramp up, only return true when
+ // ACTIVITY_EMBEDDING_GUARD_WITH_ANDROID_15 is false, which is set per device by
+ // OEMs.
+ && (Flags.enableWmExtensionsForAllFlag()
+ || !ACTIVITY_EMBEDDING_GUARD_WITH_ANDROID_15);
}
/**
@@ -6193,9 +6245,6 @@ public interface WindowManager extends ViewManager {
* caller must invoke {@link #unregisterSurfaceControlInputReceiver(SurfaceControl)} to clean up
* the resources when no longer needing to use the {@link SurfaceControlInputReceiver}
*
- * @param displayId The display that the SurfaceControl will be placed on. Input
- * will only work if SurfaceControl is on that display and that
- * display was touched.
* @param surfaceControl The SurfaceControl to register the InputChannel for
* @param hostInputTransferToken The host token to link the embedded. This is used to handle
* transferring touch gesture from host to embedded and for ANRs
@@ -6210,7 +6259,7 @@ public interface WindowManager extends ViewManager {
*/
@FlaggedApi(Flags.FLAG_SURFACE_CONTROL_INPUT_RECEIVER)
@NonNull
- default InputTransferToken registerBatchedSurfaceControlInputReceiver(int displayId,
+ default InputTransferToken registerBatchedSurfaceControlInputReceiver(
@NonNull InputTransferToken hostInputTransferToken,
@NonNull SurfaceControl surfaceControl, @NonNull Choreographer choreographer,
@NonNull SurfaceControlInputReceiver receiver) {
@@ -6221,15 +6270,12 @@ public interface WindowManager extends ViewManager {
/**
* Registers a {@link SurfaceControlInputReceiver} for a {@link SurfaceControl} that will
* receive every input event. This is different than calling
- * {@link #registerBatchedSurfaceControlInputReceiver(int, InputTransferToken, SurfaceControl,
+ * {@link #registerBatchedSurfaceControlInputReceiver(InputTransferToken, SurfaceControl,
* Choreographer, SurfaceControlInputReceiver)} in that the input events are received
* unbatched.
* The caller must invoke {@link #unregisterSurfaceControlInputReceiver(SurfaceControl)} to
* clean up the resources when no longer needing to use the {@link SurfaceControlInputReceiver}
*
- * @param displayId The display that the SurfaceControl will be placed on. Input
- * will only work if SurfaceControl is on that display and that
- * display was touched.
* @param surfaceControl The SurfaceControl to register the InputChannel for
* @param hostInputTransferToken The host token to link the embedded. This is used to handle
* transferring touch gesture from host to embedded and for ANRs
@@ -6243,7 +6289,7 @@ public interface WindowManager extends ViewManager {
*/
@FlaggedApi(Flags.FLAG_SURFACE_CONTROL_INPUT_RECEIVER)
@NonNull
- default InputTransferToken registerUnbatchedSurfaceControlInputReceiver(int displayId,
+ default InputTransferToken registerUnbatchedSurfaceControlInputReceiver(
@NonNull InputTransferToken hostInputTransferToken,
@NonNull SurfaceControl surfaceControl, @NonNull Looper looper,
@NonNull SurfaceControlInputReceiver receiver) {
@@ -6256,9 +6302,9 @@ public interface WindowManager extends ViewManager {
* specified token.
* <p>
* Must be called on the same {@link Looper} thread to which was passed to the
- * {@link #registerBatchedSurfaceControlInputReceiver(int, InputTransferToken, SurfaceControl,
+ * {@link #registerBatchedSurfaceControlInputReceiver(InputTransferToken, SurfaceControl,
* Choreographer, SurfaceControlInputReceiver)} or
- * {@link #registerUnbatchedSurfaceControlInputReceiver(int, InputTransferToken, SurfaceControl,
+ * {@link #registerUnbatchedSurfaceControlInputReceiver(InputTransferToken, SurfaceControl,
* Looper, SurfaceControlInputReceiver)}
*
* @param surfaceControl The SurfaceControl to remove and unregister the input channel for.
@@ -6272,9 +6318,9 @@ public interface WindowManager extends ViewManager {
/**
* Returns the input client token for the {@link SurfaceControl}. This will only return non
* null if the SurfaceControl was registered for input via
- * {@link #registerBatchedSurfaceControlInputReceiver(int, InputTransferToken, SurfaceControl,
+ * {@link #registerBatchedSurfaceControlInputReceiver(InputTransferToken, SurfaceControl,
* Choreographer, SurfaceControlInputReceiver)} or
- * {@link #registerUnbatchedSurfaceControlInputReceiver(int, InputTransferToken,
+ * {@link #registerUnbatchedSurfaceControlInputReceiver(InputTransferToken,
* SurfaceControl, Looper, SurfaceControlInputReceiver)}.
* <p>
* This is helpful for testing to ensure the test waits for the layer to be registered with
@@ -6304,9 +6350,9 @@ public interface WindowManager extends ViewManager {
* </li>
* <li>
* Registering a SurfaceControl for input and passing the host's token to either
- * {@link #registerBatchedSurfaceControlInputReceiver(int, InputTransferToken, SurfaceControl,
+ * {@link #registerBatchedSurfaceControlInputReceiver(InputTransferToken, SurfaceControl,
* Choreographer, SurfaceControlInputReceiver)} or
- * {@link #registerUnbatchedSurfaceControlInputReceiver(int, InputTransferToken,
+ * {@link #registerUnbatchedSurfaceControlInputReceiver(InputTransferToken,
* SurfaceControl, Looper, SurfaceControlInputReceiver)}.
* </li>
* </ul>
@@ -6321,9 +6367,9 @@ public interface WindowManager extends ViewManager {
* When the host wants to transfer touch gesture to the embedded, it can retrieve the embedded
* token via {@link SurfaceControlViewHost.SurfacePackage#getInputTransferToken()} or use the
* value returned from either
- * {@link #registerBatchedSurfaceControlInputReceiver(int, InputTransferToken, SurfaceControl,
+ * {@link #registerBatchedSurfaceControlInputReceiver(InputTransferToken, SurfaceControl,
* Choreographer, SurfaceControlInputReceiver)} or
- * {@link #registerUnbatchedSurfaceControlInputReceiver(int, InputTransferToken, SurfaceControl,
+ * {@link #registerUnbatchedSurfaceControlInputReceiver(InputTransferToken, SurfaceControl,
* Looper, SurfaceControlInputReceiver)} and pass its own token as the transferFromToken.
* <p>
* When the embedded wants to transfer touch gesture to the host, it can pass in its own
diff --git a/core/java/android/view/WindowManagerGlobal.java b/core/java/android/view/WindowManagerGlobal.java
index c6d0454fbcfd..961a9c438ba7 100644
--- a/core/java/android/view/WindowManagerGlobal.java
+++ b/core/java/android/view/WindowManagerGlobal.java
@@ -16,6 +16,7 @@
package android.view;
+import static android.view.Display.INVALID_DISPLAY;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
import android.animation.ValueAnimator;
@@ -839,20 +840,40 @@ public final class WindowManagerGlobal {
mTrustedPresentationListener.removeListener(listener);
}
- InputTransferToken registerBatchedSurfaceControlInputReceiver(int displayId,
+ private static InputChannel createInputChannel(@NonNull IBinder clientToken,
@NonNull InputTransferToken hostToken, @NonNull SurfaceControl surfaceControl,
- @NonNull Choreographer choreographer, @NonNull SurfaceControlInputReceiver receiver) {
- IBinder clientToken = new Binder();
- InputTransferToken inputTransferToken = new InputTransferToken();
+ @Nullable InputTransferToken inputTransferToken) {
InputChannel inputChannel = new InputChannel();
try {
- WindowManagerGlobal.getWindowSession().grantInputChannel(displayId, surfaceControl,
- clientToken, hostToken, 0, 0, TYPE_APPLICATION, 0, null, inputTransferToken,
- surfaceControl.getName(), inputChannel);
+ // TODO (b/329860681): Use INVALID_DISPLAY for now because the displayId will be
+ // selected in SurfaceFlinger. This should be cleaned up so grantInputChannel doesn't
+ // take in a displayId at all
+ WindowManagerGlobal.getWindowSession().grantInputChannel(INVALID_DISPLAY,
+ surfaceControl, clientToken, hostToken, 0, 0, TYPE_APPLICATION, 0, null,
+ inputTransferToken, surfaceControl.getName(), inputChannel);
} catch (RemoteException e) {
Log.e(TAG, "Failed to create input channel", e);
e.rethrowAsRuntimeException();
}
+ return inputChannel;
+ }
+
+ private static void removeInputChannel(IBinder clientToken) {
+ try {
+ WindowManagerGlobal.getWindowSession().remove(clientToken);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Failed to remove input channel", e);
+ e.rethrowAsRuntimeException();
+ }
+ }
+
+ InputTransferToken registerBatchedSurfaceControlInputReceiver(
+ @NonNull InputTransferToken hostToken, @NonNull SurfaceControl surfaceControl,
+ @NonNull Choreographer choreographer, @NonNull SurfaceControlInputReceiver receiver) {
+ IBinder clientToken = new Binder();
+ InputTransferToken inputTransferToken = new InputTransferToken();
+ InputChannel inputChannel = createInputChannel(clientToken, hostToken,
+ surfaceControl, inputTransferToken);
synchronized (mSurfaceControlInputReceivers) {
mSurfaceControlInputReceivers.put(surfaceControl.getLayerId(),
@@ -869,20 +890,13 @@ public final class WindowManagerGlobal {
return inputTransferToken;
}
- InputTransferToken registerUnbatchedSurfaceControlInputReceiver(int displayId,
+ InputTransferToken registerUnbatchedSurfaceControlInputReceiver(
@NonNull InputTransferToken hostToken, @NonNull SurfaceControl surfaceControl,
@NonNull Looper looper, @NonNull SurfaceControlInputReceiver receiver) {
IBinder clientToken = new Binder();
InputTransferToken inputTransferToken = new InputTransferToken();
- InputChannel inputChannel = new InputChannel();
- try {
- WindowManagerGlobal.getWindowSession().grantInputChannel(displayId, surfaceControl,
- clientToken, hostToken, 0, 0, TYPE_APPLICATION, 0, null, inputTransferToken,
- surfaceControl.getName(), inputChannel);
- } catch (RemoteException e) {
- Log.e(TAG, "Failed to create input channel", e);
- e.rethrowAsRuntimeException();
- }
+ InputChannel inputChannel = createInputChannel(clientToken, hostToken,
+ surfaceControl, inputTransferToken);
synchronized (mSurfaceControlInputReceivers) {
mSurfaceControlInputReceivers.put(surfaceControl.getLayerId(),
@@ -909,13 +923,7 @@ public final class WindowManagerGlobal {
Log.w(TAG, "No registered input event receiver with sc: " + surfaceControl);
return;
}
- try {
- WindowManagerGlobal.getWindowSession().remove(
- surfaceControlInputReceiverInfo.mClientToken);
- } catch (RemoteException e) {
- Log.e(TAG, "Failed to remove input channel", e);
- e.rethrowAsRuntimeException();
- }
+ removeInputChannel(surfaceControlInputReceiverInfo.mClientToken);
surfaceControlInputReceiverInfo.mInputEventReceiver.dispose();
}
diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java
index df4fed6a45f1..b667427fd2c5 100644
--- a/core/java/android/view/WindowManagerImpl.java
+++ b/core/java/android/view/WindowManagerImpl.java
@@ -535,7 +535,7 @@ public final class WindowManagerImpl implements WindowManager {
@NonNull
@Override
- public InputTransferToken registerBatchedSurfaceControlInputReceiver(int displayId,
+ public InputTransferToken registerBatchedSurfaceControlInputReceiver(
@NonNull InputTransferToken hostInputTransferToken,
@NonNull SurfaceControl surfaceControl, @NonNull Choreographer choreographer,
@NonNull SurfaceControlInputReceiver receiver) {
@@ -543,13 +543,13 @@ public final class WindowManagerImpl implements WindowManager {
Objects.requireNonNull(surfaceControl);
Objects.requireNonNull(choreographer);
Objects.requireNonNull(receiver);
- return mGlobal.registerBatchedSurfaceControlInputReceiver(displayId, hostInputTransferToken,
+ return mGlobal.registerBatchedSurfaceControlInputReceiver(hostInputTransferToken,
surfaceControl, choreographer, receiver);
}
@NonNull
@Override
- public InputTransferToken registerUnbatchedSurfaceControlInputReceiver(int displayId,
+ public InputTransferToken registerUnbatchedSurfaceControlInputReceiver(
@NonNull InputTransferToken hostInputTransferToken,
@NonNull SurfaceControl surfaceControl, @NonNull Looper looper,
@NonNull SurfaceControlInputReceiver receiver) {
@@ -557,7 +557,7 @@ public final class WindowManagerImpl implements WindowManager {
Objects.requireNonNull(surfaceControl);
Objects.requireNonNull(looper);
Objects.requireNonNull(receiver);
- return mGlobal.registerUnbatchedSurfaceControlInputReceiver(displayId,
+ return mGlobal.registerUnbatchedSurfaceControlInputReceiver(
hostInputTransferToken, surfaceControl, looper, receiver);
}
diff --git a/core/java/android/view/accessibility/OWNERS b/core/java/android/view/accessibility/OWNERS
index 73d134146c3f..b0943e9cff62 100644
--- a/core/java/android/view/accessibility/OWNERS
+++ b/core/java/android/view/accessibility/OWNERS
@@ -1,16 +1,13 @@
-# Bug component: 44214
+# Bug component: 44215
-romainguy@google.com
-alanv@google.com
-adamp@google.com
-aurimas@google.com
-nduca@google.com
-sumir@google.com
-ogunwale@google.com
-jjaggi@google.com
-pweaver@google.com
-ryanlwlin@google.com
-danielnorman@google.com
-sallyyuen@google.com
-aarmaly@google.com
-fuego@google.com
+# Android Accessibility Framework owners
+include /services/accessibility/OWNERS
+
+# Android members outside of Accessibility
+adamp@google.com #{LAST_RESORT_SUGGESTION}
+alanv@google.com #{LAST_RESORT_SUGGESTION}
+aurimas@google.com #{LAST_RESORT_SUGGESTION}
+jjaggi@google.com #{LAST_RESORT_SUGGESTION}
+ogunwale@google.com #{LAST_RESORT_SUGGESTION}
+romainguy@google.com #{LAST_RESORT_SUGGESTION}
+sumir@google.com #{LAST_RESORT_SUGGESTION}
diff --git a/core/java/android/window/InputTransferToken.java b/core/java/android/window/InputTransferToken.java
index c62eee40da98..5fab48f93316 100644
--- a/core/java/android/window/InputTransferToken.java
+++ b/core/java/android/window/InputTransferToken.java
@@ -38,9 +38,9 @@ import java.util.Objects;
* {@link SurfaceControlViewHost} or {@link android.view.SurfaceControl} that has an input channel.
* <p>
* The {@link android.view.SurfaceControl} needs to have been registered for input via
- * {@link android.view.WindowManager#registerUnbatchedSurfaceControlInputReceiver(int,
+ * {@link android.view.WindowManager#registerUnbatchedSurfaceControlInputReceiver(
* InputTransferToken, SurfaceControl, Looper, SurfaceControlInputReceiver)} or
- * {@link android.view.WindowManager#registerBatchedSurfaceControlInputReceiver(int,
+ * {@link android.view.WindowManager#registerBatchedSurfaceControlInputReceiver(
* InputTransferToken, SurfaceControl, Choreographer, SurfaceControlInputReceiver)} and the
* returned token can be used to call
* {@link android.view.WindowManager#transferTouchGesture(InputTransferToken, InputTransferToken)}
diff --git a/core/java/android/window/TransitionInfo.java b/core/java/android/window/TransitionInfo.java
index 5227724e705e..3685bbabf4d3 100644
--- a/core/java/android/window/TransitionInfo.java
+++ b/core/java/android/window/TransitionInfo.java
@@ -542,9 +542,6 @@ public final class TransitionInfo implements Parcelable {
// independent either.
if (change.getMode() == TRANSIT_CHANGE) return false;
- // Always fold the activity embedding change into the parent change.
- if (change.hasFlags(FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY)) return false;
-
TransitionInfo.Change parentChg = info.getChange(change.getParent());
while (parentChg != null) {
// If the parent is a visibility change, it will include the results of all child
diff --git a/core/java/com/android/internal/accessibility/OWNERS b/core/java/com/android/internal/accessibility/OWNERS
index 0955e005791e..1265dfa2c441 100644
--- a/core/java/com/android/internal/accessibility/OWNERS
+++ b/core/java/com/android/internal/accessibility/OWNERS
@@ -1,6 +1,4 @@
-# Bug component: 44214
-pweaver@google.com
-danielnorman@google.com
-sallyyuen@google.com
-aarmaly@google.com
-fuego@google.com
+# Bug component: 44215
+
+# Android Accessibility Framework owners
+include /services/accessibility/OWNERS \ No newline at end of file
diff --git a/core/java/com/android/internal/os/CpuScalingPolicyReader.java b/core/java/com/android/internal/os/CpuScalingPolicyReader.java
index 0d272fdd1578..720577eadd19 100644
--- a/core/java/com/android/internal/os/CpuScalingPolicyReader.java
+++ b/core/java/com/android/internal/os/CpuScalingPolicyReader.java
@@ -129,6 +129,9 @@ public class CpuScalingPolicyReader {
String[] strings = contents.split(" ");
intArray.clear();
for (String s : strings) {
+ if (s.isBlank()) {
+ continue;
+ }
try {
intArray.add(Integer.parseInt(s));
} catch (NumberFormatException e) {
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java
index 7af196513cae..5297006880d7 100644
--- a/core/java/com/android/internal/os/ZygoteInit.java
+++ b/core/java/com/android/internal/os/ZygoteInit.java
@@ -400,7 +400,7 @@ public class ZygoteInit {
// WindowManager Extensions is an optional shared library that is required for WindowManager
// Jetpack to fully function. Since it is a widely used library, preload it to improve apps
// startup performance.
- if (WindowManager.hasWindowExtensionsEnabled()) {
+ if (WindowManager.HAS_WINDOW_EXTENSIONS_ON_DEVICE) {
final String systemExtFrameworkPath =
new File(Environment.getSystemExtDirectory(), "framework").getPath();
libs.add(new SharedLibraryInfo(
diff --git a/core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java b/core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java
index 5e89d06facd1..e1aff2af0965 100644
--- a/core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java
+++ b/core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java
@@ -3281,6 +3281,11 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal,
}
public PackageImpl(Parcel in) {
+ this(in, /* callback */ null);
+ }
+
+ public PackageImpl(@NonNull Parcel in, @Nullable ParsingPackageUtils.Callback callback) {
+ mCallback = callback;
// We use the boot classloader for all classes that we load.
final ClassLoader boot = Object.class.getClassLoader();
this.supportsSmallScreens = sForBoolean.unparcel(in);
diff --git a/core/jni/Android.bp b/core/jni/Android.bp
index ac961ee07af4..444288c613ea 100644
--- a/core/jni/Android.bp
+++ b/core/jni/Android.bp
@@ -164,6 +164,7 @@ cc_library_shared_for_libandroid_runtime {
"android_view_Surface.cpp",
"android_view_SurfaceControl.cpp",
"android_view_SurfaceControlHdrLayerInfoListener.cpp",
+ "android_view_WindowManagerGlobal.cpp",
"android_graphics_BLASTBufferQueue.cpp",
"android_view_SurfaceSession.cpp",
"android_view_TextureView.cpp",
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp
index 9bbd19122153..71d041c11980 100644
--- a/core/jni/AndroidRuntime.cpp
+++ b/core/jni/AndroidRuntime.cpp
@@ -222,6 +222,7 @@ extern int register_android_tracing_PerfettoDataSource(JNIEnv* env);
extern int register_android_tracing_PerfettoDataSourceInstance(JNIEnv* env);
extern int register_android_tracing_PerfettoProducer(JNIEnv* env);
extern int register_android_window_InputTransferToken(JNIEnv* env);
+extern int register_android_view_WindowManagerGlobal(JNIEnv* env);
// Namespace for Android Runtime flags applied during boot time.
static const char* RUNTIME_NATIVE_BOOT_NAMESPACE = "runtime_native_boot";
@@ -1680,6 +1681,7 @@ static const RegJNIRec gRegJNI[] = {
REG_JNI(register_android_tracing_PerfettoDataSourceInstance),
REG_JNI(register_android_tracing_PerfettoProducer),
REG_JNI(register_android_window_InputTransferToken),
+ REG_JNI(register_android_view_WindowManagerGlobal),
};
/*
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index 6fec527aaa16..1eab9910b651 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -254,6 +254,8 @@ static struct {
static struct {
jclass clazz;
jfieldID mNativeObject;
+ jfieldID mName;
+ jmethodID ctor;
jmethodID invokeReleaseCallback;
} gSurfaceControlClassInfo;
@@ -2177,6 +2179,20 @@ SurfaceControl* android_view_SurfaceControl_getNativeSurfaceControl(JNIEnv* env,
}
}
+jobject android_view_SurfaceControl_getJavaSurfaceControl(JNIEnv* env,
+ const SurfaceControl& surfaceControl) {
+ jobject surfaceControlObj =
+ env->NewObject(gSurfaceControlClassInfo.clazz, gSurfaceControlClassInfo.ctor);
+ env->SetLongField(surfaceControlObj, gSurfaceControlClassInfo.mNativeObject,
+ reinterpret_cast<jlong>(&surfaceControl));
+ env->SetObjectField(surfaceControlObj, gSurfaceControlClassInfo.mName,
+ ScopedLocalRef<jobject>(env,
+ env->NewStringUTF(surfaceControl.getName().c_str()))
+ .get());
+ surfaceControl.incStrong((void*)nativeCreate);
+ return surfaceControlObj;
+}
+
SurfaceComposerClient::Transaction* android_view_SurfaceTransaction_getNativeSurfaceTransaction(
JNIEnv* env, jobject surfaceTransactionObj) {
if (!!surfaceTransactionObj &&
@@ -2652,6 +2668,9 @@ int register_android_view_SurfaceControl(JNIEnv* env)
gSurfaceControlClassInfo.clazz = MakeGlobalRefOrDie(env, surfaceControlClazz);
gSurfaceControlClassInfo.mNativeObject =
GetFieldIDOrDie(env, gSurfaceControlClassInfo.clazz, "mNativeObject", "J");
+ gSurfaceControlClassInfo.mName =
+ GetFieldIDOrDie(env, gSurfaceControlClassInfo.clazz, "mName", "Ljava/lang/String;");
+ gSurfaceControlClassInfo.ctor = GetMethodIDOrDie(env, surfaceControlClazz, "<init>", "()V");
gSurfaceControlClassInfo.invokeReleaseCallback =
GetStaticMethodIDOrDie(env, surfaceControlClazz, "invokeReleaseCallback",
"(Ljava/util/function/Consumer;J)V");
diff --git a/core/jni/android_view_WindowManagerGlobal.cpp b/core/jni/android_view_WindowManagerGlobal.cpp
new file mode 100644
index 000000000000..b03ac88a36ca
--- /dev/null
+++ b/core/jni/android_view_WindowManagerGlobal.cpp
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "WindowManagerGlobal"
+
+#include "android_view_WindowManagerGlobal.h"
+
+#include <android_runtime/AndroidRuntime.h>
+#include <android_runtime/android_view_SurfaceControl.h>
+#include <android_runtime/android_window_InputTransferToken.h>
+#include <jni.h>
+#include <nativehelper/ScopedLocalRef.h>
+
+#include "android_util_Binder.h"
+#include "android_view_InputChannel.h"
+#include "jni_wrappers.h"
+
+namespace android {
+
+static struct {
+ jclass clazz;
+ jmethodID createInputChannel;
+ jmethodID removeInputChannel;
+} gWindowManagerGlobal;
+
+std::shared_ptr<InputChannel> createInputChannel(
+ const sp<IBinder>& clientToken, const InputTransferToken& hostInputTransferToken,
+ const SurfaceControl& surfaceControl, const InputTransferToken& clientInputTransferToken) {
+ JNIEnv* env = AndroidRuntime::getJNIEnv();
+ ScopedLocalRef<jobject> hostInputTransferTokenObj(
+ env,
+ android_window_InputTransferToken_getJavaInputTransferToken(env,
+ hostInputTransferToken));
+ ScopedLocalRef<jobject>
+ surfaceControlObj(env,
+ android_view_SurfaceControl_getJavaSurfaceControl(env,
+ surfaceControl));
+ jobject clientTokenObj = javaObjectForIBinder(env, clientToken);
+ ScopedLocalRef<jobject> clientInputTransferTokenObj(
+ env,
+ android_window_InputTransferToken_getJavaInputTransferToken(env,
+ clientInputTransferToken));
+ ScopedLocalRef<jobject>
+ inputChannelObj(env,
+ env->CallStaticObjectMethod(gWindowManagerGlobal.clazz,
+ gWindowManagerGlobal.createInputChannel,
+ clientTokenObj,
+ hostInputTransferTokenObj.get(),
+ surfaceControlObj.get(),
+ clientInputTransferTokenObj.get()));
+
+ return android_view_InputChannel_getInputChannel(env, inputChannelObj.get());
+}
+
+void removeInputChannel(const sp<IBinder>& clientToken) {
+ JNIEnv* env = AndroidRuntime::getJNIEnv();
+
+ jobject clientTokenObj(javaObjectForIBinder(env, clientToken));
+ env->CallStaticObjectMethod(gWindowManagerGlobal.clazz, gWindowManagerGlobal.removeInputChannel,
+ clientTokenObj);
+}
+
+int register_android_view_WindowManagerGlobal(JNIEnv* env) {
+ jclass windowManagerGlobalClass = FindClassOrDie(env, "android/view/WindowManagerGlobal");
+ gWindowManagerGlobal.clazz = MakeGlobalRefOrDie(env, windowManagerGlobalClass);
+ gWindowManagerGlobal.createInputChannel =
+ GetStaticMethodIDOrDie(env, windowManagerGlobalClass, "createInputChannel",
+ "(Landroid/os/IBinder;Landroid/window/"
+ "InputTransferToken;Landroid/view/SurfaceControl;Landroid/"
+ "window/InputTransferToken;)Landroid/view/InputChannel;");
+ gWindowManagerGlobal.removeInputChannel =
+ GetStaticMethodIDOrDie(env, windowManagerGlobalClass, "removeInputChannel",
+ "(Landroid/os/IBinder;)V");
+
+ return NO_ERROR;
+}
+
+} // namespace android \ No newline at end of file
diff --git a/core/jni/android_view_WindowManagerGlobal.h b/core/jni/android_view_WindowManagerGlobal.h
new file mode 100644
index 000000000000..fcdeaa1c7d20
--- /dev/null
+++ b/core/jni/android_view_WindowManagerGlobal.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <binder/IBinder.h>
+#include <gui/InputTransferToken.h>
+#include <gui/SurfaceControl.h>
+#include <input/InputTransport.h>
+
+namespace android {
+extern std::shared_ptr<InputChannel> createInputChannel(
+ const sp<IBinder>& clientToken, const InputTransferToken& hostInputTransferToken,
+ const SurfaceControl& surfaceControl,
+ const InputTransferToken& clientInputTransferTokenObj);
+extern void removeInputChannel(const sp<IBinder>& clientToken);
+
+} // namespace android \ No newline at end of file
diff --git a/core/jni/android_window_InputTransferToken.cpp b/core/jni/android_window_InputTransferToken.cpp
index 60568e30ccb2..8fb668d6bbd9 100644
--- a/core/jni/android_window_InputTransferToken.cpp
+++ b/core/jni/android_window_InputTransferToken.cpp
@@ -83,14 +83,10 @@ InputTransferToken* android_window_InputTransferToken_getNativeInputTransferToke
}
jobject android_window_InputTransferToken_getJavaInputTransferToken(
- JNIEnv* env, const InputTransferToken* inputTransferToken) {
- if (inputTransferToken == nullptr || env == nullptr) {
- return nullptr;
- }
-
- inputTransferToken->incStrong((void*)nativeCreate);
+ JNIEnv* env, const InputTransferToken& inputTransferToken) {
+ inputTransferToken.incStrong((void*)nativeCreate);
return env->NewObject(gInputTransferTokenClassInfo.clazz, gInputTransferTokenClassInfo.ctor,
- reinterpret_cast<jlong>(inputTransferToken));
+ reinterpret_cast<jlong>(&inputTransferToken));
}
static void release(InputTransferToken* inputTransferToken) {
diff --git a/core/jni/include/android_runtime/android_view_SurfaceControl.h b/core/jni/include/android_runtime/android_view_SurfaceControl.h
index 10a754903208..543deb8c5621 100644
--- a/core/jni/include/android_runtime/android_view_SurfaceControl.h
+++ b/core/jni/include/android_runtime/android_view_SurfaceControl.h
@@ -28,6 +28,9 @@ namespace android {
extern SurfaceControl* android_view_SurfaceControl_getNativeSurfaceControl(
JNIEnv* env, jobject surfaceControlObj);
+extern jobject android_view_SurfaceControl_getJavaSurfaceControl(
+ JNIEnv* env, const SurfaceControl& surfaceControl);
+
/* Gets the underlying native SurfaceControl for a java SurfaceControl. */
extern SurfaceComposerClient::Transaction*
android_view_SurfaceTransaction_getNativeSurfaceTransaction(JNIEnv* env,
diff --git a/core/jni/include/android_runtime/android_window_InputTransferToken.h b/core/jni/include/android_runtime/android_window_InputTransferToken.h
index 75dbe37f781f..5ac48f322003 100644
--- a/core/jni/include/android_runtime/android_window_InputTransferToken.h
+++ b/core/jni/include/android_runtime/android_window_InputTransferToken.h
@@ -26,7 +26,7 @@ extern InputTransferToken* android_window_InputTransferToken_getNativeInputTrans
JNIEnv* env, jobject inputTransferTokenObj);
extern jobject android_window_InputTransferToken_getJavaInputTransferToken(
- JNIEnv* env, const InputTransferToken* inputTransferToken);
+ JNIEnv* env, const InputTransferToken& inputTransferToken);
} // namespace android
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 1b9da2063b7b..31f2d8b13794 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -154,6 +154,7 @@
<protected-broadcast android:name="android.app.backup.intent.INIT" />
<protected-broadcast android:name="android.bluetooth.intent.DISCOVERABLE_TIMEOUT" />
+ <protected-broadcast android:name="android.bluetooth.action.AUTO_ON_STATE_CHANGED" />
<protected-broadcast android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
<protected-broadcast android:name="android.bluetooth.adapter.action.SCAN_MODE_CHANGED" />
<protected-broadcast android:name="android.bluetooth.adapter.action.DISCOVERY_STARTED" />
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 09d23fa82da1..5e435124f46e 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Jy kan boodskappe stuur en ontvang sonder ’n selfoon- of wi-fi-netwerk"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Maak Boodskappe oop"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Hoe dit werk"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Hangend …"</string>
</resources>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 6de4a20252f0..a06d4d4a0b9a 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"ያለ ሞባይል ወይም የWi-Fi አውታረ መረብ መልዕክቶችን መላክ እና መቀበል ይችላሉ"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"መልዕክቶች ይክፈቱ"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"እንዴት እንደሚሠራ"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"በመጠባበቅ ላይ..."</string>
</resources>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 3e98391416e9..894371cd46e8 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -2397,6 +2397,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"‏يمكنك إرسال الرسائل واستلامها بدون شبكة الجوّال أو شبكة Wi-Fi."</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"فتح تطبيق \"الرسائل\""</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"طريقة العمل"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"بانتظار الإزالة من الأرشيف…"</string>
</resources>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index 0e3773b06fdd..b1af54f96f1c 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"আপুনি ম’বাইল বা ৱাই-ফাই নেটৱৰ্কৰ জৰিয়তে পাঠ বাৰ্তা পঠিয়াব বা লাভ কৰিব পাৰে"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages খোলক"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"ই কেনেকৈ কাম কৰে"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"বিবেচনাধীন হৈ আছে..."</string>
</resources>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 98ec79861393..0d0d102fa999 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Mobil və ya Wi-Fi şəbəkəsi olmadan mesaj göndərə və qəbul edə bilərsiniz"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Mesajı açın"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Haqqında"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Gözləmədə..."</string>
</resources>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 04b5a3869ac7..653a06bbf6f2 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -2394,6 +2394,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Možete da šaljete i primate poruke bez mobilne ili WiFi mreže"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Otvori Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Princip rada"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Na čekanju..."</string>
</resources>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index bb1b2d3973cc..2f517a587bd6 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -2395,6 +2395,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Вы можаце адпраўляць і атрымліваць паведамленні без доступу да мабільнай сеткі або Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Адкрыць Паведамленні"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Як гэта працуе"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"У чаканні..."</string>
</resources>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index b03faf7072e4..1b486fbac0c4 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Можете да изпращате и получавате съобщения без мобилна или Wi-Fi мрежа"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Отваряне на Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Начин на работа"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Изчаква..."</string>
</resources>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index f637f5af8bf4..b9fde04e2d00 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"আপনি কোনও মেবাইল বা ওয়াই-ফাই নেটওয়ার্ক ছাড়াই মেসেজ পাঠাতে ও পেতে পারবেন"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages খুলুন"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"এটি কীভাবে কাজ করে"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"বাকি আছে…"</string>
</resources>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index 9700fe150d80..2414b7e07574 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -2394,6 +2394,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Možete slati i primati poruke bez mobilne ili WiFi mreže"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Otvorite Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Kako ovo funkcionira"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Na čekanju…"</string>
</resources>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index e56b8bcf02b3..8e733ec39545 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -2394,6 +2394,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Pots enviar i rebre missatges sense una xarxa mòbil o Wi‑Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Obre Missatges"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Com funciona"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Pendent..."</string>
</resources>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 0c168e59eeb3..dee6bbb1dc2d 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -2395,6 +2395,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Zprávy můžete odesílat a přijímat bez mobilní sítě nebo sítě Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Otevřít Zprávy"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Jak to funguje"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Čeká na vyřízení…"</string>
</resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index aa037c7983d2..bde7dbdfac8b 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -338,7 +338,7 @@
<string name="permgrouplab_phone" msgid="570318944091926620">"Telefon"</string>
<string name="permgroupdesc_phone" msgid="270048070781478204">"foretage og administrere telefonopkald"</string>
<string name="permgrouplab_sensors" msgid="9134046949784064495">"Kropssensorer"</string>
- <string name="permgroupdesc_sensors" msgid="2610631290633747752">"få adgang til sensordata om dine livstegn"</string>
+ <string name="permgroupdesc_sensors" msgid="2610631290633747752">"få adgang til sensordata om dine vitale værdier"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Notifikationer"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"vise notifikationer"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Hente indholdet i vinduet"</string>
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Du kan sende og modtage beskeder uden et mobil- eller Wi-Fi-netværk"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Åbn Beskeder"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Sådan fungerer det"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Afventer…"</string>
</resources>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 9f1af2400d98..27d3848bbf46 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Du kannst Nachrichten ohne Mobilfunknetz oder WLAN senden und empfangen"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages öffnen"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"So funktionierts"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Ausstehend…"</string>
</resources>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index bc4d92914b26..1f9c09fd3d07 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Μπορείτε να στέλνετε και να λαμβάνετε μηνύματα χωρίς δίκτυο κινητής τηλεφωνίας ή Wi-Fi."</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Άνοιγμα Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Πώς λειτουργεί"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Σε εκκρεμότητα…"</string>
</resources>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 969bbbfb5630..907026a5c2c8 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"You can send and receive messages without a mobile or Wi-Fi network"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Open Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"How it works"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Pending…"</string>
</resources>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 0a890b21f7a2..a3f50c50748e 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"You can send and receive messages without a mobile or Wi-Fi network"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Open Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"How it works"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Pending…"</string>
</resources>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 5ca52366355c..72d89fbba907 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"You can send and receive messages without a mobile or Wi-Fi network"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Open Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"How it works"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Pending…"</string>
</resources>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 65e53dbd9dac..c23ad312edfe 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -2394,6 +2394,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Puedes enviar y recibir mensajes incluso si no tienes conexión a una red móvil o Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Abrir Mensajes"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Cómo funciona"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Pendiente…"</string>
</resources>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index a0e4a512cc6a..def340d329d9 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -2394,6 +2394,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Puedes enviar y recibir mensajes sin una red móvil o Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Abre Mensajes"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Cómo funciona"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Pendiente..."</string>
</resources>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index d6553abb8bef..90a98a5ced13 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Teil on võimalik sõnumeid saata ja vastu võtta ilma mobiilside- ja WiFi-võrguta"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Ava rakendus Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Tööpõhimõtted"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Ootel …"</string>
</resources>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index bdf946e8074e..45d9e2503fe5 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Mezuak bidal eta jaso ditzakezu sare mugikorrik edo wifi-sarerik gabe"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Ireki Mezuak"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Nola funtzionatzen du?"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Zain…"</string>
</resources>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 827ddaab9e4d..c1a1b827f8db 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"‏می‌توانید بدون شبکه تلفن همراه یا Wi-Fi پیام ارسال و دریافت کنید"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"باز کردن «پیام‌ها»"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"روش کار"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"درحال تعلیق…"</string>
</resources>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index dca0e26e2615..88ede78d10c9 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Voit lähettää ja vastaanottaa viestejä ilman mobiili‑ tai Wi-Fi-verkkoa"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Avaa Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Näin se toimii"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Odottaa…"</string>
</resources>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index dc030bbac03c..12176c89f489 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -2394,6 +2394,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Vous pouvez envoyer et recevoir des messages sans avoir recours à un appareil mobile ou à un réseau Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Ouvrir Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Fonctionnement"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"En attente…"</string>
</resources>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 31754e40c1d5..91b2e3481dd7 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -2394,6 +2394,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Vous pouvez envoyer et recevoir des messages sans connexion au réseau mobile ou Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Ouvrir Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Fonctionnement"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"En attente…"</string>
</resources>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 1b99b4b89510..4f1b88e622e2 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Podes enviar e recibir mensaxes sen unha rede de telefonía móbil ou wifi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Abrir Mensaxes"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Como funciona?"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Pendente..."</string>
</resources>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index 57c09da6a8ce..6bd19ea90498 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"તમે મોબાઇલ અથવા વાઇ-ફાઇ નેટવર્ક વિના મેસેજ મોકલી અને પ્રાપ્ત કરી શકો છો"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ખોલો"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"તેની કામ કરવાની રીત"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"બાકી..."</string>
</resources>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 6bba6b00765c..53c3c6325840 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"मोबाइल या वाई-फ़ाई नेटवर्क के बिना भी मैसेज भेजे और पाए जा सकते हैं"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ऐप्लिकेशन खोलें"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"यह सेटिंग कैसे काम करती है"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"प्रोसेस जारी है..."</string>
</resources>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 75ca762ddf03..69d88f0b017c 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -2394,6 +2394,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Možete slati i primati poruke bez mobilne mreže ili Wi-Fi mreže"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Otvori Poruke"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Kako to funkcionira"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Na čekanju..."</string>
</resources>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index c825bd728ae4..8a3d5519e576 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Küldhet és fogadhat üzeneteket mobil- és Wi-Fi-hálózat nélkül is"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"A Messages megnyitása"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Hogyan működik?"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Függőben…"</string>
</resources>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index 1745f27219a1..84d18c7f818d 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Դուք կարող եք ուղարկել և ստանալ հաղորդագրություններ՝ առանց բջջային կամ Wi-Fi կապի"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Բացել Messages-ը"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Ինչպես է դա աշխատում"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Առկախ է…"</string>
</resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index af1ec297802a..aadf58d39002 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Anda dapat mengirim dan menerima pesan tanpa jaringan seluler atau Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Buka Message"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Cara kerjanya"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Tertunda..."</string>
</resources>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index d921828ffe2b..c56e35faee32 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Þú getur sent og móttekið skilaboð án tengingar við farsímakerfi eða Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Opna Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Svona virkar þetta"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Í bið…"</string>
</resources>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 86640f8e23b0..1c12a97865f9 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -2394,6 +2394,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Puoi inviare e ricevere messaggi senza una rete mobile o Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Apri Messaggi"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Come funziona"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"In attesa…"</string>
</resources>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index d0ad38c33d60..744c2ed8b09d 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -2394,6 +2394,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"‏אפשר לשלוח ולקבל הודעות ללא רשת סלולרית או רשת Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"‏לפתיחת Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"איך זה עובד"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"בהמתנה..."</string>
</resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index f8990841849d..576e1df90aee 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -2175,7 +2175,7 @@
<string name="accessibility_system_action_headset_hook_label" msgid="8524691721287425468">"ヘッドセット: フック"</string>
<string name="accessibility_system_action_on_screen_a11y_shortcut_label" msgid="8488701469459210309">"画面上のユーザー補助機能のショートカット"</string>
<string name="accessibility_system_action_on_screen_a11y_shortcut_chooser_label" msgid="1057878690209817886">"画面上のユーザー補助機能のショートカットの選択メニュー"</string>
- <string name="accessibility_system_action_hardware_a11y_shortcut_label" msgid="5764644187715255107">"ユーザー補助機能のショートカット"</string>
+ <string name="accessibility_system_action_hardware_a11y_shortcut_label" msgid="5764644187715255107">"ユーザー補助のショートカット"</string>
<string name="accessibility_system_action_dismiss_notification_shade" msgid="8931637495533770352">"通知シェードを閉じる"</string>
<string name="accessibility_system_action_dpad_up_label" msgid="1029042950229333782">"D-pad: 上"</string>
<string name="accessibility_system_action_dpad_down_label" msgid="3441918448624921461">"D-pad: 下"</string>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index e4e60428541b..43f13a332807 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"შეგიძლიათ გაგზავნოთ და მიიღოთ შეტყობინებები მობილური ან Wi-Fi ქსელის გარეშე"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages-ის გახსნა"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"მუშაობის პრინციპი"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"მომლოდინე..."</string>
</resources>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index e9d00c787285..e029b70bbc42 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Мобильдік не Wi-Fi желісіне қосылмастан хабар жібере аласыз және ала аласыз."</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages қолданбасын ашу"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Бұл қалай орындалады?"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Дайын емес…"</string>
</resources>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index 118e6e62ceeb..1dee12ebaf0f 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"អ្នកអាចផ្ញើ និងទទួលសារដោយមិនប្រើបណ្តាញទូរសព្ទចល័ត ឬ Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"បើក​កម្មវិធី Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"របៀបដែលវាដំណើរការ"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"កំពុងរង់ចាំ..."</string>
</resources>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index 4331819039a0..1574a84edc4e 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -1861,7 +1861,7 @@
<string name="write_fail_reason_cannot_write" msgid="432118118378451508">"ವಿಷಯವನ್ನು ಬರೆಯುವಲ್ಲಿ ದೋಷ ಎದುರಾಗಿದೆ"</string>
<string name="reason_unknown" msgid="5599739807581133337">"ಅಪರಿಚಿತ"</string>
<string name="reason_service_unavailable" msgid="5288405248063804713">"ಮುದ್ರಣ ಸೇವೆ ಸಕ್ರಿಯಗೊಂಡಿಲ್ಲ"</string>
- <string name="print_service_installed_title" msgid="6134880817336942482">"<xliff:g id="NAME">%s</xliff:g> ಸೇವೆಯನ್ನು ಸ್ಥಾಪಿಸಲಾಗಿದೆ"</string>
+ <string name="print_service_installed_title" msgid="6134880817336942482">"<xliff:g id="NAME">%s</xliff:g> ಸೇವೆಯನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲಾಗಿದೆ"</string>
<string name="print_service_installed_message" msgid="7005672469916968131">"ಸಕ್ರಿಯಗೊಳಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="restr_pin_enter_admin_pin" msgid="1199419462726962697">"ನಿರ್ವಾಹಕ ಪಿನ್ ನಮೂದಿಸಿ"</string>
<string name="restr_pin_enter_pin" msgid="373139384161304555">"ಪಿನ್‌ ನಮೂದಿಸಿ"</string>
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"ನೀವು ಮೊಬೈಲ್ ಅಥವಾ ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್ ಇಲ್ಲದೆಯೇ ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಬಹುದು ಮತ್ತು ಸ್ವೀಕರಿಸಬಹುದು"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ಅನ್ನು ತೆರೆಯಿರಿ"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"ಬಾಕಿ ಉಳಿದಿದೆ..."</string>
</resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 8975b4327361..75d4a2d51659 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"모바일 또는 Wi-Fi 네트워크 없이 메시지를 주고 받을 수 있습니다"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"메시지 열기"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"작동 방식"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"대기 중…"</string>
</resources>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index c8b5981671ba..118a54260ecd 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Сиз мобилдик же Wi-Fi тармагы жок эле билдирүүлөрдү жөнөтүп, ала аласыз"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Жазышуулар колдонмосун ачуу"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Ал кантип иштейт"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Кезекте турат..."</string>
</resources>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index 06a572df4080..7057324465fb 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"ທ່ານສາມາດສົ່ງ ແລະ ຮັບຂໍ້ຄວາມໂດຍບໍ່ຕ້ອງໃຊ້ເຄືອຂ່າຍມືຖື ຫຼື Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"ເປີດ Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"ມັນເຮັດວຽກແນວໃດ"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"ລໍຖ້າດຳເນີນການ..."</string>
</resources>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 98bcca9bf9db..e3405d60a0a7 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -2395,6 +2395,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Galite siųsti ir gauti pranešimus be mobiliojo ryšio ar „Wi-Fi“ tinklo"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Atidaryti programą „Messages“"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Kaip tai veikia"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Laukiama..."</string>
</resources>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 6ed95d34f4d7..d297856a2e1d 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -2394,6 +2394,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Varat sūtīt un saņemt ziņojumus bez mobilā vai Wi-Fi tīkla."</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Atvērt lietotni Ziņojumi"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Darbības principi"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Gaida…"</string>
</resources>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index 3a60709fac15..a15aa6e5e7f7 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Може да испраќате и примате пораки без мобилна или Wi-Fi мрежа"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Отворете ја Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Дознајте како функционира"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Во фаза на чекање…"</string>
</resources>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index 55633dc442b8..8043293f83d4 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"മൊബൈലോ വൈഫൈ നെറ്റ്‌വർക്കോ ഇല്ലാതെ തന്നെ സന്ദേശങ്ങൾ അയയ്‌ക്കാനും സ്വീകരിക്കാനും നിങ്ങൾക്ക് കഴിയും"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages തുറക്കുക"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"ഇത് പ്രവർത്തിക്കുന്നത് എങ്ങനെയാണ്"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"തീർപ്പാക്കിയിട്ടില്ല..."</string>
</resources>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index a9e1c1493044..615369c28b95 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Та мобайл эсвэл Wi-Fi сүлжээгүйгээр мессеж илгээх болон хүлээн авах боломжтой"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Мессежийг нээх"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Энэ хэрхэн ажилладаг вэ?"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Хүлээгдэж буй..."</string>
</resources>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index c20bdb050be3..d96bb41f83d0 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"तुम्ही मोबाइल किंवा वाय-फाय नेटवर्कशिवाय मेसेज पाठवू आणि मिळवू शकता"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages उघडा"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"ते कसे काम करते"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"प्रलंबित आहे..."</string>
</resources>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 9048ffc89cea..d794ae05af22 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Anda boleh menghantar dan menerima mesej tanpa rangkaian mudah alih atau Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Buka Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Cara ciri ini berfungsi"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Belum selesai..."</string>
</resources>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index 32aed951539b..825d3a635d88 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"မိုဘိုင်း (သို့) Wi-Fi ကွန်ရက်မရှိဘဲ မက်ဆေ့ဂျ်များကို ပို့နိုင်၊ လက်ခံနိုင်သည်"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ဖွင့်ရန်"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"အလုပ်လုပ်ပုံ"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"ဆိုင်းငံ့ထားသည်…"</string>
</resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 41e217d3dd01..3c07ba71856a 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Du kan sende og motta meldinger uten mobil- eller wifi-nettverk"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Åpne Meldinger"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Slik fungerer det"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Venter …"</string>
</resources>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index 6f139cd0f3a0..8d0ac72ca0a2 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"तपाईं मोबाइल वा Wi-Fi नेटवर्कविनै म्यासेज पठाउन र प्राप्त गर्न सक्नुहुन्छ"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages खोल्नुहोस्"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"यसले काम गर्ने तरिका"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"विचाराधीन..."</string>
</resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index b17d7a8acca0..bc2fc691b8ac 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Je kunt berichten sturen en krijgen zonder een mobiel of wifi-netwerk"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Berichten openen"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Hoe het werkt"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"In behandeling…"</string>
</resources>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index ade7c82648a4..1b68a740a0f5 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"ଏକ ମୋବାଇଲ କିମ୍ବା ୱାଇ-ଫାଇ ନେଟୱାର୍କ ବିନା ଆପଣ ମେସେଜ ପଠାଇପାରିବେ ଏବଂ ପାଇପାରିବେ"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ଖୋଲନ୍ତୁ"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"ଏହା କିପରି କାମ କରେ"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"ବାକି ଅଛି…"</string>
</resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 61814b7969bd..8f742eb624d5 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -2395,6 +2395,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Możesz wymieniać wiadomości bez dostępu do sieci komórkowej lub Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Otwórz Wiadomości"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Jak to działa"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Oczekiwanie…"</string>
</resources>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index cf1a200b91e8..786e58260f22 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -2394,6 +2394,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Você pode enviar e receber mensagens sem um dispositivo móvel ou uma rede Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Abrir o app Mensagens"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Como funciona"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Pendente…"</string>
</resources>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 9f6b733b92a7..4418acd40a50 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -1418,7 +1418,7 @@
<string name="share_remote_bugreport_action" msgid="7630880678785123682">"PARTILHAR"</string>
<string name="decline_remote_bugreport_action" msgid="4040894777519784346">"RECUSAR"</string>
<string name="select_input_method" msgid="3971267998568587025">"Escolher o método de entrada"</string>
- <string name="show_ime" msgid="6406112007347443383">"Manter no ecrã enquanto o teclado físico estiver ativo"</string>
+ <string name="show_ime" msgid="6406112007347443383">"Mantê-lo no ecrã enquanto o teclado físico estiver ativo"</string>
<string name="hardware" msgid="3611039921284836033">"Usar o teclado no ecrã"</string>
<string name="select_keyboard_layout_notification_title" msgid="5823199895322205589">"Configure o dispositivo <xliff:g id="DEVICE_NAME">%s</xliff:g>"</string>
<string name="select_multiple_keyboards_layout_notification_title" msgid="6999491025126641938">"Configure teclados físicos"</string>
@@ -2394,6 +2394,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Pode enviar e receber mensagens sem uma rede móvel ou Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Abre a app Mensagens"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Como funciona"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Pendente…"</string>
</resources>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index cf1a200b91e8..786e58260f22 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -2394,6 +2394,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Você pode enviar e receber mensagens sem um dispositivo móvel ou uma rede Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Abrir o app Mensagens"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Como funciona"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Pendente…"</string>
</resources>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 38b6e53bdcab..bc2eae17bf0d 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -2394,6 +2394,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Poți să trimiți și să primești mesaje fără o rețea mobilă sau Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Deschide Mesaje"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Cum funcționează"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"În așteptare..."</string>
</resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 866f316d8ab0..a476bca1d435 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -2395,6 +2395,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Вы можете отправлять и получать сообщения без доступа к мобильной сети или Wi-Fi."</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Открыть Сообщения"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Узнать принцип работы"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Обработка…"</string>
</resources>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index 3668de1ea039..8bbf199f5cc8 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"ඔබට ජංගම හෝ Wi-Fi ජාලයක් නොමැතිව පණිවිඩ යැවීමට සහ ලැබීමට හැක"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages විවෘත කරන්න"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"එය ක්‍රියා කරන ආකාරය"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"පොරොත්තුයි..."</string>
</resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 1c642f62396d..928371d9825e 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -1169,7 +1169,7 @@
<string name="elapsed_time_short_format_h_mm_ss" msgid="2302144714803345056">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
<string name="selectAll" msgid="1532369154488982046">"Vybrať všetko"</string>
<string name="cut" msgid="2561199725874745819">"Vystrihnúť"</string>
- <string name="copy" msgid="5472512047143665218">"Kopírovať"</string>
+ <string name="copy" msgid="5472512047143665218">"Skopírovať"</string>
<string name="failed_to_copy_to_clipboard" msgid="725919885138539875">"Nepodarilo sa skopírovať do schránky"</string>
<string name="paste" msgid="461843306215520225">"Prilepiť"</string>
<string name="paste_as_plain_text" msgid="7664800665823182587">"Prilepiť ako obyčajný text"</string>
@@ -2395,6 +2395,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Správy môžete odosielať a prijímať bez mobilnej siete či siete Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Otvoriť Správy"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Ako to funguje"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Nespracovaná…"</string>
</resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 0e72e0cd595b..e4abb4425ab7 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -2395,6 +2395,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Sporočila SMS lahko pošiljate in prejemate brez mobilnega omrežja ali omrežja Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Odpri Sporočila"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Kako deluje"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"V teku …"</string>
</resources>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index caa34099d882..29d6fe5883aa 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Mund të dërgosh dhe të marrësh mesazhe pa një rrjet celular apo rrjet Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Hap \"Mesazhet\""</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Si funksionon"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Në pritje..."</string>
</resources>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 75439d7c2fec..db9c849dd431 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -2394,6 +2394,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Можете да шаљете и примате поруке без мобилне или WiFi мреже"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Отвори Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Принцип рада"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"На чекању..."</string>
</resources>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index be777f098df2..657eb2c9b25c 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Du kan skicka och ta emot meddelanden utan mobil- eller wifi-nätverk"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Öppna Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Så fungerar det"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Väntar …"</string>
</resources>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 65c63212c1fd..83be3fcd63bf 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Unaweza kutuma na kupokea ujumbe bila mtandao wa simu au Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Fungua Programu ya Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Utaratibu wake"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Inashughulikiwa..."</string>
</resources>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index b3d16d76c40d..362a18d20fce 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"மொபைல்/வைஃபை நெட்வொர்க் இல்லாமல் நீங்கள் மெசேஜ்களை அனுப்பலாம் பெறலாம்"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ஆப்ஸைத் திறக்கவும்"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"இது செயல்படும் விதம்"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"நிலுவையிலுள்ளது..."</string>
</resources>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index c8778a423023..738b41010d76 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"మీరు మొబైల్ లేదా Wi-Fi నెట్‌వర్క్ లేకుండా మెసేజ్‌లను పంపవచ్చు, స్వీకరించవచ్చు"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Messagesను తెరవండి"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"ఇది ఎలా పని చేస్తుంది"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"పెండింగ్‌లో ఉంది..."</string>
</resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 8a056893adb3..785636910d7e 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"คุณรับส่งข้อความผ่านดาวเทียมได้โดยไม่ต้องใช้เครือข่ายมือถือหรือ Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"เปิด Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"วิธีการทำงาน"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"รอดำเนินการ..."</string>
</resources>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 3b3797a58ce1..f95c6b231dc7 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Puwede kang magpadala at tumanggap ng mga mensahe nang walang mobile o Wi-Fi network"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Buksan ang Messages"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Paano ito gumagana"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Nakabinbin..."</string>
</resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 70ea4149cea6..963898329867 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Mobil veya kablosuz ağa bağlı olmadan mesaj alıp gönderebilirsiniz"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Mesajlar\'ı aç"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"İşleyiş şekli"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Bekliyor..."</string>
</resources>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 9c7c8efe332b..640e7fc50f18 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -2395,6 +2395,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Ви можете надсилати й отримувати повідомлення, не використовуючи Wi-Fi або мобільну мережу"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Відкрийте Повідомлення"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Як це працює"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Обробка…"</string>
</resources>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index e60299f0dbfd..f8f7dde56a59 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"‏آپ موبائل یا Wi-Fi نیٹ ورک کے بغیر پیغامات بھیج اور موصول کر سکتے ہیں"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"پیغامات ایپ کو کھولیں"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"اس کے کام کرنے کا طریقہ"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"زیر التواء..."</string>
</resources>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index 58e576b732bd..5c73637183ad 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Mobil yoki Wi-Fi tarmoqsiz xabarlarni yuborishingiz va qabul qilishingiz mumkin"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Xabarlar ilovasini ochish"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Ishlash tartibi"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Kutilmoqda..."</string>
</resources>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index a8d8188c7015..2b39b8aa4745 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Bạn có thể gửi và nhận tin nhắn mà không cần có mạng di động hoặc mạng Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Mở ứng dụng Tin nhắn"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Cách hoạt động"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Đang chờ xử lý..."</string>
</resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index b0f052ee53ec..036e91f722a1 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -1417,7 +1417,7 @@
<string name="share_remote_bugreport_action" msgid="7630880678785123682">"分享"</string>
<string name="decline_remote_bugreport_action" msgid="4040894777519784346">"拒绝"</string>
<string name="select_input_method" msgid="3971267998568587025">"选择输入法"</string>
- <string name="show_ime" msgid="6406112007347443383">"开启后,连接到实体键盘时,它会一直显示在屏幕上"</string>
+ <string name="show_ime" msgid="6406112007347443383">"连接到实体键盘时,在屏幕上显示一个虚拟键盘"</string>
<string name="hardware" msgid="3611039921284836033">"使用屏幕键盘"</string>
<string name="select_keyboard_layout_notification_title" msgid="5823199895322205589">"配置“<xliff:g id="DEVICE_NAME">%s</xliff:g>”"</string>
<string name="select_multiple_keyboards_layout_notification_title" msgid="6999491025126641938">"配置物理键盘"</string>
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"您无需使用移动网络或 WLAN 网络便能收发消息"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"打开“信息”应用"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"运作方式"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"待归档…"</string>
</resources>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 0bf9079bd7f2..460067f26e73 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"你可在沒有流動/Wi-Fi 網絡的情況下收發訊息"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"開啟「訊息」"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"運作方式"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"待處理…"</string>
</resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index c15262d6ff7b..1a6b1d5b87fa 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -1586,7 +1586,7 @@
<string name="keyboardview_keycode_done" msgid="2524518019001653851">"完成"</string>
<string name="keyboardview_keycode_mode_change" msgid="2743735349997999020">"模式變更"</string>
<string name="keyboardview_keycode_shift" msgid="3026509237043975573">"Shift 鍵"</string>
- <string name="keyboardview_keycode_enter" msgid="168054869339091055">"Enter 鍵"</string>
+ <string name="keyboardview_keycode_enter" msgid="168054869339091055">"Enter"</string>
<string name="activitychooserview_choose_application" msgid="3500574466367891463">"選擇應用程式"</string>
<string name="activitychooserview_choose_application_error" msgid="6937782107559241734">"無法啟動 <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="shareactionprovider_share_with" msgid="2753089758467748982">"分享對象:"</string>
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"你可以收發訊息,沒有行動/Wi-Fi 網路也無妨"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"開啟「訊息」應用程式"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"運作方式"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"待處理…"</string>
</resources>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 91050bf5ba1e..cf4858ec4a31 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -2393,6 +2393,5 @@
<string name="satellite_notification_summary" msgid="5207364139430767162">"Ungathumela futhi wamukele imilayezo ngaphandle kwenethiwekhi yeselula noma ye-Wi-Fi"</string>
<string name="satellite_notification_open_message" msgid="4149234979688273729">"Vula Imilayezo"</string>
<string name="satellite_notification_how_it_works" msgid="3132069321977520519">"Indlela esebenza ngayo"</string>
- <!-- no translation found for unarchival_session_app_label (6811856981546348205) -->
- <skip />
+ <string name="unarchival_session_app_label" msgid="6811856981546348205">"Ilindile..."</string>
</resources>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index c77ee4326471..81c79f23af46 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -4484,6 +4484,21 @@
<attr name="autoTransact" format="boolean"/>
</declare-styleable>
+ <!-- Specify one or more <code>polling-loop-pattern-filter</code> elements inside a
+ <code>host-apdu-service</code> to indicate polling loop frames that
+ your service can handle. -->
+ <!-- @FlaggedApi("android.nfc.Flags.FLAG_NFC_READ_POLLING_LOOP") -->
+ <declare-styleable name="PollingLoopPatternFilter">
+ <!-- The patter to match polling loop frames to, must to be compatible with
+ {@link java.util.regex.Pattern#compile(String)} and only contain hexadecimal numbers and
+ `.`, `?` and `*` operators. This attribute is mandatory. -->
+ <attr name="name" />
+ <!-- Whether or not the system should automatically start a transaction when this polling
+ loop filter matches. If not set, default value is false. -->
+ <!-- @FlaggedApi("android.nfc.Flags.FLAG_NFC_READ_POLLING_LOOP") -->
+ <attr name="autoTransact" format="boolean"/>
+ </declare-styleable>
+
<!-- Use <code>host-nfcf-service</code> as the root tag of the XML resource that
describes an {@link android.nfc.cardemulation.HostNfcFService} service, which
is referenced from its {@link android.nfc.cardemulation.HostNfcFService#SERVICE_META_DATA}
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index c7e08e2b5b92..f915f038dc0d 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -400,6 +400,9 @@
<string name="scCellularNetworkSecurityTitle">Cellular network security</string>
<!-- Summary of the cellular network security safety center source's status. -->
<string name="scCellularNetworkSecuritySummary">Review settings</string>
+ <!-- Link passed to safety center for the Learn More button on notifications -->
+ <!-- DO NOT TRANSLATE -->
+ <string name="scCellularNetworkSecurityLearnMore" translatable="false"></string>
<!-- Title of the safety center issue and notification when the phone's identifier is shared over the network. -->
<string name="scIdentifierDisclosureIssueTitle">Device identifier accessed</string>
<!-- Summary of the safety center issue and notification when the phone's identifier is shared over the network. -->
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 9628d301fc5b..f4b42f6b3fb2 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -954,6 +954,7 @@
<java-symbol type="string" name="roamingTextSearching" />
<java-symbol type="string" name="scCellularNetworkSecuritySummary" />
<java-symbol type="string" name="scCellularNetworkSecurityTitle" />
+ <java-symbol type="string" name="scCellularNetworkSecurityLearnMore" />
<java-symbol type="string" name="scIdentifierDisclosureIssueSummary" />
<java-symbol type="string" name="scIdentifierDisclosureIssueTitle" />
<java-symbol type="string" name="scNullCipherIssueActionLearnMore" />
diff --git a/core/tests/coretests/src/android/os/PerformanceHintManagerTest.java b/core/tests/coretests/src/android/os/PerformanceHintManagerTest.java
index 2bd563191134..93a564208522 100644
--- a/core/tests/coretests/src/android/os/PerformanceHintManagerTest.java
+++ b/core/tests/coretests/src/android/os/PerformanceHintManagerTest.java
@@ -243,25 +243,25 @@ public class PerformanceHintManagerTest {
assumeNotNull(s);
s.updateTargetWorkDuration(16);
assertThrows(IllegalArgumentException.class, () -> {
- s.reportActualWorkDuration(new WorkDuration(-1, 12, 8, 6, 1));
+ s.reportActualWorkDuration(new WorkDuration(-1, 12, 8, 6));
});
assertThrows(IllegalArgumentException.class, () -> {
- s.reportActualWorkDuration(new WorkDuration(0, 12, 8, 6, 1));
+ s.reportActualWorkDuration(new WorkDuration(0, 12, 8, 6));
});
assertThrows(IllegalArgumentException.class, () -> {
- s.reportActualWorkDuration(new WorkDuration(1, -1, 8, 6, 1));
+ s.reportActualWorkDuration(new WorkDuration(1, -1, 8, 6));
});
assertThrows(IllegalArgumentException.class, () -> {
- s.reportActualWorkDuration(new WorkDuration(1, 0, 8, 6, 1));
+ s.reportActualWorkDuration(new WorkDuration(1, 0, 8, 6));
});
assertThrows(IllegalArgumentException.class, () -> {
- s.reportActualWorkDuration(new WorkDuration(1, 12, -1, 6, 1));
+ s.reportActualWorkDuration(new WorkDuration(1, 12, -1, 6));
});
assertThrows(IllegalArgumentException.class, () -> {
- s.reportActualWorkDuration(new WorkDuration(1, 12, 0, 0, 1));
+ s.reportActualWorkDuration(new WorkDuration(1, 12, 0, 0));
});
assertThrows(IllegalArgumentException.class, () -> {
- s.reportActualWorkDuration(new WorkDuration(1, 12, 8, -1, 1));
+ s.reportActualWorkDuration(new WorkDuration(1, 12, 8, -1));
});
}
}
diff --git a/core/tests/coretests/src/android/view/WindowManagerTests.java b/core/tests/coretests/src/android/view/WindowManagerTests.java
new file mode 100644
index 000000000000..c5a9d480771e
--- /dev/null
+++ b/core/tests/coretests/src/android/view/WindowManagerTests.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.view;
+
+import static com.android.window.flags.Flags.FLAG_ENABLE_WM_EXTENSIONS_FOR_ALL_FLAG;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
+
+import android.platform.test.annotations.Presubmit;
+import android.platform.test.flag.junit.SetFlagsRule;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Tests for the {@link WindowManager}.
+ *
+ * Build/Install/Run:
+ * atest FrameworksCoreTests:WindowManagerTests
+ */
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+@Presubmit
+public class WindowManagerTests {
+
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+ @Test
+ public void testHasWindowExtensionsEnabled_flagDisabled() {
+ mSetFlagsRule.disableFlags(FLAG_ENABLE_WM_EXTENSIONS_FOR_ALL_FLAG);
+
+ // Before FLAG_ENABLE_WM_EXTENSIONS_FOR_ALL_FLAG, Extensions are always bundled with AE.
+ assertEquals(isActivityEmbeddingEnableForAll(),
+ WindowManager.hasWindowExtensionsEnabled());
+ }
+
+ @Test
+ public void testHasWindowExtensionsEnabled_flagEnabled() {
+ mSetFlagsRule.enableFlags(FLAG_ENABLE_WM_EXTENSIONS_FOR_ALL_FLAG);
+
+ // Extensions should be enabled on all devices.
+ assertTrue(WindowManager.hasWindowExtensionsEnabled());
+ }
+
+ @Test
+ public void testActivityEmbeddingAvailability() {
+ assumeTrue(isActivityEmbeddingEnableForAll());
+
+ // AE can only be enabled when extensions is enabled.
+ assertTrue(WindowManager.hasWindowExtensionsEnabled());
+ }
+
+ private static boolean isActivityEmbeddingEnableForAll() {
+ return !WindowManager.ACTIVITY_EMBEDDING_GUARD_WITH_ANDROID_15;
+ }
+}
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/WindowExtensionsImpl.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/WindowExtensionsImpl.java
index 6714263ad952..97562783882c 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/WindowExtensionsImpl.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/WindowExtensionsImpl.java
@@ -16,15 +16,19 @@
package androidx.window.extensions;
-import android.app.ActivityTaskManager;
+import static android.view.WindowManager.ACTIVITY_EMBEDDING_GUARD_WITH_ANDROID_15;
+import static android.view.WindowManager.ENABLE_ACTIVITY_EMBEDDING_FOR_ANDROID_15;
+
import android.app.ActivityThread;
import android.app.Application;
+import android.app.compat.CompatChanges;
import android.content.Context;
import android.hardware.devicestate.DeviceStateManager;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
import androidx.window.common.DeviceStateManagerFoldingFeatureProducer;
import androidx.window.common.RawFoldingFeatureProducer;
import androidx.window.extensions.area.WindowAreaComponent;
@@ -38,25 +42,38 @@ import java.util.Objects;
/**
- * The reference implementation of {@link WindowExtensions} that implements the initial API version.
+ * The reference implementation of {@link WindowExtensions} that implements the latest WindowManager
+ * Extensions APIs.
*/
-public class WindowExtensionsImpl implements WindowExtensions {
+class WindowExtensionsImpl implements WindowExtensions {
private static final String TAG = "WindowExtensionsImpl";
+
+ /**
+ * The min version of the WM Extensions that must be supported in the current platform version.
+ */
+ @VisibleForTesting
+ static final int EXTENSIONS_VERSION_CURRENT_PLATFORM = 5;
+
private final Object mLock = new Object();
private volatile DeviceStateManagerFoldingFeatureProducer mFoldingFeatureProducer;
private volatile WindowLayoutComponentImpl mWindowLayoutComponent;
private volatile SplitController mSplitController;
private volatile WindowAreaComponent mWindowAreaComponent;
- public WindowExtensionsImpl() {
- Log.i(TAG, "Initializing Window Extensions.");
+ private final int mVersion = EXTENSIONS_VERSION_CURRENT_PLATFORM;
+ private final boolean mIsActivityEmbeddingEnabled;
+
+ WindowExtensionsImpl() {
+ mIsActivityEmbeddingEnabled = isActivityEmbeddingEnabled();
+ Log.i(TAG, "Initializing Window Extensions, vendor API level=" + mVersion
+ + ", activity embedding enabled=" + mIsActivityEmbeddingEnabled);
}
// TODO(b/241126279) Introduce constants to better version functionality
@Override
public int getVendorApiLevel() {
- return 5;
+ return mVersion;
}
@NonNull
@@ -74,8 +91,8 @@ public class WindowExtensionsImpl implements WindowExtensions {
if (mFoldingFeatureProducer == null) {
synchronized (mLock) {
if (mFoldingFeatureProducer == null) {
- Context context = getApplication();
- RawFoldingFeatureProducer foldingFeatureProducer =
+ final Context context = getApplication();
+ final RawFoldingFeatureProducer foldingFeatureProducer =
new RawFoldingFeatureProducer(context);
mFoldingFeatureProducer =
new DeviceStateManagerFoldingFeatureProducer(context,
@@ -91,8 +108,8 @@ public class WindowExtensionsImpl implements WindowExtensions {
if (mWindowLayoutComponent == null) {
synchronized (mLock) {
if (mWindowLayoutComponent == null) {
- Context context = getApplication();
- DeviceStateManagerFoldingFeatureProducer producer =
+ final Context context = getApplication();
+ final DeviceStateManagerFoldingFeatureProducer producer =
getFoldingFeatureProducer();
mWindowLayoutComponent = new WindowLayoutComponentImpl(context, producer);
}
@@ -102,29 +119,35 @@ public class WindowExtensionsImpl implements WindowExtensions {
}
/**
- * Returns a reference implementation of {@link WindowLayoutComponent} if available,
- * {@code null} otherwise. The implementation must match the API level reported in
- * {@link WindowExtensions#getWindowLayoutComponent()}.
+ * Returns a reference implementation of the latest {@link WindowLayoutComponent}.
+ *
+ * The implementation must match the API level reported in
+ * {@link WindowExtensions#getVendorApiLevel()}.
+ *
* @return {@link WindowLayoutComponent} OEM implementation
*/
+ @NonNull
@Override
public WindowLayoutComponent getWindowLayoutComponent() {
return getWindowLayoutComponentImpl();
}
/**
- * Returns a reference implementation of {@link ActivityEmbeddingComponent} if available,
- * {@code null} otherwise. The implementation must match the API level reported in
- * {@link WindowExtensions#getWindowLayoutComponent()}.
+ * Returns a reference implementation of the latest {@link ActivityEmbeddingComponent} if the
+ * device supports this feature, {@code null} otherwise.
+ *
+ * The implementation must match the API level reported in
+ * {@link WindowExtensions#getVendorApiLevel()}.
+ *
* @return {@link ActivityEmbeddingComponent} OEM implementation.
*/
@Nullable
+ @Override
public ActivityEmbeddingComponent getActivityEmbeddingComponent() {
+ if (!mIsActivityEmbeddingEnabled) {
+ return null;
+ }
if (mSplitController == null) {
- if (!ActivityTaskManager.supportsMultiWindow(getApplication())) {
- // Disable AE for device that doesn't support multi window.
- return null;
- }
synchronized (mLock) {
if (mSplitController == null) {
mSplitController = new SplitController(
@@ -138,21 +161,35 @@ public class WindowExtensionsImpl implements WindowExtensions {
}
/**
- * Returns a reference implementation of {@link WindowAreaComponent} if available,
- * {@code null} otherwise. The implementation must match the API level reported in
- * {@link WindowExtensions#getWindowAreaComponent()}.
+ * Returns a reference implementation of the latest {@link WindowAreaComponent}
+ *
+ * The implementation must match the API level reported in
+ * {@link WindowExtensions#getVendorApiLevel()}.
+ *
* @return {@link WindowAreaComponent} OEM implementation.
*/
+ @Nullable
+ @Override
public WindowAreaComponent getWindowAreaComponent() {
if (mWindowAreaComponent == null) {
synchronized (mLock) {
if (mWindowAreaComponent == null) {
- Context context = ActivityThread.currentApplication();
- mWindowAreaComponent =
- new WindowAreaComponentImpl(context);
+ final Context context = getApplication();
+ mWindowAreaComponent = new WindowAreaComponentImpl(context);
}
}
}
return mWindowAreaComponent;
}
+
+ @VisibleForTesting
+ static boolean isActivityEmbeddingEnabled() {
+ if (!ACTIVITY_EMBEDDING_GUARD_WITH_ANDROID_15) {
+ // Device enables it for all apps without targetSDK check.
+ // This must be true for all large screen devices.
+ return true;
+ }
+ // Use compat framework to guard the feature with targetSDK 15.
+ return CompatChanges.isChangeEnabled(ENABLE_ACTIVITY_EMBEDDING_FOR_ANDROID_15);
+ }
}
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/WindowExtensionsProvider.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/WindowExtensionsProvider.java
index f9e1f077cffc..5d4c7cbe60e4 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/WindowExtensionsProvider.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/WindowExtensionsProvider.java
@@ -16,14 +16,20 @@
package androidx.window.extensions;
-import android.annotation.NonNull;
+import android.view.WindowManager;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.window.extensions.area.WindowAreaComponent;
+import androidx.window.extensions.embedding.ActivityEmbeddingComponent;
+import androidx.window.extensions.layout.WindowLayoutComponent;
/**
* Provides the OEM implementation of {@link WindowExtensions}.
*/
public class WindowExtensionsProvider {
- private static final WindowExtensions sWindowExtensions = new WindowExtensionsImpl();
+ private static volatile WindowExtensions sWindowExtensions;
/**
* Returns the OEM implementation of {@link WindowExtensions}. This method is implemented in
@@ -33,6 +39,44 @@ public class WindowExtensionsProvider {
*/
@NonNull
public static WindowExtensions getWindowExtensions() {
+ if (sWindowExtensions == null) {
+ synchronized (WindowExtensionsProvider.class) {
+ if (sWindowExtensions == null) {
+ sWindowExtensions = WindowManager.hasWindowExtensionsEnabled()
+ ? new WindowExtensionsImpl()
+ : new DisabledWindowExtensions();
+ }
+ }
+ }
return sWindowExtensions;
}
+
+ /**
+ * The stub version to return when the WindowManager Extensions is disabled
+ * @see WindowManager#hasWindowExtensionsEnabled
+ */
+ private static class DisabledWindowExtensions implements WindowExtensions {
+ @Override
+ public int getVendorApiLevel() {
+ return 0;
+ }
+
+ @Nullable
+ @Override
+ public WindowLayoutComponent getWindowLayoutComponent() {
+ return null;
+ }
+
+ @Nullable
+ @Override
+ public ActivityEmbeddingComponent getActivityEmbeddingComponent() {
+ return null;
+ }
+
+ @Nullable
+ @Override
+ public WindowAreaComponent getWindowAreaComponent() {
+ return null;
+ }
+ }
}
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
index 1abda4287800..0cc4b1f367d8 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
@@ -88,7 +88,7 @@ import androidx.annotation.Nullable;
import androidx.window.common.CommonFoldingFeature;
import androidx.window.common.DeviceStateManagerFoldingFeatureProducer;
import androidx.window.common.EmptyLifecycleCallbacksAdapter;
-import androidx.window.extensions.WindowExtensionsImpl;
+import androidx.window.extensions.WindowExtensions;
import androidx.window.extensions.core.util.function.Consumer;
import androidx.window.extensions.core.util.function.Function;
import androidx.window.extensions.core.util.function.Predicate;
@@ -410,7 +410,7 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
* Registers the split organizer callback to notify about changes to active splits.
*
* @deprecated Use {@link #setSplitInfoCallback(Consumer)} starting with
- * {@link WindowExtensionsImpl#getVendorApiLevel()} 2.
+ * {@link WindowExtensions#getVendorApiLevel()} 2.
*/
@Deprecated
@Override
@@ -423,7 +423,7 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
/**
* Registers the split organizer callback to notify about changes to active splits.
*
- * @since {@link WindowExtensionsImpl#getVendorApiLevel()} 2
+ * @since {@link WindowExtensions#getVendorApiLevel()} 2
*/
@Override
public void setSplitInfoCallback(Consumer<List<SplitInfo>> callback) {
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/sidecar/SidecarProvider.java b/libs/WindowManager/Jetpack/src/androidx/window/sidecar/SidecarProvider.java
index 62959b7b95e9..686a31b6be04 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/sidecar/SidecarProvider.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/sidecar/SidecarProvider.java
@@ -17,25 +17,48 @@
package androidx.window.sidecar;
import android.content.Context;
+import android.view.WindowManager;
+
+import androidx.annotation.Nullable;
/**
* Provider class that will instantiate the library implementation. It must be included in the
* vendor library, and the vendor implementation must match the signature of this class.
*/
public class SidecarProvider {
+
+ private static volatile Boolean sIsWindowExtensionsEnabled;
+
/**
* Provide a simple implementation of {@link SidecarInterface} that can be replaced by
* an OEM by overriding this method.
*/
+ @Nullable
public static SidecarInterface getSidecarImpl(Context context) {
- return new SampleSidecarImpl(context.getApplicationContext());
+ return isWindowExtensionsEnabled()
+ ? new SampleSidecarImpl(context.getApplicationContext())
+ : null;
}
/**
* The support library will use this method to check API version compatibility.
* @return API version string in MAJOR.MINOR.PATCH-description format.
*/
+ @Nullable
public static String getApiVersion() {
- return "1.0.0-reference";
+ return isWindowExtensionsEnabled()
+ ? "1.0.0-reference"
+ : null;
+ }
+
+ private static boolean isWindowExtensionsEnabled() {
+ if (sIsWindowExtensionsEnabled == null) {
+ synchronized (SidecarProvider.class) {
+ if (sIsWindowExtensionsEnabled == null) {
+ sIsWindowExtensionsEnabled = WindowManager.hasWindowExtensionsEnabled();
+ }
+ }
+ }
+ return sIsWindowExtensionsEnabled;
}
}
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/sidecar/StubSidecar.java b/libs/WindowManager/Jetpack/src/androidx/window/sidecar/StubSidecar.java
index b9c808a6569b..46c1f3ba4691 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/sidecar/StubSidecar.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/sidecar/StubSidecar.java
@@ -17,6 +17,7 @@
package androidx.window.sidecar;
import android.os.IBinder;
+import android.util.Log;
import androidx.annotation.NonNull;
@@ -29,6 +30,8 @@ import java.util.Set;
*/
abstract class StubSidecar implements SidecarInterface {
+ private static final String TAG = "WindowManagerSidecar";
+
private SidecarCallback mSidecarCallback;
final Set<IBinder> mWindowLayoutChangeListenerTokens = new HashSet<>();
private boolean mDeviceStateChangeListenerRegistered;
@@ -61,14 +64,22 @@ abstract class StubSidecar implements SidecarInterface {
void updateDeviceState(SidecarDeviceState newState) {
if (this.mSidecarCallback != null) {
- mSidecarCallback.onDeviceStateChanged(newState);
+ try {
+ mSidecarCallback.onDeviceStateChanged(newState);
+ } catch (AbstractMethodError e) {
+ Log.e(TAG, "App is using an outdated Window Jetpack library", e);
+ }
}
}
void updateWindowLayout(@NonNull IBinder windowToken,
@NonNull SidecarWindowLayoutInfo newLayout) {
if (this.mSidecarCallback != null) {
- mSidecarCallback.onWindowLayoutChanged(windowToken, newLayout);
+ try {
+ mSidecarCallback.onWindowLayoutChanged(windowToken, newLayout);
+ } catch (AbstractMethodError e) {
+ Log.e(TAG, "App is using an outdated Window Jetpack library", e);
+ }
}
}
diff --git a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/WindowExtensionsTest.java b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/WindowExtensionsTest.java
index f471af052bf2..4267749dfa6b 100644
--- a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/WindowExtensionsTest.java
+++ b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/WindowExtensionsTest.java
@@ -16,12 +16,15 @@
package androidx.window.extensions;
-import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+import static androidx.window.extensions.WindowExtensionsImpl.EXTENSIONS_VERSION_CURRENT_PLATFORM;
import static com.google.common.truth.Truth.assertThat;
-import android.app.ActivityTaskManager;
+import static org.junit.Assume.assumeFalse;
+import static org.junit.Assume.assumeTrue;
+
import android.platform.test.annotations.Presubmit;
+import android.view.WindowManager;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
@@ -42,25 +45,61 @@ import org.junit.runner.RunWith;
@SmallTest
@RunWith(AndroidJUnit4.class)
public class WindowExtensionsTest {
+
private WindowExtensions mExtensions;
+ private int mVersion;
@Before
public void setUp() {
mExtensions = WindowExtensionsProvider.getWindowExtensions();
+ mVersion = mExtensions.getVendorApiLevel();
+ }
+
+ @Test
+ public void testGetVendorApiLevel_extensionsEnabled_matchesCurrentVersion() {
+ assumeTrue(WindowManager.hasWindowExtensionsEnabled());
+ assertThat(mVersion).isEqualTo(EXTENSIONS_VERSION_CURRENT_PLATFORM);
}
@Test
- public void testGetWindowLayoutComponent() {
+ public void testGetVendorApiLevel_extensionsDisabled_returnsZero() {
+ assumeFalse(WindowManager.hasWindowExtensionsEnabled());
+ assertThat(mVersion).isEqualTo(0);
+ }
+
+ @Test
+ public void testGetWindowLayoutComponent_extensionsEnabled_returnsImplementation() {
+ assumeTrue(WindowManager.hasWindowExtensionsEnabled());
assertThat(mExtensions.getWindowLayoutComponent()).isNotNull();
}
@Test
- public void testGetActivityEmbeddingComponent() {
- if (ActivityTaskManager.supportsMultiWindow(getInstrumentation().getContext())) {
- assertThat(mExtensions.getActivityEmbeddingComponent()).isNotNull();
- } else {
- assertThat(mExtensions.getActivityEmbeddingComponent()).isNull();
- }
+ public void testGetWindowLayoutComponent_extensionsDisabled_returnsNull() {
+ assumeFalse(WindowManager.hasWindowExtensionsEnabled());
+ assertThat(mExtensions.getWindowLayoutComponent()).isNull();
+ }
+ @Test
+ public void testGetActivityEmbeddingComponent_featureDisabled_returnsNull() {
+ assumeFalse(WindowExtensionsImpl.isActivityEmbeddingEnabled());
+ assertThat(mExtensions.getActivityEmbeddingComponent()).isNull();
+ }
+
+ @Test
+ public void testGetActivityEmbeddingComponent_featureEnabled_returnsImplementation() {
+ assumeTrue(WindowExtensionsImpl.isActivityEmbeddingEnabled());
+ assertThat(mExtensions.getActivityEmbeddingComponent()).isNotNull();
+ }
+
+ @Test
+ public void testGetWindowAreaComponent_extensionsEnabled_returnsImplementation() {
+ assumeTrue(WindowManager.hasWindowExtensionsEnabled());
+ assertThat(mExtensions.getWindowAreaComponent()).isNotNull();
+ }
+
+ @Test
+ public void testGetWindowAreaComponent_extensionsDisabled_returnsNull() {
+ assumeFalse(WindowManager.hasWindowExtensionsEnabled());
+ assertThat(mExtensions.getWindowAreaComponent()).isNull();
}
@Test
diff --git a/libs/WindowManager/Shell/res/drawable/bubble_drop_target_background.xml b/libs/WindowManager/Shell/res/drawable/bubble_drop_target_background.xml
new file mode 100644
index 000000000000..468b5c2a712f
--- /dev/null
+++ b/libs/WindowManager/Shell/res/drawable/bubble_drop_target_background.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2024 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+<shape android:shape="rectangle"
+ xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="#bf309fb5" />
+ <corners android:radius="@dimen/bubble_bar_expanded_view_corner_radius" />
+ <stroke android:width="1dp" android:color="#A00080FF"/>
+</shape>
diff --git a/libs/WindowManager/Shell/res/layout/bubble_bar_drop_target.xml b/libs/WindowManager/Shell/res/layout/bubble_bar_drop_target.xml
new file mode 100644
index 000000000000..9d29f7da8797
--- /dev/null
+++ b/libs/WindowManager/Shell/res/layout/bubble_bar_drop_target.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ Copyright (C) 2024 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+<View xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/bubble_bar_drop_target"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:background="@drawable/bubble_drop_target_background"
+ android:elevation="@dimen/bubble_elevation"
+ android:importantForAccessibility="no" />
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java
index b215b616dcce..f4a401c64a31 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java
@@ -855,4 +855,24 @@ public class BubblePositioner {
public int getBubbleBarExpandedViewPadding() {
return mExpandedViewPadding;
}
+
+ /**
+ * Get bubble bar expanded view bounds on screen
+ */
+ public void getBubbleBarExpandedViewBounds(boolean onLeft, boolean isOverflowExpanded,
+ Rect out) {
+ final int padding = getBubbleBarExpandedViewPadding();
+ final int width = getExpandedViewWidthForBubbleBar(isOverflowExpanded);
+ final int height = getExpandedViewHeightForBubbleBar(isOverflowExpanded);
+
+ out.set(0, 0, width, height);
+ int left;
+ if (onLeft) {
+ left = getInsets().left + padding;
+ } else {
+ left = getAvailableRect().width() - width - padding;
+ }
+ int top = getExpandedViewBottomForBubbleBar() - height;
+ out.offsetTo(left, top);
+ }
}
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 6524c96fb21a..690868208b91 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
@@ -1025,6 +1025,7 @@ public class BubbleStackView extends FrameLayout
WindowManager.class)));
onDisplaySizeChanged();
mExpandedAnimationController.updateResources();
+ mExpandedAnimationController.onOrientationChanged();
mStackAnimationController.updateResources();
mBubbleOverflow.updateResources();
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 7798aa753aa2..512c9d133d08 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
@@ -614,6 +614,14 @@ public class ExpandedAnimationController
}
}
+ /**
+ * Call to update the bubble positions after an orientation change.
+ */
+ public void onOrientationChanged() {
+ if (mLayout == null) return;
+ updateBubblePositions();
+ }
+
private void updateBubblePositions() {
if (mAnimatingExpand || mAnimatingCollapse) {
return;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/PhysicsAnimationLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/PhysicsAnimationLayout.java
index ed00da848a14..bfddff0f72e3 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/PhysicsAnimationLayout.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/PhysicsAnimationLayout.java
@@ -378,6 +378,8 @@ public class PhysicsAnimationLayout extends FrameLayout {
}
final int oldIndex = indexOfChild(view);
+ if (oldIndex == index) return;
+
super.removeView(view);
if (view.getParent() != null) {
// View still has a parent. This could have been added as a transient view.
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarDropTargetController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarDropTargetController.kt
new file mode 100644
index 000000000000..55ec6cdfe007
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarDropTargetController.kt
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.wm.shell.bubbles.bar
+
+import android.content.Context
+import android.graphics.Rect
+import android.view.LayoutInflater
+import android.view.View
+import android.widget.FrameLayout
+import android.widget.FrameLayout.LayoutParams
+import com.android.wm.shell.R
+import com.android.wm.shell.bubbles.BubblePositioner
+import com.android.wm.shell.common.bubbles.BubbleBarLocation
+
+/** Controller to show/hide drop target when bubble bar expanded view is being dragged */
+class BubbleBarDropTargetController(
+ val context: Context,
+ val container: FrameLayout,
+ val positioner: BubblePositioner
+) {
+
+ private var dropTargetView: View? = null
+ private val tempRect: Rect by lazy(LazyThreadSafetyMode.NONE) { Rect() }
+
+ /**
+ * Show drop target at [location] with animation.
+ *
+ * If the drop target is currently visible, animates it out first, before showing it at the
+ * supplied location.
+ */
+ fun show(location: BubbleBarLocation) {
+ val targetView = dropTargetView ?: createView().also { dropTargetView = it }
+ if (targetView.alpha > 0) {
+ targetView.animateOut {
+ targetView.updateBounds(location)
+ targetView.animateIn()
+ }
+ } else {
+ targetView.updateBounds(location)
+ targetView.animateIn()
+ }
+ }
+
+ /**
+ * Set the view hidden or not
+ *
+ * Requires the drop target to be first shown by calling [show]. Otherwise does not do anything.
+ */
+ fun setHidden(hidden: Boolean) {
+ val targetView = dropTargetView ?: return
+ if (hidden) {
+ targetView.animateOut()
+ } else {
+ targetView.animateIn()
+ }
+ }
+
+ /** Remove the drop target if it is was shown. */
+ fun dismiss() {
+ dropTargetView?.animateOut {
+ dropTargetView?.let { container.removeView(it) }
+ dropTargetView = null
+ }
+ }
+
+ private fun createView(): View {
+ return LayoutInflater.from(context)
+ .inflate(R.layout.bubble_bar_drop_target, container, false /* attachToRoot */)
+ .also { view: View ->
+ view.alpha = 0f
+ // Add at index 0 to ensure it does not cover the bubble
+ container.addView(view, 0)
+ }
+ }
+
+ private fun getBounds(onLeft: Boolean, out: Rect) {
+ positioner.getBubbleBarExpandedViewBounds(onLeft, false /* isOverflowExpanded */, out)
+ val centerX = out.centerX()
+ val centerY = out.centerY()
+ out.scale(DROP_TARGET_SCALE)
+ // Move rect center back to the same position as before scale
+ out.offset(centerX - out.centerX(), centerY - out.centerY())
+ }
+
+ private fun View.updateBounds(location: BubbleBarLocation) {
+ getBounds(location.isOnLeft(isLayoutRtl), tempRect)
+ val lp = layoutParams as LayoutParams
+ lp.width = tempRect.width()
+ lp.height = tempRect.height()
+ layoutParams = lp
+ x = tempRect.left.toFloat()
+ y = tempRect.top.toFloat()
+ }
+
+ private fun View.animateIn() {
+ animate().alpha(1f).setDuration(DROP_TARGET_ALPHA_IN_DURATION).start()
+ }
+
+ private fun View.animateOut(endAction: Runnable? = null) {
+ animate()
+ .alpha(0f)
+ .setDuration(DROP_TARGET_ALPHA_OUT_DURATION)
+ .withEndAction(endAction)
+ .start()
+ }
+
+ companion object {
+ private const val DROP_TARGET_ALPHA_IN_DURATION = 150L
+ private const val DROP_TARGET_ALPHA_OUT_DURATION = 100L
+ private const val DROP_TARGET_SCALE = 0.9f
+ }
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewDragController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewDragController.kt
index b5b8a81c8886..ad97a2411ae0 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewDragController.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewDragController.kt
@@ -90,15 +90,26 @@ class BubbleBarExpandedViewDragController(
/**
* Bubble bar [BubbleBarLocation] has changed as a result of dragging the expanded view.
*
- * Triggered when drag gesture passes the middle of the screen and before touch up.
- * Can be triggered multiple times per gesture.
+ * Triggered when drag gesture passes the middle of the screen and before touch up. Can be
+ * triggered multiple times per gesture.
*
* @param location new location of the bubble bar as a result of the ongoing drag operation
*/
fun onLocationChanged(location: BubbleBarLocation)
- /** Expanded view has been released in the dismiss target */
- fun onReleasedInDismiss()
+ /**
+ * Called when bubble bar is moved into or out of the dismiss target
+ *
+ * @param isStuck `true` if view is dragged inside dismiss target
+ */
+ fun onStuckToDismissChanged(isStuck: Boolean)
+
+ /**
+ * Bubble bar was released
+ *
+ * @param inDismiss `true` if view was release in dismiss target
+ */
+ fun onReleased(inDismiss: Boolean)
}
private inner class HandleDragListener : RelativeTouchListener() {
@@ -177,6 +188,7 @@ class BubbleBarExpandedViewDragController(
private fun finishDrag() {
if (!isStuckToDismiss) {
animationHelper.animateToRestPosition()
+ dragListener.onReleased(inDismiss = false)
dismissView.hide()
}
isMoving = false
@@ -189,6 +201,7 @@ class BubbleBarExpandedViewDragController(
draggedObject: MagnetizedObject<*>
) {
isStuckToDismiss = true
+ dragListener.onStuckToDismissChanged(isStuck = true)
}
override fun onUnstuckFromTarget(
@@ -200,13 +213,14 @@ class BubbleBarExpandedViewDragController(
) {
isStuckToDismiss = false
animationHelper.animateUnstuckFromDismissView(target)
+ dragListener.onStuckToDismissChanged(isStuck = false)
}
override fun onReleasedInTarget(
target: MagnetizedObject.MagneticTarget,
draggedObject: MagnetizedObject<*>
) {
- dragListener.onReleasedInDismiss()
+ dragListener.onReleased(inDismiss = true)
dismissView.hide()
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java
index 3fb9f63c0506..88ccc9267c41 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java
@@ -35,7 +35,6 @@ import android.widget.FrameLayout;
import androidx.annotation.NonNull;
-import com.android.wm.shell.R;
import com.android.wm.shell.bubbles.Bubble;
import com.android.wm.shell.bubbles.BubbleController;
import com.android.wm.shell.bubbles.BubbleData;
@@ -72,6 +71,7 @@ public class BubbleBarLayerView extends FrameLayout
private final BubbleBarAnimationHelper mAnimationHelper;
private final BubbleEducationViewController mEducationViewController;
private final View mScrimView;
+ private final BubbleBarDropTargetController mDropTargetController;
@Nullable
private BubbleViewProvider mExpandedBubble;
@@ -116,6 +116,8 @@ public class BubbleBarLayerView extends FrameLayout
setUpDismissView();
+ mDropTargetController = new BubbleBarDropTargetController(context, this, mPositioner);
+
setOnClickListener(view -> hideMenuOrCollapse());
}
@@ -205,17 +207,7 @@ public class BubbleBarLayerView extends FrameLayout
}
});
- DragListener dragListener = new DragListener() {
- @Override
- public void onLocationChanged(@NonNull BubbleBarLocation location) {
- mBubbleController.setBubbleBarLocation(location);
- }
-
- @Override
- public void onReleasedInDismiss() {
- mBubbleController.dismissBubble(mExpandedBubble.getKey(), DISMISS_USER_GESTURE);
- }
- };
+ DragListener dragListener = createDragListener();
mDragController = new BubbleBarExpandedViewDragController(
mExpandedView,
mDismissView,
@@ -330,10 +322,7 @@ public class BubbleBarLayerView extends FrameLayout
}
mDismissView = new DismissView(getContext());
DismissViewUtils.setup(mDismissView);
- int elevation = getResources().getDimensionPixelSize(R.dimen.bubble_elevation);
-
addView(mDismissView);
- mDismissView.setElevation(elevation);
}
/** Hides the current modal education/menu view, expanded view or collapses the bubble stack */
@@ -349,21 +338,16 @@ public class BubbleBarLayerView extends FrameLayout
/** Updates the expanded view size and position. */
private void updateExpandedView() {
- if (mExpandedView == null) return;
+ if (mExpandedView == null || mExpandedBubble == null) return;
boolean isOverflowExpanded = mExpandedBubble.getKey().equals(BubbleOverflow.KEY);
- final int padding = mPositioner.getBubbleBarExpandedViewPadding();
- final int width = mPositioner.getExpandedViewWidthForBubbleBar(isOverflowExpanded);
- final int height = mPositioner.getExpandedViewHeightForBubbleBar(isOverflowExpanded);
+ mPositioner.getBubbleBarExpandedViewBounds(mPositioner.isBubbleBarOnLeft(),
+ isOverflowExpanded, mTempRect);
FrameLayout.LayoutParams lp = (LayoutParams) mExpandedView.getLayoutParams();
- lp.width = width;
- lp.height = height;
+ lp.width = mTempRect.width();
+ lp.height = mTempRect.height();
mExpandedView.setLayoutParams(lp);
- if (mPositioner.isBubbleBarOnLeft()) {
- mExpandedView.setX(mPositioner.getInsets().left + padding);
- } else {
- mExpandedView.setX(mPositioner.getAvailableRect().width() - width - padding);
- }
- mExpandedView.setY(mPositioner.getExpandedViewBottomForBubbleBar() - height);
+ mExpandedView.setX(mTempRect.left);
+ mExpandedView.setY(mTempRect.top);
mExpandedView.updateLocation();
}
@@ -392,4 +376,27 @@ public class BubbleBarLayerView extends FrameLayout
outRegion.op(mTempRect, Region.Op.UNION);
}
}
+
+ private DragListener createDragListener() {
+ return new DragListener() {
+ @Override
+ public void onLocationChanged(@NonNull BubbleBarLocation location) {
+ mBubbleController.setBubbleBarLocation(location);
+ mDropTargetController.show(location);
+ }
+
+ @Override
+ public void onStuckToDismissChanged(boolean isStuck) {
+ mDropTargetController.setHidden(isStuck);
+ }
+
+ @Override
+ public void onReleased(boolean inDismiss) {
+ mDropTargetController.dismiss();
+ if (inDismiss && mExpandedBubble != null) {
+ mBubbleController.dismissBubble(mExpandedBubble.getKey(), DISMISS_USER_GESTURE);
+ }
+ }
+ };
+ }
}
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 41890df9a4ee..d5434e3ad3d0 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
@@ -1593,8 +1593,13 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
}
protected void grantFocusToPosition(boolean leftOrTop) {
- grantFocusToStage(mSideStagePosition == SPLIT_POSITION_BOTTOM_OR_RIGHT
- ? getMainStagePosition() : getSideStagePosition());
+ int stageToFocus;
+ if (mSideStagePosition == SPLIT_POSITION_BOTTOM_OR_RIGHT) {
+ stageToFocus = leftOrTop ? getMainStagePosition() : getSideStagePosition();
+ } else {
+ stageToFocus = leftOrTop ? getSideStagePosition() : getMainStagePosition();
+ }
+ grantFocusToStage(stageToFocus);
}
private void clearRequestIfPresented() {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
index d83e6b651448..ccd0b2df8cf1 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
@@ -496,7 +496,6 @@ public class Transitions implements RemoteCallable<Transitions>,
if (mode == TRANSIT_TO_FRONT) {
// When the window is moved to front, make sure the crop is updated to prevent it
// from using the old crop.
- t.setPosition(leash, change.getEndRelOffset().x, change.getEndRelOffset().y);
t.setWindowCrop(leash, change.getEndAbsBounds().width(),
change.getEndAbsBounds().height());
}
@@ -508,10 +507,6 @@ public class Transitions implements RemoteCallable<Transitions>,
t.setMatrix(leash, 1, 0, 0, 1);
t.setAlpha(leash, 1.f);
t.setPosition(leash, change.getEndRelOffset().x, change.getEndRelOffset().y);
- t.setWindowCrop(leash, change.getEndAbsBounds().width(),
- change.getEndAbsBounds().height());
- } else {
- t.hide(leash);
}
continue;
}
diff --git a/media/java/android/media/IMediaRouter2Manager.aidl b/media/java/android/media/IMediaRouter2Manager.aidl
index bb31859dabdb..21908b2ca2e0 100644
--- a/media/java/android/media/IMediaRouter2Manager.aidl
+++ b/media/java/android/media/IMediaRouter2Manager.aidl
@@ -35,4 +35,5 @@ oneway interface IMediaRouter2Manager {
in @nullable RouteListingPreference routeListingPreference);
void notifyRoutesUpdated(in List<MediaRoute2Info> routes);
void notifyRequestFailed(int requestId, int reason);
+ void invalidateInstance();
}
diff --git a/media/java/android/media/MediaFormat.java b/media/java/android/media/MediaFormat.java
index 7b83842a9fb2..cd0654ceb348 100644
--- a/media/java/android/media/MediaFormat.java
+++ b/media/java/android/media/MediaFormat.java
@@ -17,6 +17,7 @@
package android.media;
import static android.media.codec.Flags.FLAG_IN_PROCESS_SW_AUDIO_CODEC;
+import static android.media.codec.Flags.FLAG_REGION_OF_INTEREST;
import static com.android.media.codec.flags.Flags.FLAG_CODEC_IMPORTANCE;
import static com.android.media.codec.flags.Flags.FLAG_LARGE_AUDIO_FRAME;
@@ -26,6 +27,8 @@ import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.compat.annotation.UnsupportedAppUsage;
+import android.graphics.Rect;
+import android.text.TextUtils;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -34,6 +37,7 @@ import java.nio.ByteOrder;
import java.util.AbstractSet;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@@ -1769,6 +1773,67 @@ public final class MediaFormat {
@FlaggedApi(FLAG_IN_PROCESS_SW_AUDIO_CODEC)
public static final String KEY_SECURITY_MODEL = "security-model";
+ /**
+ * QpOffsetRect constitutes the metadata required for encoding a region of interest in an
+ * image or a video frame. The region of interest is represented by a rectangle. The four
+ * integer coordinates of the rectangle are stored in fields left, top, right, bottom.
+ * Note that the right and bottom coordinates are exclusive.
+ * This is paired with a suggestive qp offset information that is to be used during encoding
+ * of the blocks belonging to the to the box.
+ */
+ @FlaggedApi(FLAG_REGION_OF_INTEREST)
+ public static final class QpOffsetRect {
+ private Rect mContour;
+ private int mQpOffset;
+
+ /**
+ * Create a new region of interest with the specified coordinates and qpOffset. Note: no
+ * range checking is performed, so the caller must ensure that left >= 0, left <= right,
+ * top >= 0 and top <= bottom. Note that the right and bottom coordinates are exclusive.
+ *
+ * @param contour Rectangle specifying the region of interest
+ * @param qpOffset qpOffset to be used for the blocks in the specified rectangle
+ */
+ public QpOffsetRect(@NonNull Rect contour, int qpOffset) {
+ mContour = contour;
+ mQpOffset = qpOffset;
+ }
+
+ /**
+ * Update the region of interest information with the specified coordinates and qpOffset
+ *
+ * @param contour Rectangle specifying the region of interest
+ * @param qpOffset qpOffset to be used for the blocks in the specified rectangle
+ */
+ public void set(@NonNull Rect contour, int qpOffset) {
+ mContour = contour;
+ mQpOffset = qpOffset;
+ }
+
+ /**
+ * @return Return a string representation of qpOffsetRect in a compact form.
+ * Helper function to insert key {@link #PARAMETER_KEY_QP_OFFSET_RECTS} in MediaFormat
+ */
+ @NonNull
+ public String flattenToString() {
+ return TextUtils.formatSimple("%d,%d-%d,%d=%d;", mContour.top, mContour.left,
+ mContour.bottom, mContour.right, mQpOffset);
+ }
+
+ /**
+ * @return Return a string representation of qpOffsetRect in a compact form.
+ * Helper function to insert key {@link #PARAMETER_KEY_QP_OFFSET_RECTS} in MediaFormat
+ */
+ @NonNull
+ public static String flattenToString(@NonNull List<QpOffsetRect> qpOffsetRects) {
+ StringBuilder builder = new StringBuilder();
+ for (QpOffsetRect qpOffsetRect : qpOffsetRects) {
+ builder.append(qpOffsetRect.flattenToString());
+ }
+ return builder.toString();
+ }
+ }
+
/* package private */ MediaFormat(@NonNull Map<String, Object> map) {
mMap = map;
}
diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java
index 4d5a33d99b64..e0258ba4f61d 100644
--- a/media/java/android/media/MediaRouter2.java
+++ b/media/java/android/media/MediaRouter2.java
@@ -18,7 +18,6 @@ package android.media;
import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
import static com.android.media.flags.Flags.FLAG_ENABLE_BUILT_IN_SPEAKER_ROUTE_SUITABILITY_STATUSES;
-import static com.android.media.flags.Flags.FLAG_ENABLE_CROSS_USER_ROUTING_IN_MEDIA_ROUTER2;
import static com.android.media.flags.Flags.FLAG_ENABLE_GET_TRANSFERABLE_ROUTES;
import static com.android.media.flags.Flags.FLAG_ENABLE_PRIVILEGED_ROUTING_FOR_MEDIA_ROUTING_CONTROL;
import static com.android.media.flags.Flags.FLAG_ENABLE_RLP_CALLBACKS_IN_MEDIA_ROUTER2;
@@ -33,7 +32,9 @@ import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.TestApi;
+import android.app.AppOpsManager;
import android.content.Context;
+import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -134,6 +135,8 @@ public final class MediaRouter2 {
private record PackageNameUserHandlePair(String packageName, UserHandle user) {}
+ private record InstanceInvalidatedCallbackRecord(Executor executor, Runnable runnable) {}
+
@GuardedBy("sSystemRouterLock")
private static final Map<PackageNameUserHandlePair, MediaRouter2> sAppToProxyRouterMap =
new ArrayMap<>();
@@ -247,22 +250,34 @@ public final class MediaRouter2 {
* <p>Calls to {@link #setOnGetControllerHintsListener} are ignored.
* </ul>
*
+ * <p>Callers that only hold the revocable form of {@link
+ * Manifest.permission#MEDIA_ROUTING_CONTROL} must use {@link #getInstance(Context, String,
+ * Executor, Runnable)} instead of this method.
+ *
* @param clientPackageName the package name of the app to control
* @return a proxy MediaRouter2 instance if {@code clientPackageName} exists or {@code null}.
+ * @throws IllegalStateException if the caller only holds a revocable version of {@link
+ * Manifest.permission#MEDIA_ROUTING_CONTROL}.
+ * @hide
*/
- @FlaggedApi(FLAG_ENABLE_CROSS_USER_ROUTING_IN_MEDIA_ROUTER2)
+ @SuppressWarnings("RequiresPermission")
@RequiresPermission(
anyOf = {
Manifest.permission.MEDIA_CONTENT_CONTROL,
Manifest.permission.MEDIA_ROUTING_CONTROL
})
+ @SystemApi
@Nullable
public static MediaRouter2 getInstance(
@NonNull Context context, @NonNull String clientPackageName) {
// Capturing the IAE here to not break nullability.
try {
return findOrCreateProxyInstanceForCallingUser(
- context, clientPackageName, context.getUser());
+ context,
+ clientPackageName,
+ context.getUser(),
+ /* executor */ null,
+ /* onInstanceInvalidatedListener */ null);
} catch (IllegalArgumentException ex) {
Log.e(TAG, "Package " + clientPackageName + " not found. Ignoring.");
return null;
@@ -271,6 +286,72 @@ public final class MediaRouter2 {
/**
* Returns a proxy MediaRouter2 instance that allows you to control the routing of an app
+ * specified by {@code clientPackageName}. Returns {@code null} if the specified package name
+ * does not exist.
+ *
+ * <p>Proxy MediaRouter2 instances operate differently than regular MediaRouter2 instances:
+ *
+ * <ul>
+ * <li>
+ * <p>{@link #registerRouteCallback} ignores any {@link RouteDiscoveryPreference discovery
+ * preference} passed by a proxy router. Use {@link RouteDiscoveryPreference#EMPTY} when
+ * setting a route callback.
+ * <li>
+ * <p>Methods returning non-system {@link RoutingController controllers} always return new
+ * instances with the latest data. Do not attempt to compare or store them. Instead, use
+ * {@link #getController(String)} or {@link #getControllers()} to query the most
+ * up-to-date state.
+ * <li>
+ * <p>Calls to {@link #setOnGetControllerHintsListener} are ignored.
+ * </ul>
+ *
+ * <p>Use this method when you only hold a revocable version of {@link
+ * Manifest.permission#MEDIA_ROUTING_CONTROL} (e.g. acquired via the {@link AppOpsManager}).
+ * Otherwise, use {@link #getInstance(Context, String)}.
+ *
+ * <p>{@code onInstanceInvalidatedListener} is called when the instance is invalidated because
+ * the calling app has lost {@link Manifest.permission#MEDIA_ROUTING_CONTROL} and does not hold
+ * {@link Manifest.permission#MEDIA_CONTENT_CONTROL}. Do not use the invalidated instance after
+ * receiving this callback, as the system will ignore all operations. Call {@link
+ * #getInstance(Context, String, Executor, Runnable)} again after reacquiring the relevant
+ * permissions.
+ *
+ * @param context The {@link Context} of the caller.
+ * @param clientPackageName The package name of the app you want to control the routing of.
+ * @param executor The {@link Executor} on which to invoke {@code
+ * onInstanceInvalidatedListener}.
+ * @param onInstanceInvalidatedListener Callback for when the {@link MediaRouter2} instance is
+ * invalidated due to lost permissions.
+ * @throws IllegalArgumentException if {@code clientPackageName} does not exist in the calling
+ * user.
+ */
+ @SuppressWarnings("RequiresPermission")
+ @FlaggedApi(FLAG_ENABLE_PRIVILEGED_ROUTING_FOR_MEDIA_ROUTING_CONTROL)
+ @RequiresPermission(
+ anyOf = {
+ Manifest.permission.MEDIA_CONTENT_CONTROL,
+ Manifest.permission.MEDIA_ROUTING_CONTROL
+ })
+ @NonNull
+ public static MediaRouter2 getInstance(
+ @NonNull Context context,
+ @NonNull String clientPackageName,
+ @NonNull Executor executor,
+ @NonNull Runnable onInstanceInvalidatedListener) {
+ Objects.requireNonNull(executor, "Executor must not be null");
+ Objects.requireNonNull(
+ onInstanceInvalidatedListener, "onInstanceInvalidatedListener must not be null.");
+
+ return findOrCreateProxyInstanceForCallingUser(
+ context,
+ clientPackageName,
+ context.getUser(),
+ executor,
+ onInstanceInvalidatedListener);
+ }
+
+ /**
+ * Returns a proxy MediaRouter2 instance that allows you to control the routing of an app
* specified by {@code clientPackageName} and {@code user}.
*
* <p>Proxy MediaRouter2 instances operate differently than regular MediaRouter2 instances:
@@ -308,7 +389,12 @@ public final class MediaRouter2 {
@NonNull
public static MediaRouter2 getInstance(
@NonNull Context context, @NonNull String clientPackageName, @NonNull UserHandle user) {
- return findOrCreateProxyInstanceForCallingUser(context, clientPackageName, user);
+ return findOrCreateProxyInstanceForCallingUser(
+ context,
+ clientPackageName,
+ user,
+ /* executor */ null,
+ /* onInstanceInvalidatedListener */ null);
}
/**
@@ -320,7 +406,11 @@ public final class MediaRouter2 {
*/
@NonNull
private static MediaRouter2 findOrCreateProxyInstanceForCallingUser(
- Context context, String clientPackageName, UserHandle user) {
+ Context context,
+ String clientPackageName,
+ UserHandle user,
+ @Nullable Executor executor,
+ @Nullable Runnable onInstanceInvalidatedListener) {
Objects.requireNonNull(context, "context must not be null");
Objects.requireNonNull(user, "user must not be null");
@@ -328,6 +418,14 @@ public final class MediaRouter2 {
throw new IllegalArgumentException("clientPackageName must not be null or empty");
}
+ if (executor == null || onInstanceInvalidatedListener == null) {
+ if (checkCallerHasOnlyRevocablePermissions(context)) {
+ throw new IllegalStateException(
+ "Use getInstance(Context, String, Executor, Runnable) to obtain a proxy"
+ + " MediaRouter2 instance.");
+ }
+ }
+
PackageNameUserHandlePair key = new PackageNameUserHandlePair(clientPackageName, user);
synchronized (sSystemRouterLock) {
@@ -339,10 +437,32 @@ public final class MediaRouter2 {
((ProxyMediaRouter2Impl) instance.mImpl).registerProxyRouter();
sAppToProxyRouterMap.put(key, instance);
}
+ ((ProxyMediaRouter2Impl) instance.mImpl)
+ .registerInstanceInvalidatedCallback(executor, onInstanceInvalidatedListener);
return instance;
}
}
+ private static boolean checkCallerHasOnlyRevocablePermissions(@NonNull Context context) {
+ boolean hasMediaContentControl =
+ context.checkSelfPermission(Manifest.permission.MEDIA_CONTENT_CONTROL)
+ == PackageManager.PERMISSION_GRANTED;
+ boolean hasRegularMediaRoutingControl =
+ context.checkSelfPermission(Manifest.permission.MEDIA_ROUTING_CONTROL)
+ == PackageManager.PERMISSION_GRANTED;
+ AppOpsManager appOpsManager = context.getSystemService(AppOpsManager.class);
+ boolean hasAppOpMediaRoutingControl =
+ appOpsManager.unsafeCheckOp(
+ AppOpsManager.OPSTR_MEDIA_ROUTING_CONTROL,
+ context.getApplicationInfo().uid,
+ context.getOpPackageName())
+ == AppOpsManager.MODE_ALLOWED;
+
+ return !hasMediaContentControl
+ && !hasRegularMediaRoutingControl
+ && hasAppOpMediaRoutingControl;
+ }
+
/**
* Starts scanning remote routes.
*
@@ -2425,6 +2545,10 @@ public final class MediaRouter2 {
@NonNull private final UserHandle mClientUser;
private final AtomicBoolean mIsScanning = new AtomicBoolean(/* initialValue= */ false);
+ @GuardedBy("mLock")
+ private final List<InstanceInvalidatedCallbackRecord> mInstanceInvalidatedCallbackRecords =
+ new ArrayList<>();
+
ProxyMediaRouter2Impl(
@NonNull Context context,
@NonNull String clientPackageName,
@@ -2447,6 +2571,21 @@ public final class MediaRouter2 {
}
}
+ public void registerInstanceInvalidatedCallback(
+ @Nullable Executor executor, @Nullable Runnable onInstanceInvalidatedListener) {
+ if (executor == null || onInstanceInvalidatedListener == null) {
+ return;
+ }
+
+ InstanceInvalidatedCallbackRecord record =
+ new InstanceInvalidatedCallbackRecord(executor, onInstanceInvalidatedListener);
+ synchronized (mLock) {
+ if (!mInstanceInvalidatedCallbackRecords.contains(record)) {
+ mInstanceInvalidatedCallbackRecords.add(record);
+ }
+ }
+ }
+
@Override
public void updateScanningState(int scanningState) throws RemoteException {
mMediaRouterService.updateScanningState(mClient, scanningState);
@@ -3176,6 +3315,30 @@ public final class MediaRouter2 {
}
}
+ private void onInvalidateInstanceOnHandler() {
+ Log.w(
+ TAG,
+ "MEDIA_ROUTING_CONTROL has been revoked for this package. Invalidating"
+ + " instance.");
+ // After this block, all following getInstance() calls should throw a SecurityException,
+ // so no new onInstanceInvalidatedListeners can be registered to this instance.
+ synchronized (sSystemRouterLock) {
+ PackageNameUserHandlePair key =
+ new PackageNameUserHandlePair(mClientPackageName, mClientUser);
+ sAppToProxyRouterMap.remove(key);
+ }
+
+ synchronized (mLock) {
+ for (InstanceInvalidatedCallbackRecord record :
+ mInstanceInvalidatedCallbackRecords) {
+ record.executor.execute(record.runnable);
+ }
+ }
+ mRouteCallbackRecords.clear();
+ mControllerCallbackRecords.clear();
+ mTransferCallbackRecords.clear();
+ }
+
private class Client extends IMediaRouter2Manager.Stub {
@Override
@@ -3244,6 +3407,14 @@ public final class MediaRouter2 {
requestId,
reason));
}
+
+ @Override
+ public void invalidateInstance() {
+ mHandler.sendMessage(
+ obtainMessage(
+ ProxyMediaRouter2Impl::onInvalidateInstanceOnHandler,
+ ProxyMediaRouter2Impl.this));
+ }
}
}
diff --git a/media/java/android/media/MediaRouter2Manager.java b/media/java/android/media/MediaRouter2Manager.java
index 488d54486561..7756d93a5c38 100644
--- a/media/java/android/media/MediaRouter2Manager.java
+++ b/media/java/android/media/MediaRouter2Manager.java
@@ -1150,5 +1150,11 @@ public final class MediaRouter2Manager {
MediaRouter2Manager.this,
routes));
}
+
+ @Override
+ public void invalidateInstance() {
+ // Should never happen since MediaRouter2Manager should only be used with
+ // MEDIA_CONTENT_CONTROL, which cannot be revoked.
+ }
}
}
diff --git a/native/android/Android.bp b/native/android/Android.bp
index 481268516b51..8945bd1444f0 100644
--- a/native/android/Android.bp
+++ b/native/android/Android.bp
@@ -54,6 +54,7 @@ cc_library_shared {
srcs: [
"activity_manager.cpp",
"asset_manager.cpp",
+ "surface_control_input_receiver.cpp",
"choreographer.cpp",
"configuration.cpp",
"hardware_buffer_jni.cpp",
@@ -84,6 +85,7 @@ cc_library_shared {
"libinput",
"libutils",
"libbinder",
+ "libbinder_ndk",
"libui",
"libgui",
"libharfbuzz_ng", // Only for including hb.h via minikin
@@ -101,6 +103,7 @@ cc_library_shared {
"android.hardware.configstore-utils",
"android.os.flags-aconfig-cc",
"libnativedisplay",
+ "libfmq",
],
static_libs: [
diff --git a/native/android/input_transfer_token.cpp b/native/android/input_transfer_token.cpp
index 501e1d312bfc..2e74aa3dbcbe 100644
--- a/native/android/input_transfer_token.cpp
+++ b/native/android/input_transfer_token.cpp
@@ -25,7 +25,7 @@ using namespace android;
#define CHECK_NOT_NULL(name) \
LOG_ALWAYS_FATAL_IF(name == nullptr, "nullptr passed as " #name " argument");
-void InputTransferToken_acquire(InputTransferToken* inputTransferToken) {
+extern void InputTransferToken_acquire(InputTransferToken* inputTransferToken) {
// incStrong/decStrong token must be the same, doesn't matter what it is
inputTransferToken->incStrong((void*)InputTransferToken_acquire);
}
@@ -52,7 +52,7 @@ jobject AInputTransferToken_toJava(JNIEnv* _Nonnull env,
CHECK_NOT_NULL(aInputTransferToken);
const InputTransferToken* inputTransferToken =
reinterpret_cast<const InputTransferToken*>(aInputTransferToken);
- return android_window_InputTransferToken_getJavaInputTransferToken(env, inputTransferToken);
+ return android_window_InputTransferToken_getJavaInputTransferToken(env, *inputTransferToken);
}
void AInputTransferToken_release(AInputTransferToken* aInputTransferToken) {
diff --git a/native/android/libandroid.map.txt b/native/android/libandroid.map.txt
index b2925bfa6881..1c203e37c710 100644
--- a/native/android/libandroid.map.txt
+++ b/native/android/libandroid.map.txt
@@ -98,6 +98,14 @@ LIBANDROID {
AInputQueue_getEvent;
AInputQueue_hasEvents;
AInputQueue_preDispatchEvent;
+ AInputReceiver_createBatchedInputReceiver; # introduced=35
+ AInputReceiver_createUnbatchedInputReceiver; # introduced=35
+ AInputReceiver_release; # introduced=35
+ AInputReceiver_getInputTransferToken; # introduced=35
+ AInputReceiverCallbacks_create; # introduced=35
+ AInputReceiverCallbacks_release; # introduced=35
+ AInputReceiverCallbacks_setKeyEventCallback; # introduced=35
+ AInputReceiverCallbacks_setMotionEventCallback; # introduced=35
AInputTransferToken_fromJava; # introduced=35
AInputTransferToken_release; # introduced=35
AInputTransferToken_toJava; # introduced=35
diff --git a/native/android/performance_hint.cpp b/native/android/performance_hint.cpp
index 279f9d682b9f..8227bdbd14a7 100644
--- a/native/android/performance_hint.cpp
+++ b/native/android/performance_hint.cpp
@@ -18,15 +18,15 @@
#include <aidl/android/hardware/power/SessionHint.h>
#include <aidl/android/hardware/power/SessionMode.h>
+#include <aidl/android/hardware/power/SessionTag.h>
+#include <aidl/android/hardware/power/WorkDuration.h>
+#include <aidl/android/os/IHintManager.h>
+#include <aidl/android/os/IHintSession.h>
#include <android-base/stringprintf.h>
-#include <android/WorkDuration.h>
-#include <android/os/IHintManager.h>
-#include <android/os/IHintSession.h>
+#include <android/binder_manager.h>
+#include <android/binder_status.h>
#include <android/performance_hint.h>
#include <android/trace.h>
-#include <binder/Binder.h>
-#include <binder/IBinder.h>
-#include <binder/IServiceManager.h>
#include <inttypes.h>
#include <performance_hint_private.h>
#include <utils/SystemClock.h>
@@ -37,22 +37,25 @@
#include <vector>
using namespace android;
-using namespace android::os;
+using namespace aidl::android::os;
using namespace std::chrono_literals;
-using AidlSessionHint = aidl::android::hardware::power::SessionHint;
-using AidlSessionMode = aidl::android::hardware::power::SessionMode;
+using HalSessionHint = aidl::android::hardware::power::SessionHint;
+using HalSessionMode = aidl::android::hardware::power::SessionMode;
+using HalWorkDuration = aidl::android::hardware::power::WorkDuration;
+
using android::base::StringPrintf;
struct APerformanceHintSession;
constexpr int64_t SEND_HINT_TIMEOUT = std::chrono::nanoseconds(100ms).count();
+struct AWorkDuration : public HalWorkDuration {};
struct APerformanceHintManager {
public:
static APerformanceHintManager* getInstance();
- APerformanceHintManager(sp<IHintManager> service, int64_t preferredRateNanos);
+ APerformanceHintManager(std::shared_ptr<IHintManager> service, int64_t preferredRateNanos);
APerformanceHintManager() = delete;
~APerformanceHintManager() = default;
@@ -61,17 +64,28 @@ public:
int64_t getPreferredRateNanos() const;
private:
- static APerformanceHintManager* create(sp<IHintManager> iHintManager);
+ // Necessary to create an empty binder object
+ static void* tokenStubOnCreate(void*) {
+ return nullptr;
+ }
+ static void tokenStubOnDestroy(void*) {}
+ static binder_status_t tokenStubOnTransact(AIBinder*, transaction_code_t, const AParcel*,
+ AParcel*) {
+ return STATUS_OK;
+ }
+
+ static APerformanceHintManager* create(std::shared_ptr<IHintManager> iHintManager);
- sp<IHintManager> mHintManager;
- const sp<IBinder> mToken = sp<BBinder>::make();
+ std::shared_ptr<IHintManager> mHintManager;
+ ndk::SpAIBinder mToken;
const int64_t mPreferredRateNanos;
};
struct APerformanceHintSession {
public:
- APerformanceHintSession(sp<IHintManager> hintManager, sp<IHintSession> session,
- int64_t preferredRateNanos, int64_t targetDurationNanos);
+ APerformanceHintSession(std::shared_ptr<IHintManager> hintManager,
+ std::shared_ptr<IHintSession> session, int64_t preferredRateNanos,
+ int64_t targetDurationNanos);
APerformanceHintSession() = delete;
~APerformanceHintSession();
@@ -86,10 +100,10 @@ public:
private:
friend struct APerformanceHintManager;
- int reportActualWorkDurationInternal(WorkDuration* workDuration);
+ int reportActualWorkDurationInternal(AWorkDuration* workDuration);
- sp<IHintManager> mHintManager;
- sp<IHintSession> mHintSession;
+ std::shared_ptr<IHintManager> mHintManager;
+ std::shared_ptr<IHintSession> mHintSession;
// HAL preferred update rate
const int64_t mPreferredRateNanos;
// Target duration for choosing update rate
@@ -101,7 +115,7 @@ private:
// Last hint reported from sendHint indexed by hint value
std::vector<int64_t> mLastHintSentTimestamp;
// Cached samples
- std::vector<WorkDuration> mActualWorkDurations;
+ std::vector<HalWorkDuration> mActualWorkDurations;
std::string mSessionName;
static int32_t sIDCounter;
// The most recent set of thread IDs
@@ -114,19 +128,24 @@ private:
void traceTargetDuration(int64_t targetDuration);
};
-static IHintManager* gIHintManagerForTesting = nullptr;
+static std::shared_ptr<IHintManager>* gIHintManagerForTesting = nullptr;
static APerformanceHintManager* gHintManagerForTesting = nullptr;
int32_t APerformanceHintSession::sIDCounter = 0;
// ===================================== APerformanceHintManager implementation
-APerformanceHintManager::APerformanceHintManager(sp<IHintManager> manager,
+APerformanceHintManager::APerformanceHintManager(std::shared_ptr<IHintManager> manager,
int64_t preferredRateNanos)
- : mHintManager(std::move(manager)), mPreferredRateNanos(preferredRateNanos) {}
+ : mHintManager(std::move(manager)), mPreferredRateNanos(preferredRateNanos) {
+ static AIBinder_Class* tokenBinderClass =
+ AIBinder_Class_define("phm_token", tokenStubOnCreate, tokenStubOnDestroy,
+ tokenStubOnTransact);
+ mToken = ndk::SpAIBinder(AIBinder_new(tokenBinderClass, nullptr));
+}
APerformanceHintManager* APerformanceHintManager::getInstance() {
if (gHintManagerForTesting) return gHintManagerForTesting;
if (gIHintManagerForTesting) {
- APerformanceHintManager* manager = create(gIHintManagerForTesting);
+ APerformanceHintManager* manager = create(*gIHintManagerForTesting);
gIHintManagerForTesting = nullptr;
return manager;
}
@@ -134,20 +153,19 @@ APerformanceHintManager* APerformanceHintManager::getInstance() {
return instance;
}
-APerformanceHintManager* APerformanceHintManager::create(sp<IHintManager> manager) {
+APerformanceHintManager* APerformanceHintManager::create(std::shared_ptr<IHintManager> manager) {
if (!manager) {
- manager = interface_cast<IHintManager>(
- defaultServiceManager()->checkService(String16("performance_hint")));
+ manager = IHintManager::fromBinder(
+ ndk::SpAIBinder(AServiceManager_waitForService("performance_hint")));
}
if (manager == nullptr) {
ALOGE("%s: PerformanceHint service is not ready ", __FUNCTION__);
return nullptr;
}
int64_t preferredRateNanos = -1L;
- binder::Status ret = manager->getHintSessionPreferredRate(&preferredRateNanos);
+ ndk::ScopedAStatus ret = manager->getHintSessionPreferredRate(&preferredRateNanos);
if (!ret.isOk()) {
- ALOGE("%s: PerformanceHint cannot get preferred rate. %s", __FUNCTION__,
- ret.exceptionMessage().c_str());
+ ALOGE("%s: PerformanceHint cannot get preferred rate. %s", __FUNCTION__, ret.getMessage());
return nullptr;
}
if (preferredRateNanos <= 0) {
@@ -159,8 +177,8 @@ APerformanceHintManager* APerformanceHintManager::create(sp<IHintManager> manage
APerformanceHintSession* APerformanceHintManager::createSession(
const int32_t* threadIds, size_t size, int64_t initialTargetWorkDurationNanos) {
std::vector<int32_t> tids(threadIds, threadIds + size);
- sp<IHintSession> session;
- binder::Status ret =
+ std::shared_ptr<IHintSession> session;
+ ndk::ScopedAStatus ret =
mHintManager->createHintSession(mToken, tids, initialTargetWorkDurationNanos, &session);
if (!ret.isOk() || !session) {
return nullptr;
@@ -179,8 +197,8 @@ int64_t APerformanceHintManager::getPreferredRateNanos() const {
// ===================================== APerformanceHintSession implementation
-APerformanceHintSession::APerformanceHintSession(sp<IHintManager> hintManager,
- sp<IHintSession> session,
+APerformanceHintSession::APerformanceHintSession(std::shared_ptr<IHintManager> hintManager,
+ std::shared_ptr<IHintSession> session,
int64_t preferredRateNanos,
int64_t targetDurationNanos)
: mHintManager(hintManager),
@@ -189,17 +207,17 @@ APerformanceHintSession::APerformanceHintSession(sp<IHintManager> hintManager,
mTargetDurationNanos(targetDurationNanos),
mFirstTargetMetTimestamp(0),
mLastTargetMetTimestamp(0) {
- const std::vector<AidlSessionHint> sessionHintRange{ndk::enum_range<AidlSessionHint>().begin(),
- ndk::enum_range<AidlSessionHint>().end()};
+ const std::vector<HalSessionHint> sessionHintRange{ndk::enum_range<HalSessionHint>().begin(),
+ ndk::enum_range<HalSessionHint>().end()};
mLastHintSentTimestamp = std::vector<int64_t>(sessionHintRange.size(), 0);
mSessionName = android::base::StringPrintf("ADPF Session %" PRId32, ++sIDCounter);
}
APerformanceHintSession::~APerformanceHintSession() {
- binder::Status ret = mHintSession->close();
+ ndk::ScopedAStatus ret = mHintSession->close();
if (!ret.isOk()) {
- ALOGE("%s: HintSession close failed: %s", __FUNCTION__, ret.exceptionMessage().c_str());
+ ALOGE("%s: HintSession close failed: %s", __FUNCTION__, ret.getMessage());
}
}
@@ -208,10 +226,10 @@ int APerformanceHintSession::updateTargetWorkDuration(int64_t targetDurationNano
ALOGE("%s: targetDurationNanos must be positive", __FUNCTION__);
return EINVAL;
}
- binder::Status ret = mHintSession->updateTargetWorkDuration(targetDurationNanos);
+ ndk::ScopedAStatus ret = mHintSession->updateTargetWorkDuration(targetDurationNanos);
if (!ret.isOk()) {
ALOGE("%s: HintSession updateTargetWorkDuration failed: %s", __FUNCTION__,
- ret.exceptionMessage().c_str());
+ ret.getMessage());
return EPIPE;
}
mTargetDurationNanos = targetDurationNanos;
@@ -228,9 +246,12 @@ int APerformanceHintSession::updateTargetWorkDuration(int64_t targetDurationNano
}
int APerformanceHintSession::reportActualWorkDuration(int64_t actualDurationNanos) {
- WorkDuration workDuration(0, actualDurationNanos, actualDurationNanos, 0);
+ HalWorkDuration workDuration{.durationNanos = actualDurationNanos,
+ .workPeriodStartTimestampNanos = 0,
+ .cpuDurationNanos = actualDurationNanos,
+ .gpuDurationNanos = 0};
- return reportActualWorkDurationInternal(&workDuration);
+ return reportActualWorkDurationInternal(static_cast<AWorkDuration*>(&workDuration));
}
int APerformanceHintSession::sendHint(SessionHint hint) {
@@ -238,17 +259,17 @@ int APerformanceHintSession::sendHint(SessionHint hint) {
ALOGE("%s: invalid session hint %d", __FUNCTION__, hint);
return EINVAL;
}
- int64_t now = elapsedRealtimeNano();
+ int64_t now = uptimeNanos();
// Limit sendHint to a pre-detemined rate for safety
if (now < (mLastHintSentTimestamp[hint] + SEND_HINT_TIMEOUT)) {
return 0;
}
- binder::Status ret = mHintSession->sendHint(hint);
+ ndk::ScopedAStatus ret = mHintSession->sendHint(hint);
if (!ret.isOk()) {
- ALOGE("%s: HintSession sendHint failed: %s", __FUNCTION__, ret.exceptionMessage().c_str());
+ ALOGE("%s: HintSession sendHint failed: %s", __FUNCTION__, ret.getMessage());
return EPIPE;
}
mLastHintSentTimestamp[hint] = now;
@@ -261,12 +282,12 @@ int APerformanceHintSession::setThreads(const int32_t* threadIds, size_t size) {
return EINVAL;
}
std::vector<int32_t> tids(threadIds, threadIds + size);
- binder::Status ret = mHintManager->setHintSessionThreads(mHintSession, tids);
+ ndk::ScopedAStatus ret = mHintManager->setHintSessionThreads(mHintSession, tids);
if (!ret.isOk()) {
- ALOGE("%s: failed: %s", __FUNCTION__, ret.exceptionMessage().c_str());
- if (ret.exceptionCode() == binder::Status::Exception::EX_ILLEGAL_ARGUMENT) {
+ ALOGE("%s: failed: %s", __FUNCTION__, ret.getMessage());
+ if (ret.getExceptionCode() == EX_ILLEGAL_ARGUMENT) {
return EINVAL;
- } else if (ret.exceptionCode() == binder::Status::Exception::EX_SECURITY) {
+ } else if (ret.getExceptionCode() == EX_SECURITY) {
return EPERM;
}
return EPIPE;
@@ -279,9 +300,9 @@ int APerformanceHintSession::setThreads(const int32_t* threadIds, size_t size) {
int APerformanceHintSession::getThreadIds(int32_t* const threadIds, size_t* size) {
std::vector<int32_t> tids;
- binder::Status ret = mHintManager->getHintSessionThreadIds(mHintSession, &tids);
+ ndk::ScopedAStatus ret = mHintManager->getHintSessionThreadIds(mHintSession, &tids);
if (!ret.isOk()) {
- ALOGE("%s: failed: %s", __FUNCTION__, ret.exceptionMessage().c_str());
+ ALOGE("%s: failed: %s", __FUNCTION__, ret.getMessage());
return EPIPE;
}
@@ -301,28 +322,27 @@ int APerformanceHintSession::getThreadIds(int32_t* const threadIds, size_t* size
}
int APerformanceHintSession::setPreferPowerEfficiency(bool enabled) {
- binder::Status ret =
- mHintSession->setMode(static_cast<int32_t>(AidlSessionMode::POWER_EFFICIENCY), enabled);
+ ndk::ScopedAStatus ret =
+ mHintSession->setMode(static_cast<int32_t>(HalSessionMode::POWER_EFFICIENCY), enabled);
if (!ret.isOk()) {
ALOGE("%s: HintSession setPreferPowerEfficiency failed: %s", __FUNCTION__,
- ret.exceptionMessage().c_str());
+ ret.getMessage());
return EPIPE;
}
tracePowerEfficient(enabled);
return OK;
}
-int APerformanceHintSession::reportActualWorkDuration(AWorkDuration* aWorkDuration) {
- WorkDuration* workDuration = static_cast<WorkDuration*>(aWorkDuration);
+int APerformanceHintSession::reportActualWorkDuration(AWorkDuration* workDuration) {
return reportActualWorkDurationInternal(workDuration);
}
-int APerformanceHintSession::reportActualWorkDurationInternal(WorkDuration* workDuration) {
- int64_t actualTotalDurationNanos = workDuration->actualTotalDurationNanos;
+int APerformanceHintSession::reportActualWorkDurationInternal(AWorkDuration* workDuration) {
+ int64_t actualTotalDurationNanos = workDuration->durationNanos;
int64_t now = uptimeNanos();
- workDuration->timestampNanos = now;
- traceActualDuration(workDuration->actualTotalDurationNanos);
+ workDuration->timeStampNanos = now;
+ traceActualDuration(workDuration->durationNanos);
mActualWorkDurations.push_back(std::move(*workDuration));
if (actualTotalDurationNanos >= mTargetDurationNanos) {
@@ -346,14 +366,14 @@ int APerformanceHintSession::reportActualWorkDurationInternal(WorkDuration* work
mLastTargetMetTimestamp = now;
}
- binder::Status ret = mHintSession->reportActualWorkDuration2(mActualWorkDurations);
+ ndk::ScopedAStatus ret = mHintSession->reportActualWorkDuration2(mActualWorkDurations);
if (!ret.isOk()) {
ALOGE("%s: HintSession reportActualWorkDuration failed: %s", __FUNCTION__,
- ret.exceptionMessage().c_str());
+ ret.getMessage());
mFirstTargetMetTimestamp = 0;
mLastTargetMetTimestamp = 0;
traceBatchSize(mActualWorkDurations.size());
- return ret.exceptionCode() == binder::Status::EX_ILLEGAL_ARGUMENT ? EINVAL : EPIPE;
+ return ret.getExceptionCode() == EX_ILLEGAL_ARGUMENT ? EINVAL : EPIPE;
}
mActualWorkDurations.clear();
traceBatchSize(0);
@@ -481,18 +501,16 @@ int APerformanceHint_reportActualWorkDuration2(APerformanceHintSession* session,
AWorkDuration* workDurationPtr) {
VALIDATE_PTR(session)
VALIDATE_PTR(workDurationPtr)
- WorkDuration& workDuration = *static_cast<WorkDuration*>(workDurationPtr);
- VALIDATE_INT(workDuration.workPeriodStartTimestampNanos, > 0)
- VALIDATE_INT(workDuration.actualTotalDurationNanos, > 0)
- VALIDATE_INT(workDuration.actualCpuDurationNanos, >= 0)
- VALIDATE_INT(workDuration.actualGpuDurationNanos, >= 0)
- VALIDATE_INT(workDuration.actualGpuDurationNanos + workDuration.actualCpuDurationNanos, > 0)
+ VALIDATE_INT(workDurationPtr->durationNanos, > 0)
+ VALIDATE_INT(workDurationPtr->workPeriodStartTimestampNanos, > 0)
+ VALIDATE_INT(workDurationPtr->cpuDurationNanos, >= 0)
+ VALIDATE_INT(workDurationPtr->gpuDurationNanos, >= 0)
+ VALIDATE_INT(workDurationPtr->gpuDurationNanos + workDurationPtr->cpuDurationNanos, > 0)
return session->reportActualWorkDuration(workDurationPtr);
}
AWorkDuration* AWorkDuration_create() {
- WorkDuration* workDuration = new WorkDuration();
- return static_cast<AWorkDuration*>(workDuration);
+ return new AWorkDuration();
}
void AWorkDuration_release(AWorkDuration* aWorkDuration) {
@@ -500,37 +518,36 @@ void AWorkDuration_release(AWorkDuration* aWorkDuration) {
delete aWorkDuration;
}
-void AWorkDuration_setWorkPeriodStartTimestampNanos(AWorkDuration* aWorkDuration,
- int64_t workPeriodStartTimestampNanos) {
- VALIDATE_PTR(aWorkDuration)
- WARN_INT(workPeriodStartTimestampNanos, > 0)
- static_cast<WorkDuration*>(aWorkDuration)->workPeriodStartTimestampNanos =
- workPeriodStartTimestampNanos;
-}
-
void AWorkDuration_setActualTotalDurationNanos(AWorkDuration* aWorkDuration,
int64_t actualTotalDurationNanos) {
VALIDATE_PTR(aWorkDuration)
WARN_INT(actualTotalDurationNanos, > 0)
- static_cast<WorkDuration*>(aWorkDuration)->actualTotalDurationNanos = actualTotalDurationNanos;
+ aWorkDuration->durationNanos = actualTotalDurationNanos;
+}
+
+void AWorkDuration_setWorkPeriodStartTimestampNanos(AWorkDuration* aWorkDuration,
+ int64_t workPeriodStartTimestampNanos) {
+ VALIDATE_PTR(aWorkDuration)
+ WARN_INT(workPeriodStartTimestampNanos, > 0)
+ aWorkDuration->workPeriodStartTimestampNanos = workPeriodStartTimestampNanos;
}
void AWorkDuration_setActualCpuDurationNanos(AWorkDuration* aWorkDuration,
int64_t actualCpuDurationNanos) {
VALIDATE_PTR(aWorkDuration)
WARN_INT(actualCpuDurationNanos, >= 0)
- static_cast<WorkDuration*>(aWorkDuration)->actualCpuDurationNanos = actualCpuDurationNanos;
+ aWorkDuration->cpuDurationNanos = actualCpuDurationNanos;
}
void AWorkDuration_setActualGpuDurationNanos(AWorkDuration* aWorkDuration,
int64_t actualGpuDurationNanos) {
VALIDATE_PTR(aWorkDuration)
WARN_INT(actualGpuDurationNanos, >= 0)
- static_cast<WorkDuration*>(aWorkDuration)->actualGpuDurationNanos = actualGpuDurationNanos;
+ aWorkDuration->gpuDurationNanos = actualGpuDurationNanos;
}
void APerformanceHint_setIHintManagerForTesting(void* iManager) {
delete gHintManagerForTesting;
gHintManagerForTesting = nullptr;
- gIHintManagerForTesting = static_cast<IHintManager*>(iManager);
+ gIHintManagerForTesting = static_cast<std::shared_ptr<IHintManager>*>(iManager);
}
diff --git a/native/android/surface_control_input_receiver.cpp b/native/android/surface_control_input_receiver.cpp
new file mode 100644
index 000000000000..da0defd9fd17
--- /dev/null
+++ b/native/android/surface_control_input_receiver.cpp
@@ -0,0 +1,213 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <android/choreographer.h>
+#include <android/surface_control_input_receiver.h>
+#include <binder/Binder.h>
+#include <gui/Choreographer.h>
+#include <gui/InputTransferToken.h>
+#include <input/Input.h>
+#include <input/InputConsumerNoResampling.h>
+
+#include "android_view_WindowManagerGlobal.h"
+
+using namespace android;
+
+extern void InputTransferToken_acquire(InputTransferToken* inputTransferToken);
+
+struct AInputReceiverCallbacks {
+ AInputReceiverCallbacks(void* context) : context(context) {}
+ void* context;
+ AInputReceiver_onMotionEvent onMotionEvent = nullptr;
+ AInputReceiver_onKeyEvent onKeyEvent = nullptr;
+};
+
+class InputReceiver : public InputConsumerCallbacks {
+public:
+ InputReceiver(const sp<Looper>& looper, const std::shared_ptr<InputChannel>& inputChannel,
+ const sp<IBinder>& clientToken, const sp<InputTransferToken>& inputTransferToken,
+ AInputReceiverCallbacks* callbacks)
+ : mCallbacks(callbacks),
+ mInputConsumer(inputChannel, looper, *this),
+ mClientToken(clientToken),
+ mInputTransferToken(inputTransferToken) {}
+
+ ~InputReceiver() {
+ remove();
+ }
+
+ void onKeyEvent(std::unique_ptr<KeyEvent> event, uint32_t seq) override {
+ if (mCallbacks->onKeyEvent != nullptr) {
+ const bool handled = mCallbacks->onKeyEvent(mCallbacks->context,
+ static_cast<AInputEvent*>(event.release()));
+ mInputConsumer.finishInputEvent(seq, handled);
+ }
+ }
+
+ void onMotionEvent(std::unique_ptr<MotionEvent> event, uint32_t seq) override {
+ if (mCallbacks->onMotionEvent != nullptr) {
+ const bool handled =
+ mCallbacks->onMotionEvent(mCallbacks->context,
+ static_cast<AInputEvent*>(event.release()));
+ mInputConsumer.finishInputEvent(seq, handled);
+ }
+ }
+
+ void onFocusEvent(std::unique_ptr<FocusEvent>, uint32_t seq) override {
+ mInputConsumer.finishInputEvent(seq, false);
+ }
+ void onCaptureEvent(std::unique_ptr<CaptureEvent>, uint32_t seq) override {
+ mInputConsumer.finishInputEvent(seq, false);
+ }
+ void onDragEvent(std::unique_ptr<DragEvent>, uint32_t seq) override {
+ mInputConsumer.finishInputEvent(seq, false);
+ }
+ void onTouchModeEvent(std::unique_ptr<TouchModeEvent>, uint32_t seq) override {
+ mInputConsumer.finishInputEvent(seq, false);
+ }
+
+ virtual void onBatchedInputEventPending(int32_t) override {
+ mInputConsumer.consumeBatchedInputEvents(std::nullopt);
+ }
+
+ const AInputTransferToken* getInputTransferToken() {
+ InputTransferToken_acquire(mInputTransferToken.get());
+ return reinterpret_cast<const AInputTransferToken*>(mInputTransferToken.get());
+ }
+
+ void remove() {
+ removeInputChannel(mClientToken);
+ }
+
+ AInputReceiverCallbacks* mCallbacks;
+
+protected:
+ InputConsumerNoResampling mInputConsumer;
+
+private:
+ const sp<IBinder> mClientToken;
+ const sp<InputTransferToken> mInputTransferToken;
+};
+
+class BatchedInputReceiver : public InputReceiver {
+public:
+ BatchedInputReceiver(Choreographer& choreographer,
+ const std::shared_ptr<InputChannel>& inputChannel,
+ const sp<IBinder>& clientToken,
+ const sp<InputTransferToken>& inputTransferToken,
+ AInputReceiverCallbacks* callbacks)
+ : InputReceiver(choreographer.getLooper(), inputChannel, clientToken, inputTransferToken,
+ callbacks),
+ mChoreographer(choreographer) {}
+
+ static void vsyncCallback(const AChoreographerFrameCallbackData* callbackData, void* data) {
+ BatchedInputReceiver* receiver = static_cast<BatchedInputReceiver*>(data);
+ receiver->onVsyncCallback(callbackData);
+ }
+
+ void onVsyncCallback(const AChoreographerFrameCallbackData* callbackData) {
+ int64_t frameTimeNanos = AChoreographerFrameCallbackData_getFrameTimeNanos(callbackData);
+ mInputConsumer.consumeBatchedInputEvents(frameTimeNanos);
+ mBatchedInputScheduled = false;
+ }
+
+ void onBatchedInputEventPending(int32_t) override {
+ scheduleBatchedInput();
+ }
+
+private:
+ Choreographer& mChoreographer;
+ bool mBatchedInputScheduled = false;
+
+ void scheduleBatchedInput() {
+ if (!mBatchedInputScheduled) {
+ mBatchedInputScheduled = true;
+ mChoreographer.postFrameCallbackDelayed(nullptr, nullptr, vsyncCallback, this, 0,
+ CallbackType::CALLBACK_INPUT);
+ }
+ }
+};
+
+static inline AInputReceiver* InputReceiver_to_AInputReceiver(InputReceiver* inputReceiver) {
+ return reinterpret_cast<AInputReceiver*>(inputReceiver);
+}
+
+static inline InputReceiver* AInputReceiver_to_InputReceiver(AInputReceiver* aInputReceiver) {
+ return reinterpret_cast<InputReceiver*>(aInputReceiver);
+}
+
+AInputReceiver* AInputReceiver_createBatchedInputReceiver(AChoreographer* aChoreographer,
+ const AInputTransferToken* hostToken,
+ const ASurfaceControl* aSurfaceControl,
+ AInputReceiverCallbacks* callbacks) {
+ // create input channel here through WMS
+ sp<IBinder> clientToken = sp<BBinder>::make();
+ sp<InputTransferToken> clientInputTransferToken = sp<InputTransferToken>::make();
+
+ std::shared_ptr<InputChannel> inputChannel =
+ createInputChannel(clientToken, reinterpret_cast<const InputTransferToken&>(*hostToken),
+ reinterpret_cast<const SurfaceControl&>(*aSurfaceControl),
+ *clientInputTransferToken);
+ return InputReceiver_to_AInputReceiver(
+ new BatchedInputReceiver(reinterpret_cast<Choreographer&>(*aChoreographer),
+ inputChannel, clientToken, clientInputTransferToken,
+ callbacks));
+}
+
+AInputReceiver* AInputReceiver_createUnbatchedInputReceiver(ALooper* aLooper,
+ const AInputTransferToken* hostToken,
+ const ASurfaceControl* aSurfaceControl,
+ AInputReceiverCallbacks* callbacks) {
+ // create input channel here through WMS
+ sp<IBinder> clientToken = sp<BBinder>::make();
+ sp<InputTransferToken> clientInputTransferToken = sp<InputTransferToken>::make();
+
+ std::shared_ptr<InputChannel> inputChannel =
+ createInputChannel(clientToken, reinterpret_cast<const InputTransferToken&>(*hostToken),
+ reinterpret_cast<const SurfaceControl&>(*aSurfaceControl),
+ *clientInputTransferToken);
+ return InputReceiver_to_AInputReceiver(new InputReceiver(reinterpret_cast<Looper*>(aLooper),
+ inputChannel, clientToken,
+ clientInputTransferToken, callbacks));
+}
+
+const AInputTransferToken* AInputReceiver_getInputTransferToken(AInputReceiver* aInputReceiver) {
+ return AInputReceiver_to_InputReceiver(aInputReceiver)->getInputTransferToken();
+}
+
+void AInputReceiver_release(AInputReceiver* aInputReceiver) {
+ InputReceiver* inputReceiver = AInputReceiver_to_InputReceiver(aInputReceiver);
+ inputReceiver->remove();
+ delete inputReceiver;
+}
+
+void AInputReceiverCallbacks_setMotionEventCallback(AInputReceiverCallbacks* callbacks,
+ AInputReceiver_onMotionEvent onMotionEvent) {
+ callbacks->onMotionEvent = onMotionEvent;
+}
+
+void AInputReceiverCallbacks_setKeyEventCallback(AInputReceiverCallbacks* callbacks,
+ AInputReceiver_onKeyEvent onKeyEvent) {
+ callbacks->onKeyEvent = onKeyEvent;
+}
+
+AInputReceiverCallbacks* AInputReceiverCallbacks_create(void* context) {
+ return new AInputReceiverCallbacks(context);
+}
+
+void AInputReceiverCallbacks_release(AInputReceiverCallbacks* callbacks) {
+ delete callbacks;
+} \ No newline at end of file
diff --git a/native/android/tests/performance_hint/Android.bp b/native/android/tests/performance_hint/Android.bp
index fdc1bc6a20d8..608d5d8a923a 100644
--- a/native/android/tests/performance_hint/Android.bp
+++ b/native/android/tests/performance_hint/Android.bp
@@ -39,6 +39,7 @@ cc_test {
"libandroid",
"liblog",
"libbinder",
+ "libbinder_ndk",
"libpowermanager",
"libutils",
],
diff --git a/native/android/tests/performance_hint/PerformanceHintNativeTest.cpp b/native/android/tests/performance_hint/PerformanceHintNativeTest.cpp
index 4553b4919d2d..bfbe34e7a8a1 100644
--- a/native/android/tests/performance_hint/PerformanceHintNativeTest.cpp
+++ b/native/android/tests/performance_hint/PerformanceHintNativeTest.cpp
@@ -16,11 +16,11 @@
#define LOG_TAG "PerformanceHintNativeTest"
-#include <android/WorkDuration.h>
-#include <android/os/IHintManager.h>
-#include <android/os/IHintSession.h>
+#include <aidl/android/hardware/power/WorkDuration.h>
+#include <aidl/android/os/IHintManager.h>
+#include <android/binder_manager.h>
+#include <android/binder_status.h>
#include <android/performance_hint.h>
-#include <binder/IBinder.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <performance_hint_private.h>
@@ -28,48 +28,54 @@
#include <memory>
#include <vector>
-using android::binder::Status;
-using android::os::IHintManager;
-using android::os::IHintSession;
+using aidl::android::hardware::power::WorkDuration;
+using aidl::android::os::IHintManager;
+using aidl::android::os::IHintSession;
+using ndk::ScopedAStatus;
+using ndk::SpAIBinder;
using namespace android;
using namespace testing;
class MockIHintManager : public IHintManager {
public:
- MOCK_METHOD(Status, createHintSession,
- (const sp<IBinder>& token, const ::std::vector<int32_t>& tids,
- int64_t durationNanos, ::android::sp<IHintSession>* _aidl_return),
+ MOCK_METHOD(ScopedAStatus, createHintSession,
+ (const SpAIBinder& token, const ::std::vector<int32_t>& tids, int64_t durationNanos,
+ std::shared_ptr<IHintSession>* _aidl_return),
(override));
- MOCK_METHOD(Status, getHintSessionPreferredRate, (int64_t * _aidl_return), (override));
- MOCK_METHOD(Status, setHintSessionThreads,
- (const sp<IHintSession>& hintSession, const ::std::vector<int32_t>& tids),
+ MOCK_METHOD(ScopedAStatus, getHintSessionPreferredRate, (int64_t * _aidl_return), (override));
+ MOCK_METHOD(ScopedAStatus, setHintSessionThreads,
+ (const std::shared_ptr<IHintSession>& hintSession,
+ const ::std::vector<int32_t>& tids),
(override));
- MOCK_METHOD(Status, getHintSessionThreadIds,
- (const sp<IHintSession>& hintSession, ::std::vector<int32_t>* tids), (override));
- MOCK_METHOD(IBinder*, onAsBinder, (), (override));
+ MOCK_METHOD(ScopedAStatus, getHintSessionThreadIds,
+ (const std::shared_ptr<IHintSession>& hintSession, ::std::vector<int32_t>* tids),
+ (override));
+ MOCK_METHOD(SpAIBinder, asBinder, (), (override));
+ MOCK_METHOD(bool, isRemote, (), (override));
};
class MockIHintSession : public IHintSession {
public:
- MOCK_METHOD(Status, updateTargetWorkDuration, (int64_t targetDurationNanos), (override));
- MOCK_METHOD(Status, reportActualWorkDuration,
+ MOCK_METHOD(ScopedAStatus, updateTargetWorkDuration, (int64_t targetDurationNanos), (override));
+ MOCK_METHOD(ScopedAStatus, reportActualWorkDuration,
(const ::std::vector<int64_t>& actualDurationNanos,
const ::std::vector<int64_t>& timeStampNanos),
(override));
- MOCK_METHOD(Status, sendHint, (int32_t hint), (override));
- MOCK_METHOD(Status, setMode, (int32_t mode, bool enabled), (override));
- MOCK_METHOD(Status, close, (), (override));
- MOCK_METHOD(IBinder*, onAsBinder, (), (override));
- MOCK_METHOD(Status, reportActualWorkDuration2,
- (const ::std::vector<android::os::WorkDuration>& workDurations), (override));
+ MOCK_METHOD(ScopedAStatus, sendHint, (int32_t hint), (override));
+ MOCK_METHOD(ScopedAStatus, setMode, (int32_t mode, bool enabled), (override));
+ MOCK_METHOD(ScopedAStatus, close, (), (override));
+ MOCK_METHOD(ScopedAStatus, reportActualWorkDuration2,
+ (const ::std::vector<WorkDuration>& workDurations), (override));
+ MOCK_METHOD(SpAIBinder, asBinder, (), (override));
+ MOCK_METHOD(bool, isRemote, (), (override));
};
class PerformanceHintTest : public Test {
public:
void SetUp() override {
- mMockIHintManager = new StrictMock<MockIHintManager>();
- APerformanceHint_setIHintManagerForTesting(mMockIHintManager);
+ mMockIHintManager = ndk::SharedRefBase::make<NiceMock<MockIHintManager>>();
+ APerformanceHint_setIHintManagerForTesting(&mMockIHintManager);
}
void TearDown() override {
@@ -79,15 +85,50 @@ public:
}
APerformanceHintManager* createManager() {
- EXPECT_CALL(*mMockIHintManager, getHintSessionPreferredRate(_))
- .Times(Exactly(1))
- .WillRepeatedly(DoAll(SetArgPointee<0>(123L), Return(Status())));
+ ON_CALL(*mMockIHintManager, getHintSessionPreferredRate(_))
+ .WillByDefault(DoAll(SetArgPointee<0>(123L), [] { return ScopedAStatus::ok(); }));
return APerformanceHint_getManager();
}
+ APerformanceHintSession* createSession(APerformanceHintManager* manager,
+ int64_t targetDuration = 56789L) {
+ mMockSession = ndk::SharedRefBase::make<NiceMock<MockIHintSession>>();
+
+ std::vector<int32_t> tids;
+ tids.push_back(1);
+ tids.push_back(2);
+
+ ON_CALL(*mMockIHintManager, createHintSession(_, Eq(tids), Eq(targetDuration), _))
+ .WillByDefault(DoAll(SetArgPointee<3>(std::shared_ptr<IHintSession>(mMockSession)),
+ [] { return ScopedAStatus::ok(); }));
+ ON_CALL(*mMockIHintManager, setHintSessionThreads(_, _)).WillByDefault([] {
+ return ScopedAStatus::ok();
+ });
+ ON_CALL(*mMockSession, sendHint(_)).WillByDefault([] { return ScopedAStatus::ok(); });
+ ON_CALL(*mMockSession, setMode(_, _)).WillByDefault([] { return ScopedAStatus::ok(); });
+ ON_CALL(*mMockSession, close()).WillByDefault([] { return ScopedAStatus::ok(); });
+ ON_CALL(*mMockSession, updateTargetWorkDuration(_)).WillByDefault([] {
+ return ScopedAStatus::ok();
+ });
+ ON_CALL(*mMockSession, reportActualWorkDuration(_, _)).WillByDefault([] {
+ return ScopedAStatus::ok();
+ });
+ ON_CALL(*mMockSession, reportActualWorkDuration2(_)).WillByDefault([] {
+ return ScopedAStatus::ok();
+ });
+
+ return APerformanceHint_createSession(manager, tids.data(), tids.size(), targetDuration);
+ }
- StrictMock<MockIHintManager>* mMockIHintManager = nullptr;
+ std::shared_ptr<NiceMock<MockIHintManager>> mMockIHintManager = nullptr;
+ std::shared_ptr<NiceMock<MockIHintSession>> mMockSession = nullptr;
};
+bool equalsWithoutTimestamp(WorkDuration lhs, WorkDuration rhs) {
+ return lhs.workPeriodStartTimestampNanos == rhs.workPeriodStartTimestampNanos &&
+ lhs.cpuDurationNanos == rhs.cpuDurationNanos &&
+ lhs.gpuDurationNanos == rhs.gpuDurationNanos && lhs.durationNanos == rhs.durationNanos;
+}
+
TEST_F(PerformanceHintTest, TestGetPreferredUpdateRateNanos) {
APerformanceHintManager* manager = createManager();
int64_t preferredUpdateRateNanos = APerformanceHint_getPreferredUpdateRateNanos(manager);
@@ -96,25 +137,11 @@ TEST_F(PerformanceHintTest, TestGetPreferredUpdateRateNanos) {
TEST_F(PerformanceHintTest, TestSession) {
APerformanceHintManager* manager = createManager();
-
- std::vector<int32_t> tids;
- tids.push_back(1);
- tids.push_back(2);
- int64_t targetDuration = 56789L;
-
- StrictMock<MockIHintSession>* iSession = new StrictMock<MockIHintSession>();
- sp<IHintSession> session_sp(iSession);
-
- EXPECT_CALL(*mMockIHintManager, createHintSession(_, Eq(tids), Eq(targetDuration), _))
- .Times(Exactly(1))
- .WillRepeatedly(DoAll(SetArgPointee<3>(std::move(session_sp)), Return(Status())));
-
- APerformanceHintSession* session =
- APerformanceHint_createSession(manager, tids.data(), tids.size(), targetDuration);
+ APerformanceHintSession* session = createSession(manager);
ASSERT_TRUE(session);
int64_t targetDurationNanos = 10;
- EXPECT_CALL(*iSession, updateTargetWorkDuration(Eq(targetDurationNanos))).Times(Exactly(1));
+ EXPECT_CALL(*mMockSession, updateTargetWorkDuration(Eq(targetDurationNanos))).Times(Exactly(1));
int result = APerformanceHint_updateTargetWorkDuration(session, targetDurationNanos);
EXPECT_EQ(0, result);
@@ -122,8 +149,7 @@ TEST_F(PerformanceHintTest, TestSession) {
int64_t actualDurationNanos = 20;
std::vector<int64_t> actualDurations;
actualDurations.push_back(20);
- EXPECT_CALL(*iSession, reportActualWorkDuration(Eq(actualDurations), _)).Times(Exactly(1));
- EXPECT_CALL(*iSession, reportActualWorkDuration2(_)).Times(Exactly(1));
+ EXPECT_CALL(*mMockSession, reportActualWorkDuration2(_)).Times(Exactly(1));
result = APerformanceHint_reportActualWorkDuration(session, actualDurationNanos);
EXPECT_EQ(0, result);
@@ -133,114 +159,70 @@ TEST_F(PerformanceHintTest, TestSession) {
EXPECT_EQ(EINVAL, result);
SessionHint hintId = SessionHint::CPU_LOAD_RESET;
- EXPECT_CALL(*iSession, sendHint(Eq(hintId))).Times(Exactly(1));
+ EXPECT_CALL(*mMockSession, sendHint(Eq(hintId))).Times(Exactly(1));
result = APerformanceHint_sendHint(session, hintId);
EXPECT_EQ(0, result);
usleep(110000); // Sleep for longer than the update timeout.
- EXPECT_CALL(*iSession, sendHint(Eq(hintId))).Times(Exactly(1));
+ EXPECT_CALL(*mMockSession, sendHint(Eq(hintId))).Times(Exactly(1));
result = APerformanceHint_sendHint(session, hintId);
EXPECT_EQ(0, result);
// Expect to get rate limited if we try to send faster than the limiter allows
- EXPECT_CALL(*iSession, sendHint(Eq(hintId))).Times(Exactly(0));
+ EXPECT_CALL(*mMockSession, sendHint(Eq(hintId))).Times(Exactly(0));
result = APerformanceHint_sendHint(session, hintId);
EXPECT_EQ(0, result);
result = APerformanceHint_sendHint(session, static_cast<SessionHint>(-1));
EXPECT_EQ(EINVAL, result);
- EXPECT_CALL(*iSession, close()).Times(Exactly(1));
+ EXPECT_CALL(*mMockSession, close()).Times(Exactly(1));
APerformanceHint_closeSession(session);
}
TEST_F(PerformanceHintTest, SetThreads) {
APerformanceHintManager* manager = createManager();
- std::vector<int32_t> tids;
- tids.push_back(1);
- tids.push_back(2);
- int64_t targetDuration = 56789L;
-
- StrictMock<MockIHintSession>* iSession = new StrictMock<MockIHintSession>();
- sp<IHintSession> session_sp(iSession);
-
- EXPECT_CALL(*mMockIHintManager, createHintSession(_, Eq(tids), Eq(targetDuration), _))
- .Times(Exactly(1))
- .WillRepeatedly(DoAll(SetArgPointee<3>(std::move(session_sp)), Return(Status())));
-
- APerformanceHintSession* session =
- APerformanceHint_createSession(manager, tids.data(), tids.size(), targetDuration);
+ APerformanceHintSession* session = createSession(manager);
ASSERT_TRUE(session);
- std::vector<int32_t> emptyTids;
- int result = APerformanceHint_setThreads(session, emptyTids.data(), emptyTids.size());
+ int32_t emptyTids[2];
+ int result = APerformanceHint_setThreads(session, emptyTids, 0);
EXPECT_EQ(EINVAL, result);
std::vector<int32_t> newTids;
newTids.push_back(1);
newTids.push_back(3);
- EXPECT_CALL(*mMockIHintManager, setHintSessionThreads(_, Eq(newTids)))
- .Times(Exactly(1))
- .WillOnce(Return(Status()));
+ EXPECT_CALL(*mMockIHintManager, setHintSessionThreads(_, Eq(newTids))).Times(Exactly(1));
result = APerformanceHint_setThreads(session, newTids.data(), newTids.size());
EXPECT_EQ(0, result);
- testing::Mock::VerifyAndClearExpectations(mMockIHintManager);
+ testing::Mock::VerifyAndClearExpectations(mMockIHintManager.get());
std::vector<int32_t> invalidTids;
- auto status = Status::fromExceptionCode(binder::Status::Exception::EX_SECURITY);
invalidTids.push_back(4);
invalidTids.push_back(6);
EXPECT_CALL(*mMockIHintManager, setHintSessionThreads(_, Eq(invalidTids)))
.Times(Exactly(1))
- .WillOnce(Return(status));
+ .WillOnce(Return(ByMove(ScopedAStatus::fromExceptionCode(EX_SECURITY))));
result = APerformanceHint_setThreads(session, invalidTids.data(), invalidTids.size());
EXPECT_EQ(EPERM, result);
}
TEST_F(PerformanceHintTest, SetPowerEfficient) {
APerformanceHintManager* manager = createManager();
-
- std::vector<int32_t> tids;
- tids.push_back(1);
- tids.push_back(2);
- int64_t targetDuration = 56789L;
-
- StrictMock<MockIHintSession>* iSession = new StrictMock<MockIHintSession>();
- sp<IHintSession> session_sp(iSession);
-
- EXPECT_CALL(*mMockIHintManager, createHintSession(_, Eq(tids), Eq(targetDuration), _))
- .Times(Exactly(1))
- .WillRepeatedly(DoAll(SetArgPointee<3>(std::move(session_sp)), Return(Status())));
-
- APerformanceHintSession* session =
- APerformanceHint_createSession(manager, tids.data(), tids.size(), targetDuration);
+ APerformanceHintSession* session = createSession(manager);
ASSERT_TRUE(session);
- EXPECT_CALL(*iSession, setMode(_, Eq(true))).Times(Exactly(1));
+ EXPECT_CALL(*mMockSession, setMode(_, Eq(true))).Times(Exactly(1));
int result = APerformanceHint_setPreferPowerEfficiency(session, true);
EXPECT_EQ(0, result);
- EXPECT_CALL(*iSession, setMode(_, Eq(false))).Times(Exactly(1));
+ EXPECT_CALL(*mMockSession, setMode(_, Eq(false))).Times(Exactly(1));
result = APerformanceHint_setPreferPowerEfficiency(session, false);
EXPECT_EQ(0, result);
}
TEST_F(PerformanceHintTest, CreateZeroTargetDurationSession) {
APerformanceHintManager* manager = createManager();
-
- std::vector<int32_t> tids;
- tids.push_back(1);
- tids.push_back(2);
- int64_t targetDuration = 0;
-
- StrictMock<MockIHintSession>* iSession = new StrictMock<MockIHintSession>();
- sp<IHintSession> session_sp(iSession);
-
- EXPECT_CALL(*mMockIHintManager, createHintSession(_, Eq(tids), Eq(targetDuration), _))
- .Times(Exactly(1))
- .WillRepeatedly(DoAll(SetArgPointee<3>(std::move(session_sp)), Return(Status())));
-
- APerformanceHintSession* session =
- APerformanceHint_createSession(manager, tids.data(), tids.size(), targetDuration);
+ APerformanceHintSession* session = createSession(manager, 0);
ASSERT_TRUE(session);
}
@@ -251,12 +233,12 @@ MATCHER_P(WorkDurationEq, expected, "") {
return false;
}
for (int i = 0; i < expected.size(); ++i) {
- android::os::WorkDuration expectedWorkDuration = expected[i];
- android::os::WorkDuration actualWorkDuration = arg[i];
- if (!expectedWorkDuration.equalsWithoutTimestamp(actualWorkDuration)) {
+ WorkDuration expectedWorkDuration = expected[i];
+ WorkDuration actualWorkDuration = arg[i];
+ if (!equalsWithoutTimestamp(expectedWorkDuration, actualWorkDuration)) {
*result_listener << "WorkDuration at [" << i << "] is different: "
- << "Expected: " << expectedWorkDuration
- << ", Actual: " << actualWorkDuration;
+ << "Expected: " << expectedWorkDuration.toString()
+ << ", Actual: " << actualWorkDuration.toString();
return false;
}
}
@@ -265,92 +247,37 @@ MATCHER_P(WorkDurationEq, expected, "") {
TEST_F(PerformanceHintTest, TestAPerformanceHint_reportActualWorkDuration2) {
APerformanceHintManager* manager = createManager();
-
- std::vector<int32_t> tids;
- tids.push_back(1);
- tids.push_back(2);
- int64_t targetDuration = 56789L;
-
- StrictMock<MockIHintSession>* iSession = new StrictMock<MockIHintSession>();
- sp<IHintSession> session_sp(iSession);
-
- EXPECT_CALL(*mMockIHintManager, createHintSession(_, Eq(tids), Eq(targetDuration), _))
- .Times(Exactly(1))
- .WillRepeatedly(DoAll(SetArgPointee<3>(std::move(session_sp)), Return(Status())));
-
- APerformanceHintSession* session =
- APerformanceHint_createSession(manager, tids.data(), tids.size(), targetDuration);
+ APerformanceHintSession* session = createSession(manager);
ASSERT_TRUE(session);
int64_t targetDurationNanos = 10;
- EXPECT_CALL(*iSession, updateTargetWorkDuration(Eq(targetDurationNanos))).Times(Exactly(1));
+ EXPECT_CALL(*mMockSession, updateTargetWorkDuration(Eq(targetDurationNanos))).Times(Exactly(1));
int result = APerformanceHint_updateTargetWorkDuration(session, targetDurationNanos);
EXPECT_EQ(0, result);
usleep(2); // Sleep for longer than preferredUpdateRateNanos.
- {
- std::vector<android::os::WorkDuration> actualWorkDurations;
- android::os::WorkDuration workDuration(1, 20, 13, 8);
- actualWorkDurations.push_back(workDuration);
-
- EXPECT_CALL(*iSession, reportActualWorkDuration2(WorkDurationEq(actualWorkDurations)))
- .Times(Exactly(1));
- result = APerformanceHint_reportActualWorkDuration2(session,
- static_cast<AWorkDuration*>(
- &workDuration));
- EXPECT_EQ(0, result);
- }
-
- {
- std::vector<android::os::WorkDuration> actualWorkDurations;
- android::os::WorkDuration workDuration(-1, 20, 13, 8);
- actualWorkDurations.push_back(workDuration);
-
- EXPECT_CALL(*iSession, reportActualWorkDuration2(WorkDurationEq(actualWorkDurations)))
- .Times(Exactly(1));
- result = APerformanceHint_reportActualWorkDuration2(session,
- static_cast<AWorkDuration*>(
- &workDuration));
- EXPECT_EQ(22, result);
- }
- {
- std::vector<android::os::WorkDuration> actualWorkDurations;
- android::os::WorkDuration workDuration(1, -20, 13, 8);
- actualWorkDurations.push_back(workDuration);
-
- EXPECT_CALL(*iSession, reportActualWorkDuration2(WorkDurationEq(actualWorkDurations)))
- .Times(Exactly(1));
- result = APerformanceHint_reportActualWorkDuration2(session,
- static_cast<AWorkDuration*>(
- &workDuration));
- EXPECT_EQ(22, result);
- }
- {
- std::vector<android::os::WorkDuration> actualWorkDurations;
- android::os::WorkDuration workDuration(1, 20, -13, 8);
- actualWorkDurations.push_back(workDuration);
-
- EXPECT_CALL(*iSession, reportActualWorkDuration2(WorkDurationEq(actualWorkDurations)))
- .Times(Exactly(1));
- result = APerformanceHint_reportActualWorkDuration2(session,
- static_cast<AWorkDuration*>(
- &workDuration));
- EXPECT_EQ(EINVAL, result);
- }
- {
- std::vector<android::os::WorkDuration> actualWorkDurations;
- android::os::WorkDuration workDuration(1, 20, 13, -8);
- actualWorkDurations.push_back(workDuration);
-
- EXPECT_CALL(*iSession, reportActualWorkDuration2(WorkDurationEq(actualWorkDurations)))
+ struct TestPair {
+ WorkDuration duration;
+ int expectedResult;
+ };
+ std::vector<TestPair> testPairs{
+ {{1, 20, 1, 13, 8}, OK}, {{1, -20, 1, 13, 8}, EINVAL},
+ {{1, 20, -1, 13, 8}, EINVAL}, {{1, -20, 1, -13, 8}, EINVAL},
+ {{1, -20, 1, 13, -8}, EINVAL},
+ };
+ for (auto&& pair : testPairs) {
+ std::vector<WorkDuration> actualWorkDurations;
+ actualWorkDurations.push_back(pair.duration);
+
+ EXPECT_CALL(*mMockSession, reportActualWorkDuration2(WorkDurationEq(actualWorkDurations)))
.Times(Exactly(1));
result = APerformanceHint_reportActualWorkDuration2(session,
- static_cast<AWorkDuration*>(
- &workDuration));
- EXPECT_EQ(EINVAL, result);
+ reinterpret_cast<AWorkDuration*>(
+ &pair.duration));
+ EXPECT_EQ(pair.expectedResult, result);
}
- EXPECT_CALL(*iSession, close()).Times(Exactly(1));
+ EXPECT_CALL(*mMockSession, close()).Times(Exactly(1));
APerformanceHint_closeSession(session);
}
diff --git a/nfc/api/current.txt b/nfc/api/current.txt
index 9e0bb86f46a5..da292a818396 100644
--- a/nfc/api/current.txt
+++ b/nfc/api/current.txt
@@ -205,7 +205,10 @@ package android.nfc.cardemulation {
method public boolean isDefaultServiceForCategory(android.content.ComponentName, String);
method public boolean registerAidsForService(android.content.ComponentName, String, java.util.List<java.lang.String>);
method @FlaggedApi("android.nfc.nfc_read_polling_loop") public boolean registerPollingLoopFilterForService(@NonNull android.content.ComponentName, @NonNull String, boolean);
+ method @FlaggedApi("android.nfc.nfc_read_polling_loop") public boolean registerPollingLoopPatternFilterForService(@NonNull android.content.ComponentName, @NonNull String, boolean);
method public boolean removeAidsForService(android.content.ComponentName, String);
+ method @FlaggedApi("android.nfc.nfc_read_polling_loop") public boolean removePollingLoopFilterForService(@NonNull android.content.ComponentName, @NonNull String);
+ method @FlaggedApi("android.nfc.nfc_read_polling_loop") public boolean removePollingLoopPatternFilterForService(@NonNull android.content.ComponentName, @NonNull String);
method @NonNull @RequiresPermission(android.Manifest.permission.NFC) public boolean setOffHostForService(@NonNull android.content.ComponentName, @NonNull String);
method public boolean setPreferredService(android.app.Activity, android.content.ComponentName);
method @FlaggedApi("android.nfc.nfc_observe_mode") public boolean setShouldDefaultToObserveModeForService(@NonNull android.content.ComponentName, boolean);
diff --git a/nfc/java/android/nfc/INfcCardEmulation.aidl b/nfc/java/android/nfc/INfcCardEmulation.aidl
index 85a07b74871b..cb97f23e813c 100644
--- a/nfc/java/android/nfc/INfcCardEmulation.aidl
+++ b/nfc/java/android/nfc/INfcCardEmulation.aidl
@@ -33,10 +33,13 @@ interface INfcCardEmulation
boolean setShouldDefaultToObserveModeForService(int userId, in android.content.ComponentName service, boolean enable);
boolean registerAidGroupForService(int userHandle, in ComponentName service, in AidGroup aidGroup);
boolean registerPollingLoopFilterForService(int userHandle, in ComponentName service, in String pollingLoopFilter, boolean autoTransact);
+ boolean registerPollingLoopPatternFilterForService(int userHandle, in ComponentName service, in String pollingLoopPatternFilter, boolean autoTransact);
boolean setOffHostForService(int userHandle, in ComponentName service, in String offHostSecureElement);
boolean unsetOffHostForService(int userHandle, in ComponentName service);
AidGroup getAidGroupForService(int userHandle, in ComponentName service, String category);
boolean removeAidGroupForService(int userHandle, in ComponentName service, String category);
+ boolean removePollingLoopFilterForService(int userHandle, in ComponentName service, in String pollingLoopFilter);
+ boolean removePollingLoopPatternFilterForService(int userHandle, in ComponentName service, in String pollingLoopPatternFilter);
List<ApduServiceInfo> getServices(int userHandle, in String category);
boolean setPreferredService(in ComponentName service);
boolean unsetPreferredService();
diff --git a/nfc/java/android/nfc/cardemulation/ApduServiceInfo.java b/nfc/java/android/nfc/cardemulation/ApduServiceInfo.java
index 2c7d61eea777..be3c24806c5b 100644
--- a/nfc/java/android/nfc/cardemulation/ApduServiceInfo.java
+++ b/nfc/java/android/nfc/cardemulation/ApduServiceInfo.java
@@ -108,6 +108,8 @@ public final class ApduServiceInfo implements Parcelable {
private final Map<String, Boolean> mAutoTransact;
+ private final Map<Pattern, Boolean> mAutoTransactPatterns;
+
/**
* Whether this service should only be started when the device is unlocked.
*/
@@ -179,7 +181,7 @@ public final class ApduServiceInfo implements Parcelable {
this(info, onHost, description, staticAidGroups, dynamicAidGroups,
requiresUnlock, requiresScreenOn, bannerResource, uid,
settingsActivityName, offHost, staticOffHost, isEnabled,
- new HashMap<String, Boolean>());
+ new HashMap<String, Boolean>(), new HashMap<Pattern, Boolean>());
}
/**
@@ -189,12 +191,13 @@ public final class ApduServiceInfo implements Parcelable {
List<AidGroup> staticAidGroups, List<AidGroup> dynamicAidGroups,
boolean requiresUnlock, boolean requiresScreenOn, int bannerResource, int uid,
String settingsActivityName, String offHost, String staticOffHost, boolean isEnabled,
- HashMap<String, Boolean> autoTransact) {
+ Map<String, Boolean> autoTransact, Map<Pattern, Boolean> autoTransactPatterns) {
this.mService = info;
this.mDescription = description;
this.mStaticAidGroups = new HashMap<String, AidGroup>();
this.mDynamicAidGroups = new HashMap<String, AidGroup>();
this.mAutoTransact = autoTransact;
+ this.mAutoTransactPatterns = autoTransactPatterns;
this.mOffHostName = offHost;
this.mStaticOffHostName = staticOffHost;
this.mOnHost = onHost;
@@ -314,6 +317,7 @@ public final class ApduServiceInfo implements Parcelable {
mStaticAidGroups = new HashMap<String, AidGroup>();
mDynamicAidGroups = new HashMap<String, AidGroup>();
mAutoTransact = new HashMap<String, Boolean>();
+ mAutoTransactPatterns = new HashMap<Pattern, Boolean>();
mOnHost = onHost;
final int depth = parser.getDepth();
@@ -408,6 +412,18 @@ public final class ApduServiceInfo implements Parcelable {
false);
mAutoTransact.put(plf, autoTransact);
a.recycle();
+ } else if (eventType == XmlPullParser.START_TAG
+ && "polling-loop-pattern-filter".equals(tagName) && currentGroup == null) {
+ final TypedArray a = res.obtainAttributes(attrs,
+ com.android.internal.R.styleable.PollingLoopPatternFilter);
+ String plf = a.getString(
+ com.android.internal.R.styleable.PollingLoopPatternFilter_name)
+ .toUpperCase(Locale.ROOT);
+ boolean autoTransact = a.getBoolean(
+ com.android.internal.R.styleable.PollingLoopFilter_autoTransact,
+ false);
+ mAutoTransactPatterns.put(Pattern.compile(plf), autoTransact);
+ a.recycle();
}
}
} catch (NameNotFoundException e) {
@@ -481,7 +497,30 @@ public final class ApduServiceInfo implements Parcelable {
*/
@FlaggedApi(Flags.FLAG_NFC_READ_POLLING_LOOP)
public boolean getShouldAutoTransact(@NonNull String plf) {
- return mAutoTransact.getOrDefault(plf.toUpperCase(Locale.ROOT), false);
+ if (mAutoTransact.getOrDefault(plf.toUpperCase(Locale.ROOT), false)) {
+ return true;
+ }
+ List<Pattern> patternMatches = mAutoTransactPatterns.keySet().stream()
+ .filter(p -> p.matcher(plf).matches()).toList();
+ if (patternMatches == null || patternMatches.size() == 0) {
+ return false;
+ }
+ for (Pattern patternMatch : patternMatches) {
+ if (mAutoTransactPatterns.get(patternMatch)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Returns the current polling loop pattern filters for this service.
+ * @return List of polling loop pattern filters.
+ */
+ @FlaggedApi(Flags.FLAG_NFC_READ_POLLING_LOOP)
+ @NonNull
+ public List<Pattern> getPollingLoopPatternFilters() {
+ return new ArrayList<>(mAutoTransactPatterns.keySet());
}
/**
@@ -683,7 +722,7 @@ public final class ApduServiceInfo implements Parcelable {
* Add a Polling Loop Filter. Custom NFC polling frames that match this filter will be
* delivered to {@link HostApduService#processPollingFrames(List)}. Adding a key with this
* multiple times will cause the value to be overwritten each time.
- * @param pollingLoopFilter the polling loop filter to add, must be a valide hexadecimal string
+ * @param pollingLoopFilter the polling loop filter to add, must be a valid hexadecimal string
*/
@FlaggedApi(Flags.FLAG_NFC_READ_POLLING_LOOP)
public void addPollingLoopFilter(@NonNull String pollingLoopFilter,
@@ -703,6 +742,31 @@ public final class ApduServiceInfo implements Parcelable {
}
/**
+ * Add a Polling Loop Pattern Filter. Custom NFC polling frames that match this filter will be
+ * delivered to {@link HostApduService#processPollingFrames(List)}. Adding a key with this
+ * multiple times will cause the value to be overwritten each time.
+ * @param pollingLoopPatternFilter the polling loop pattern filter to add, must be a valid
+ * regex to match a hexadecimal string
+ */
+ @FlaggedApi(Flags.FLAG_NFC_READ_POLLING_LOOP)
+ public void addPollingLoopPatternFilter(@NonNull String pollingLoopPatternFilter,
+ boolean autoTransact) {
+ mAutoTransactPatterns.put(Pattern.compile(pollingLoopPatternFilter), autoTransact);
+
+ }
+
+ /**
+ * Remove a Polling Loop Pattern Filter. Custom NFC polling frames that match this filter will
+ * no longer be delivered to {@link HostApduService#processPollingFrames(List)}.
+ * @param pollingLoopPatternFilter this polling loop filter to add.
+ */
+ @FlaggedApi(Flags.FLAG_NFC_READ_POLLING_LOOP)
+ public void removePollingLoopPatternFilter(@NonNull String pollingLoopPatternFilter) {
+ mAutoTransactPatterns.remove(
+ Pattern.compile(pollingLoopPatternFilter.toUpperCase(Locale.ROOT)));
+ }
+
+ /**
* Sets the off host Secure Element.
* @param offHost Secure Element to set. Only accept strings with prefix SIM or prefix eSE.
* Ref: GSMA TS.26 - NFC Handset Requirements
@@ -856,6 +920,8 @@ public final class ApduServiceInfo implements Parcelable {
dest.writeInt(mCategoryOtherServiceEnabled ? 1 : 0);
dest.writeInt(mAutoTransact.size());
dest.writeMap(mAutoTransact);
+ dest.writeInt(mAutoTransactPatterns.size());
+ dest.writeMap(mAutoTransactPatterns);
};
@FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE)
@@ -889,10 +955,15 @@ public final class ApduServiceInfo implements Parcelable {
new HashMap<String, Boolean>(autoTransactSize);
source.readMap(autoTransact, getClass().getClassLoader(),
String.class, Boolean.class);
+ int autoTransactPatternSize = source.readInt();
+ HashMap<Pattern, Boolean> autoTransactPatterns =
+ new HashMap<Pattern, Boolean>(autoTransactSize);
+ source.readMap(autoTransactPatterns, getClass().getClassLoader(),
+ Pattern.class, Boolean.class);
return new ApduServiceInfo(info, onHost, description, staticAidGroups,
dynamicAidGroups, requiresUnlock, requiresScreenOn, bannerResource, uid,
settingsActivityName, offHostName, staticOffHostName,
- isEnabled, autoTransact);
+ isEnabled, autoTransact, autoTransactPatterns);
}
@Override
diff --git a/nfc/java/android/nfc/cardemulation/CardEmulation.java b/nfc/java/android/nfc/cardemulation/CardEmulation.java
index e55f5403ed83..67697a429a32 100644
--- a/nfc/java/android/nfc/cardemulation/CardEmulation.java
+++ b/nfc/java/android/nfc/cardemulation/CardEmulation.java
@@ -45,6 +45,7 @@ import android.util.Log;
import java.util.HashMap;
import java.util.HexFormat;
import java.util.List;
+import java.util.Locale;
import java.util.regex.Pattern;
/**
@@ -61,6 +62,7 @@ import java.util.regex.Pattern;
*/
public final class CardEmulation {
private static final Pattern AID_PATTERN = Pattern.compile("[0-9A-Fa-f]{10,32}\\*?\\#?");
+ private static final Pattern PLPF_PATTERN = Pattern.compile("[0-9A-Fa-f,\\?,\\*\\.]*");
static final String TAG = "CardEmulation";
@@ -379,9 +381,9 @@ public final class CardEmulation {
* auto-transact or not. The PLF can be sequence of an
* even number of at least 2 hexadecimal numbers (0-9, A-F or a-f), representing a series of
* bytes. When non-standard polling loop frame matches this sequence exactly, it may be
- * delivered to {@link HostApduService#processPollingFrames(List)}. If auto-transact is set to
- * true, then observe mode will also be disabled. if this service is currently preferred or
- * there are no other services registered for this filter.
+ * delivered to {@link HostApduService#processPollingFrames(List)}. If auto-transact
+ * is set to true and this service is currently preferred or there are no other services
+ * registered for this filter then observe mode will also be disabled.
* @param service The HostApduService to register the filter for
* @param pollingLoopFilter The filter to register
* @param autoTransact true to have the NFC stack automatically disable observe mode and allow
@@ -416,6 +418,128 @@ public final class CardEmulation {
}
/**
+ * Unregister a polling loop filter (PLF) for a HostApduService. If the PLF had previously been
+ * registered via {@link #registerPollingLoopFilterForService(ComponentName, String, boolean)}
+ * for this service it will be removed.
+ * @param service The HostApduService to unregister the filter for
+ * @param pollingLoopFilter The filter to unregister
+ * @return true if the filter was removed, false otherwise
+ * @throws IllegalArgumentException if the passed in string doesn't parse to at least one byte
+ */
+ @FlaggedApi(Flags.FLAG_NFC_READ_POLLING_LOOP)
+ public boolean removePollingLoopFilterForService(@NonNull ComponentName service,
+ @NonNull String pollingLoopFilter) {
+ pollingLoopFilter = validatePollingLoopFilter(pollingLoopFilter);
+
+ try {
+ return sService.removePollingLoopFilterForService(mContext.getUser().getIdentifier(),
+ service, pollingLoopFilter);
+ } catch (RemoteException e) {
+ // Try one more time
+ recoverService();
+ if (sService == null) {
+ Log.e(TAG, "Failed to recover CardEmulationService.");
+ return false;
+ }
+ try {
+ return sService.removePollingLoopFilterForService(
+ mContext.getUser().getIdentifier(), service,
+ pollingLoopFilter);
+ } catch (RemoteException ee) {
+ Log.e(TAG, "Failed to reach CardEmulationService.");
+ return false;
+ }
+ }
+ }
+
+
+ /**
+ * Register a polling loop pattern filter (PLPF) for a HostApduService and indicate whether it
+ * should auto-transact or not. The pattern may include the characters 0-9 and A-F as well as
+ * the regular expression operators `.`, `?` and `*`. When the beginning of anon-standard
+ * polling loop frame matches this sequence exactly, it may be delivered to
+ * {@link HostApduService#processPollingFrames(List)}. If auto-transact is set to true and this
+ * service is currently preferred or there are no other services registered for this filter
+ * then observe mode will also be disabled.
+ * @param service The HostApduService to register the filter for
+ * @param pollingLoopPatternFilter The pattern filter to register, must to be compatible with
+ * {@link java.util.regex.Pattern#compile(String)} and only contain hexadecimal numbers
+ * and `.`, `?` and `*` operators
+ * @param autoTransact true to have the NFC stack automatically disable observe mode and allow
+ * transactions to proceed when this filter matches, false otherwise
+ * @return true if the filter was registered, false otherwise
+ * @throws IllegalArgumentException if the filter containst elements other than hexadecimal
+ * numbers and `.`, `?` and `*` operators
+ * @throws java.util.regex.PatternSyntaxException if the regex syntax is invalid
+ */
+ @FlaggedApi(Flags.FLAG_NFC_READ_POLLING_LOOP)
+ public boolean registerPollingLoopPatternFilterForService(@NonNull ComponentName service,
+ @NonNull String pollingLoopPatternFilter, boolean autoTransact) {
+ pollingLoopPatternFilter = validatePollingLoopPatternFilter(pollingLoopPatternFilter);
+
+ try {
+ return sService.registerPollingLoopPatternFilterForService(
+ mContext.getUser().getIdentifier(),
+ service, pollingLoopPatternFilter, autoTransact);
+ } catch (RemoteException e) {
+ // Try one more time
+ recoverService();
+ if (sService == null) {
+ Log.e(TAG, "Failed to recover CardEmulationService.");
+ return false;
+ }
+ try {
+ return sService.registerPollingLoopPatternFilterForService(
+ mContext.getUser().getIdentifier(), service,
+ pollingLoopPatternFilter, autoTransact);
+ } catch (RemoteException ee) {
+ Log.e(TAG, "Failed to reach CardEmulationService.");
+ return false;
+ }
+ }
+ }
+
+ /**
+ * Unregister a polling loop pattern filter (PLPF) for a HostApduService. If the PLF had
+ * previously been registered via
+ * {@link #registerPollingLoopFilterForService(ComponentName, String, boolean)} for this
+ * service it will be removed.
+ * @param service The HostApduService to unregister the filter for
+ * @param pollingLoopPatternFilter The filter to unregister, must to be compatible with
+ * {@link java.util.regex.Pattern#compile(String)} and only contain hexadecimal numbers
+ * and`.`, `?` and `*` operators
+ * @return true if the filter was removed, false otherwise
+ * @throws IllegalArgumentException if the filter containst elements other than hexadecimal
+ * numbers and `.`, `?` and `*` operators
+ * @throws java.util.regex.PatternSyntaxException if the regex syntax is invalid
+ */
+ @FlaggedApi(Flags.FLAG_NFC_READ_POLLING_LOOP)
+ public boolean removePollingLoopPatternFilterForService(@NonNull ComponentName service,
+ @NonNull String pollingLoopPatternFilter) {
+ pollingLoopPatternFilter = validatePollingLoopPatternFilter(pollingLoopPatternFilter);
+
+ try {
+ return sService.removePollingLoopPatternFilterForService(
+ mContext.getUser().getIdentifier(), service, pollingLoopPatternFilter);
+ } catch (RemoteException e) {
+ // Try one more time
+ recoverService();
+ if (sService == null) {
+ Log.e(TAG, "Failed to recover CardEmulationService.");
+ return false;
+ }
+ try {
+ return sService.removePollingLoopPatternFilterForService(
+ mContext.getUser().getIdentifier(), service,
+ pollingLoopPatternFilter);
+ } catch (RemoteException ee) {
+ Log.e(TAG, "Failed to reach CardEmulationService.");
+ return false;
+ }
+ }
+ }
+
+ /**
* Registers a list of AIDs for a specific category for the
* specified service.
*
@@ -1027,6 +1151,23 @@ public final class CardEmulation {
}
/**
+ * Tests the validity of the polling loop pattern filter.
+ * @param pollingLoopPatternFilter The polling loop filter to test.
+ *
+ * @hide
+ */
+ @FlaggedApi(Flags.FLAG_NFC_READ_POLLING_LOOP)
+ public static @NonNull String validatePollingLoopPatternFilter(
+ @NonNull String pollingLoopPatternFilter) {
+ // Verify hex characters
+ if (!PLPF_PATTERN.matcher(pollingLoopPatternFilter).matches()) {
+ throw new IllegalArgumentException(
+ "Polling loop pattern filters may only contain hexadecimal numbers, ?s and *s");
+ }
+ return Pattern.compile(pollingLoopPatternFilter.toUpperCase(Locale.ROOT)).toString();
+ }
+
+ /**
* A valid AID according to ISO/IEC 7816-4:
* <ul>
* <li>Has >= 5 bytes and <=16 bytes (>=10 hex chars and <= 32 hex chars)
diff --git a/packages/CompanionDeviceManager/res/values-af/strings.xml b/packages/CompanionDeviceManager/res/values-af/strings.xml
index 1f39509d4aad..94d9aaa67f20 100644
--- a/packages/CompanionDeviceManager/res/values-af/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-af/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"toestel"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Hierdie app sal toegang tot hierdie toestemmings op jou <xliff:g id="DEVICE_NAME">%1$s</xliff:g> hê"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Gee &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; toegang tot hierdie inligting op jou foon"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Oorkruistoestel-dienste"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> versoek tans namens jou <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> toestemming om apps tussen jou toestelle te stroom"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Gee &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; toegang tot hierdie inligting op jou foon"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play Dienste"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> versoek tans namens jou <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> toegang tot jou foon se foto’s, media en kennisgewings"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Laat &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; toe om hierdie handeling uit te voer?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> versoek tans namens jou <xliff:g id="DEVICE_NAME">%2$s</xliff:g> toestemming om apps en ander stelselkenmerke na toestelle in die omtrek te stroom"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"toestel"</string>
<string name="summary_generic" msgid="1761976003668044801">"Hierdie app sal inligting kan sinkroniseer, soos die naam van iemand wat bel, tussen jou foon en die gekose toestel"</string>
diff --git a/packages/CompanionDeviceManager/res/values-am/strings.xml b/packages/CompanionDeviceManager/res/values-am/strings.xml
index 007173cb8fad..b53ac7467367 100644
--- a/packages/CompanionDeviceManager/res/values-am/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-am/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"መሣሪያ"</string>
<string name="summary_glasses" msgid="2872254734959842579">"ይህ መተግበሪያ በእርስዎ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ላይ እነዚህን ፈቃዶች እንዲደርስ ይፈቀድለታል"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ይህን መረጃ ከስልክዎ እንዲደርስበት ይፍቀዱለት"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"መሣሪያ ተሻጋሪ አገልግሎቶች"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> በእርስዎ መሣሪያዎች መካከል መተግበሪያዎችን በዥረት ለመልቀቅ የእርስዎን <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ወክሎ ፈቃድ እየጠየቀ ነው"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"የGoogle Play አገልግሎቶች"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> የስልክዎን ፎቶዎች፣ ሚዲያ እና ማሳወቂያዎች ለመድረስ የእርስዎን <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ወክሎ ፈቃድ እየጠየቀ ነው"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ይህን እርምጃ እንዲወስድ ፈቃድ ይሰጠው?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> የእርስዎን <xliff:g id="DEVICE_NAME">%2$s</xliff:g> በመወከል በአቅራቢያ ላሉ መሣሪያዎች መተግበሪያዎች እና ሌሎች የስርዓት ባህሪያትን በዥረት ለመልቀቅ ፈቃድ እየጠየቀ ነው"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"መሣሪያ"</string>
<string name="summary_generic" msgid="1761976003668044801">"ይህ መተግበሪያ እንደ የሚደውል ሰው ስም ያለ መረጃን በስልክዎ እና በተመረጠው መሣሪያ መካከል ማስመር ይችላል"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ar/strings.xml b/packages/CompanionDeviceManager/res/values-ar/strings.xml
index 961c63bd2b11..a1e09b26afd0 100644
--- a/packages/CompanionDeviceManager/res/values-ar/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ar/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"جهاز"</string>
<string name="summary_glasses" msgid="2872254734959842579">"سيتم السماح لهذا التطبيق بالوصول إلى هذه الأذونات على \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string>
<string name="title_app_streaming" msgid="2270331024626446950">"‏السماح لتطبيق &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; بالوصول إلى هذه المعلومات من هاتفك"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"الخدمات التي تعمل بين الأجهزة"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"يطلب تطبيق \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" الحصول على إذن نيابةً عن \"<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>\" لبثّ محتوى التطبيقات بين أجهزتك."</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"‏خدمات Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"يطلب تطبيق \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" الحصول على إذن نيابةً عن \"<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>\" للوصول إلى الصور والوسائط والإشعارات في هاتفك."</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"‏هل تريد السماح للتطبيق &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; باتّخاذ هذا الإجراء؟"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"يطلب \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" الحصول على إذن نيابةً عن \"<xliff:g id="DEVICE_NAME">%2$s</xliff:g>\" لبثّ التطبيقات وميزات النظام الأخرى إلى أجهزتك المجاورة."</string>
<string name="profile_name_generic" msgid="6851028682723034988">"جهاز"</string>
<string name="summary_generic" msgid="1761976003668044801">"سيتمكّن هذا التطبيق من مزامنة المعلومات، مثل اسم المتصل، بين هاتفك والجهاز المحدّد."</string>
diff --git a/packages/CompanionDeviceManager/res/values-as/strings.xml b/packages/CompanionDeviceManager/res/values-as/strings.xml
index 623b2121e39a..481ce24879ca 100644
--- a/packages/CompanionDeviceManager/res/values-as/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-as/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"ডিভাইচ"</string>
<string name="summary_glasses" msgid="2872254734959842579">"এই এপ্‌টোক আপোনাৰ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ত এই অনুমতিসমূহ এক্সেছ কৰিবলৈ অনুমতি দিয়া হ’ব"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;ক আপোনাৰ ফ’নৰ পৰা এই তথ্যখিনি এক্সেছ কৰাৰ অনুমতি দিয়ক"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"ক্ৰছ-ডিভাইচ সেৱাসমূহ"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g>এ আপোনাৰ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>ৰ হৈ আপোনাৰ ডিভাইচসমূহৰ মাজত এপ্‌ ষ্ট্ৰীম কৰাৰ বাবে অনুৰোধ জনাইছে"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play সেৱা"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g>এ আপোনাৰ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>ৰ হৈ আপোনাৰ ফ’নৰ ফট’, মিডিয়া আৰু জাননী এক্সেছ কৰাৰ বাবে অনুৰোধ জনাইছে"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt;ক এই কাৰ্যটো সম্পাদন কৰিবলৈ দিবনে?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g>এ আপোনাৰ <xliff:g id="DEVICE_NAME">%2$s</xliff:g>ৰ হৈ নিকটৱৰ্তী ডিভাইচত এপ্‌ আৰু ছিষ্টেমৰ অন্য সুবিধাসমূহ ষ্ট্ৰীম কৰাৰ অনুমতি দিবলৈ অনুৰোধ জনাইছে"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"ডিভাইচ"</string>
<string name="summary_generic" msgid="1761976003668044801">"এই এপ্‌টোৱে আপোনাৰ ফ’ন আৰু বাছনি কৰা ডিভাইচটোৰ মাজত কল কৰোঁতাৰ নামৰ দৰে তথ্য ছিংক কৰিব পাৰিব"</string>
diff --git a/packages/CompanionDeviceManager/res/values-az/strings.xml b/packages/CompanionDeviceManager/res/values-az/strings.xml
index 65f3a62cdb57..4e71b8c58f0c 100644
--- a/packages/CompanionDeviceManager/res/values-az/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-az/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"cihazda"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Bu tətbiq <xliff:g id="DEVICE_NAME">%1$s</xliff:g> bu icazələrə daxil ola biləcək"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; tətbiqinə telefonunuzdan bu məlumata giriş icazəsi verin"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Cihazlararası xidmətlər"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> adından cihazlar arasında tətbiqləri yayımlamaq icazəsi istəyir"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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; tətbiqinə telefonunuzdan bu məlumata giriş icazəsi verin"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play xidmətləri"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> adından telefonun foto, media və bildirişlərinə giriş icazəsi istəyir"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; cihazına bu əməliyyatı yerinə yetirmək icazəsi verilsin?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="DEVICE_NAME">%2$s</xliff:g> adından tətbiq və digər sistem funksiyalarını yaxınlıqdakı cihazlara yayımlamaq icazəsi sitəyir"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"cihaz"</string>
<string name="summary_generic" msgid="1761976003668044801">"Tətbiq zəng edənin adı kimi məlumatları telefon ilə seçilmiş cihaz arasında sinxronlaşdıracaq"</string>
diff --git a/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml b/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml
index 314d9ffe43b4..6504ab424e20 100644
--- a/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"uređaj"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Ovoj aplikaciji će biti dozvoljeno da pristupa ovim dozvolama na vašem uređaju (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>)"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Dozvolite da &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; pristupa ovim informacijama sa telefona"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Usluge na više uređaja"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> zahteva dozvolu u ime uređaja <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> za strimovanje aplikacija između uređaja"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Dozvolite da &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; pristupa ovim informacijama sa telefona"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play usluge"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> zahteva dozvolu u ime uređaja <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> za pristup slikama, medijskom sadržaju i obaveštenjima sa telefona"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Želite li da dozvolite da &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; obavi ovu radnju?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> zahteva dozvolu u ime uređaja <xliff:g id="DEVICE_NAME">%2$s</xliff:g> da strimuje aplikacije i druge sistemske funkcije na uređaje u blizini"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"uređaj"</string>
<string name="summary_generic" msgid="1761976003668044801">"Ova aplikacija će moći da sinhronizuje podatke, poput imena osobe koja upućuje poziv, između telefona i odabranog uređaja"</string>
diff --git a/packages/CompanionDeviceManager/res/values-be/strings.xml b/packages/CompanionDeviceManager/res/values-be/strings.xml
index fc17899768c9..fcc587a5787b 100644
--- a/packages/CompanionDeviceManager/res/values-be/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-be/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"прылада"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Гэтая праграма будзе мець на вашай прыладзе \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\" наступныя дазволы"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Дазвольце праграме &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; мець доступ да гэтай інфармацыі з вашага тэлефона"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Сэрвісы для некалькіх прылад"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"Праграма \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" запытвае дазвол ад імя вашай прылады \"<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>\" на трансляцыю праграм паміж вашымі прыладамі"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Сэрвісы Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"Праграма \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" запытвае дазвол ад імя вашай прылады \"<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>\" на доступ да фота, медыяфайлаў і апавяшчэнняў на вашым тэлефоне"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Дазволіць прыладзе &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; выканаць гэта дзеянне?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Праграма \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" запытвае дазвол ад імя вашай прылады \"<xliff:g id="DEVICE_NAME">%2$s</xliff:g>\" на перадачу плынню змесціва праграм і іншых функцый сістэмы на прылады паблізу"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"прылада"</string>
<string name="summary_generic" msgid="1761976003668044801">"Гэта праграма зможа сінхранізаваць інфармацыю (напрыклад, імя таго, хто звоніць) паміж тэлефонам і выбранай прыладай"</string>
diff --git a/packages/CompanionDeviceManager/res/values-bg/strings.xml b/packages/CompanionDeviceManager/res/values-bg/strings.xml
index c9f85dd2ec6b..4fb9ceed1c6c 100644
--- a/packages/CompanionDeviceManager/res/values-bg/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-bg/strings.xml
@@ -26,8 +26,11 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"устройство"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Това приложение ще има достъп до следните разрешения за вашето <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</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="title_app_streaming_with_mirroring" msgid="3364582597581570658">"Да се разреши ли на &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; да предава поточно приложенията на телефона ви?"</string>
+ <string name="summary_app_streaming" msgid="295548145144086753">"%1$s ще има достъп до всичко, което се показва или възпроизвежда на телефона, включително аудиосъдържание, снимки, пароли и съобщения.&lt;br/&gt;&lt;br/&gt;%1$s ще може да предава поточно приложения, докато не премахнете това разрешение."</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Услуги за различни устройства"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> иска разрешение от името на <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> да предава поточно приложения между устройствата ви"</string>
+ <string name="helper_summary_app_streaming_with_mirroring" msgid="6138581029144467467">"<xliff:g id="APP_NAME">%1$s</xliff:g> иска разрешение от името на <xliff:g id="DISPLAY_NAME">%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>
@@ -35,6 +38,8 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Услуги за Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> иска разрешение от името на <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> за достъп до снимките, мултимедията и известията на телефона ви"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Разрешавате ли на &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; да предприема това действие?"</string>
+ <string name="title_nearby_device_streaming_with_mirroring" msgid="242855799919611657">"Да се разреши ли на &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; да предава поточно приложенията и системните функции на телефона ви?"</string>
+ <string name="summary_nearby_device_streaming" msgid="4039565463149145573">"%1$s ще има достъп до всичко, което се показва или възпроизвежда на телефона, включително аудиосъдържание, снимки, данни за плащане, пароли и съобщения.&lt;br/&gt;&lt;br/&gt;%1$s ще може да предава поточно приложения и системни функции, докато не премахнете това разрешение."</string>
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> иска разрешение от името на <xliff:g id="DEVICE_NAME">%2$s</xliff:g> да предава поточно приложения и други системни функции към устройства в близост"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"устройство"</string>
<string name="summary_generic" msgid="1761976003668044801">"Това приложение ще може да синхронизира различна информация, като например името на обаждащия се, между телефона ви и избраното устройство"</string>
diff --git a/packages/CompanionDeviceManager/res/values-bn/strings.xml b/packages/CompanionDeviceManager/res/values-bn/strings.xml
index c3ceda07b211..30447cef4bdb 100644
--- a/packages/CompanionDeviceManager/res/values-bn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-bn/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"ডিভাইস"</string>
<string name="summary_glasses" msgid="2872254734959842579">"এই অ্যাপ আপনার <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-এ এইসব অনুমতি অ্যাক্সেস করতে পারবে"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"আপনার ফোন থেকে &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; অ্যাপকে এই তথ্য অ্যাক্সেস করার অনুমতি দিন"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"ক্রস-ডিভাইস পরিষেবা"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"আপনার ডিভাইসগুলির মধ্যে অ্যাপ স্ট্রিম করার জন্য <xliff:g id="APP_NAME">%1$s</xliff:g>, <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>-এর হয়ে অনুমতি চাইছে"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play পরিষেবা"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"আপনার ফোনের ফটো, মিডিয়া এবং তথ্য অ্যাক্সেস করার জন্য <xliff:g id="APP_NAME">%1$s</xliff:g>, <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>-এর হয়ে অনুমতি চাইছে"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt;-কে এই কাজটি করতে দেবেন?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"আশেপাশের ডিভাইসে অ্যাপ ও অন্যান্য সিস্টেম ফিচার স্ট্রিম করার জন্য আপনার <xliff:g id="DEVICE_NAME">%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="1761976003668044801">"এই অ্যাপ, আপনার ফোন এবং বেছে নেওয়া ডিভাইসের মধ্যে তথ্য সিঙ্ক করতে পারবে, যেমন কোনও কলারের নাম"</string>
diff --git a/packages/CompanionDeviceManager/res/values-bs/strings.xml b/packages/CompanionDeviceManager/res/values-bs/strings.xml
index 259a06a245d7..87c5349bb01c 100644
--- a/packages/CompanionDeviceManager/res/values-bs/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-bs/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"uređaj"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Aplikaciji će biti dozvoljen pristup ovim odobrenjima na uređaju <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Dozvolite da aplikacija &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; pristupa ovim informacijama s telefona"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Usluga na više uređaja"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> u ime uređaja <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> zahtijeva odobrenje da prenosi aplikacije između vaših uređaja"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Dozvolite aplikaciji &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; da pristupa ovim informacijama s vašeg telefona"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play usluge"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> u ime uređaja <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> zahtijeva odobrenje da pristupi fotografijama, medijima i obavještenjima na telefonu"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Dozvoliti uređaju &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; da poduzme ovu radnju?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> u ime uređaja <xliff:g id="DEVICE_NAME">%2$s</xliff:g> traži odobrenje da prenosi aplikacije i druge funkcije sistema na uređajima u blizini"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"uređaj"</string>
<string name="summary_generic" msgid="1761976003668044801">"Ova aplikacija će moći sinhronizirati informacije, kao što je ime osobe koja upućuje poziv, između vašeg telefona i odabranog uređaja"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ca/strings.xml b/packages/CompanionDeviceManager/res/values-ca/strings.xml
index 62fe858559b0..40c6aac7daf5 100644
--- a/packages/CompanionDeviceManager/res/values-ca/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ca/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"dispositiu"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Aquesta aplicació podrà accedir a aquests permisos del dispositiu (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>)"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Permet que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; accedeixi a aquesta informació del telèfon"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Serveis multidispositiu"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> demana permís en nom del teu dispositiu (<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>) per reproduir en continu aplicacions entre els dispositius"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Permet que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; accedeixi a aquesta informació del telèfon"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Serveis de Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> demana permís en nom del teu dispositiu (<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>) per accedir a les fotos, el contingut multimèdia i les notificacions del telèfon"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Vols permetre que &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; dugui a terme aquesta acció?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> sol·licita permís en nom del teu dispositiu (<xliff:g id="DEVICE_NAME">%2$s</xliff:g>) per reproduir en continu aplicacions i altres funcions del sistema en dispositius propers"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"dispositiu"</string>
<string name="summary_generic" msgid="1761976003668044801">"Aquesta aplicació podrà sincronitzar informació, com ara el nom d\'algú que truca, entre el teu telèfon i el dispositiu triat"</string>
diff --git a/packages/CompanionDeviceManager/res/values-cs/strings.xml b/packages/CompanionDeviceManager/res/values-cs/strings.xml
index 76c0a4a774e7..7d7d74f73eb5 100644
--- a/packages/CompanionDeviceManager/res/values-cs/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-cs/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"zařízení"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Tato aplikace bude mít ve vašem <xliff:g id="DEVICE_NAME">%1$s</xliff:g> povolený přístup k těmto oprávněním"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Povolte aplikaci &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; přístup k těmto informacím z vašeho telefonu"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Služby pro více zařízení"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> požaduje za vaše zařízení <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> oprávnění ke streamování aplikací mezi zařízeními"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Povolte aplikaci &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; přístup k těmto informacím z vašeho telefonu"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Služby Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> požaduje za vaše zařízení <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> oprávnění k přístupu k fotkám, médiím a oznámením v telefonu"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Povolit zařízení &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; podniknout tuto akci?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> žádá jménem vašeho zařízení <xliff:g id="DEVICE_NAME">%2$s</xliff:g> o oprávnění streamovat aplikace a další systémové funkce do zařízení v okolí"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"zařízení"</string>
<string name="summary_generic" msgid="1761976003668044801">"Tato aplikace bude moci synchronizovat údaje, jako je jméno volajícího, mezi vaším telefonem a vybraným zařízením"</string>
diff --git a/packages/CompanionDeviceManager/res/values-da/strings.xml b/packages/CompanionDeviceManager/res/values-da/strings.xml
index f765c83b28ff..c4fa73a9392d 100644
--- a/packages/CompanionDeviceManager/res/values-da/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-da/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"enhed"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Denne app får adgang til disse tilladelser på din <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Giv &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; adgang til disse oplysninger fra din telefon"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Tjenester, som kan tilsluttes en anden enhed"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> anmoder om tilladelse på vegne af din <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> til at streame apps mellem dine enheder"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Tillad, at &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; får adgang til disse oplysninger fra din telefon"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play-tjenester"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> anmoder om tilladelse på vegne af din <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> til at få adgang til din telefons billeder, medier og notifikationer"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Vil du tillade, at &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; foretager denne handling?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> anmoder om tilladelse på vegne af din <xliff:g id="DEVICE_NAME">%2$s</xliff:g> til at streame apps og andre systemfunktioner til enheder i nærheden"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"enhed"</string>
<string name="summary_generic" msgid="1761976003668044801">"Denne app vil kunne synkronisere oplysninger som f.eks. navnet på en person, der ringer, mellem din telefon og den valgte enhed"</string>
diff --git a/packages/CompanionDeviceManager/res/values-de/strings.xml b/packages/CompanionDeviceManager/res/values-de/strings.xml
index 61c9b64071e1..d435829d59bb 100644
--- a/packages/CompanionDeviceManager/res/values-de/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-de/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"Gerät"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Diese App darf dann auf diese Berechtigungen auf deinem <xliff:g id="DEVICE_NAME">%1$s</xliff:g> zugreifen:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; Zugriff auf diese Informationen von deinem Smartphone gewähren"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Geräteübergreifende Dienste"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> bittet für dein <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> um die Berechtigung zum Streamen von Apps zwischen deinen Geräten"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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; Zugriff auf diese Informationen von deinem Smartphone gewähren"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play-Dienste"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> bittet im Namen deines <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> um die Berechtigung zum Zugriff auf die Fotos, Medien und Benachrichtigungen deines Smartphones"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Darf das Gerät &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; diese Aktion ausführen?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> bittet für dein Gerät (<xliff:g id="DEVICE_NAME">%2$s</xliff:g>) um die Berechtigung, Apps und andere Systemfunktionen auf Geräte in der Nähe zu streamen"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"Gerät"</string>
<string name="summary_generic" msgid="1761976003668044801">"Diese App kann dann Daten wie den Namen eines Anrufers zwischen deinem Smartphone und dem ausgewählten Gerät synchronisieren"</string>
diff --git a/packages/CompanionDeviceManager/res/values-el/strings.xml b/packages/CompanionDeviceManager/res/values-el/strings.xml
index a95d06351427..2fbe35376732 100644
--- a/packages/CompanionDeviceManager/res/values-el/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-el/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"συσκευή"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Αυτή η εφαρμογή θα μπορεί να έχει πρόσβαση σε αυτές τις άδειες στη συσκευή <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Να επιτρέπεται στο &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; η πρόσβαση σε αυτές τις πληροφορίες από το τηλέφωνό σας."</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Υπηρεσίες πολλών συσκευών"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> ζητά εκ μέρους της συσκευής σας <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> άδεια για ροή εφαρμογών μεταξύ των συσκευών σας"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Υπηρεσίες Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> ζητά εκ μέρους της συσκευής σας <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> άδεια για πρόσβαση στις φωτογραφίες, τα αρχεία μέσων και τις ειδοποιήσεις του τηλεφώνου σας"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Να επιτρέπεται στη συσκευή &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; να εκτελεί αυτή την ενέργεια;"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> ζητά άδεια εκ μέρους της συσκευής σας <xliff:g id="DEVICE_NAME">%2$s</xliff:g> για ροή εφαρμογών και άλλων λειτουργιών του συστήματος σε συσκευές σε κοντινή απόσταση"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"συσκευή"</string>
<string name="summary_generic" msgid="1761976003668044801">"Αυτή η εφαρμογή θα μπορεί να συγχρονίζει πληροφορίες μεταξύ του τηλεφώνου και της επιλεγμένης συσκευής σας, όπως το όνομα ενός ατόμου που σας καλεί."</string>
diff --git a/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml b/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml
index 8b506ed20963..ee8eca0e24e3 100644
--- a/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"device"</string>
<string name="summary_glasses" msgid="2872254734959842579">"This app will be allowed to access these permissions on your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Allow &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; to access this information from your phone"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Cross-device services"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> to stream apps between your devices"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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; to access this information from your phone"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play services"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> to access your phone’s photos, media and notifications"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Allow &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; to take this action?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DEVICE_NAME">%2$s</xliff:g> to stream apps and other system features to nearby devices"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"device"</string>
<string name="summary_generic" msgid="1761976003668044801">"This app will be able to sync info, like the name of someone calling, between your phone and the chosen device"</string>
diff --git a/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml b/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml
index 4f463f692c37..0160609b3b44 100644
--- a/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml
@@ -26,8 +26,11 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"device"</string>
<string name="summary_glasses" msgid="2872254734959842579">"This app will be allowed to access these permissions on your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Allow &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; to access this information from your phone"</string>
+ <string name="title_app_streaming_with_mirroring" msgid="3364582597581570658">"Allow &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; to stream your phone’s apps?"</string>
+ <string name="summary_app_streaming" msgid="295548145144086753">"%1$s will have access to anything that’s visible or played on the phone, including audio, photos, passwords, and messages.&lt;br/&gt;&lt;br/&gt;%1$s will be able to stream apps until you remove access to this permission."</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Cross-device services"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> to stream apps between your devices"</string>
+ <string name="helper_summary_app_streaming_with_mirroring" msgid="6138581029144467467">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> to display and stream apps between your devices"</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; to access this information from your phone"</string>
@@ -35,6 +38,8 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play services"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> to access your phone’s photos, media, and notifications"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Allow &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; to take this action?"</string>
+ <string name="title_nearby_device_streaming_with_mirroring" msgid="242855799919611657">"Allow &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; to stream your phone’s apps and system features?"</string>
+ <string name="summary_nearby_device_streaming" msgid="4039565463149145573">"%1$s will have access to anything that’s visible or played on your phone, including audio, photos, payment info, passwords, and messages.&lt;br/&gt;&lt;br/&gt;%1$s will be able to stream apps and system features until you remove access to this permission."</string>
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DEVICE_NAME">%2$s</xliff:g> to stream apps and other system features to nearby devices"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"device"</string>
<string name="summary_generic" msgid="1761976003668044801">"This app will be able to sync info, like the name of someone calling, between your phone and the chosen device"</string>
diff --git a/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml b/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml
index 8b506ed20963..ee8eca0e24e3 100644
--- a/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"device"</string>
<string name="summary_glasses" msgid="2872254734959842579">"This app will be allowed to access these permissions on your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Allow &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; to access this information from your phone"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Cross-device services"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> to stream apps between your devices"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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; to access this information from your phone"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play services"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> to access your phone’s photos, media and notifications"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Allow &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; to take this action?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DEVICE_NAME">%2$s</xliff:g> to stream apps and other system features to nearby devices"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"device"</string>
<string name="summary_generic" msgid="1761976003668044801">"This app will be able to sync info, like the name of someone calling, between your phone and the chosen device"</string>
diff --git a/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml b/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml
index 8b506ed20963..ee8eca0e24e3 100644
--- a/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"device"</string>
<string name="summary_glasses" msgid="2872254734959842579">"This app will be allowed to access these permissions on your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Allow &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; to access this information from your phone"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Cross-device services"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> to stream apps between your devices"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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; to access this information from your phone"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play services"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> to access your phone’s photos, media and notifications"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Allow &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; to take this action?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> is requesting permission on behalf of your <xliff:g id="DEVICE_NAME">%2$s</xliff:g> to stream apps and other system features to nearby devices"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"device"</string>
<string name="summary_generic" msgid="1761976003668044801">"This app will be able to sync info, like the name of someone calling, between your phone and the chosen device"</string>
diff --git a/packages/CompanionDeviceManager/res/values-en-rXC/strings.xml b/packages/CompanionDeviceManager/res/values-en-rXC/strings.xml
index c3ae8a692361..a601926a381a 100644
--- a/packages/CompanionDeviceManager/res/values-en-rXC/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rXC/strings.xml
@@ -26,8 +26,11 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‎‏‎‎‏‏‎‎‏‏‎‏‏‏‎‏‏‎‎‎‎‎‏‏‏‏‏‏‎‎‎‎‏‎‏‏‎‏‎‎‏‏‎‎‎‏‎‏‏‏‏‎‏‎device‎‏‎‎‏‎"</string>
<string name="summary_glasses" msgid="2872254734959842579">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‏‏‏‎‏‏‎‏‎‏‎‏‏‎‏‏‎‏‏‎‏‏‏‎‎‎‏‎‏‎‏‎‎‎‏‎‎‏‏‎This app will be allowed to access these permissions on your ‎‏‎‎‏‏‎<xliff:g id="DEVICE_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‏‎‏‎‏‏‎‎‎‎‎‏‎‎‏‏‏‎‎‎‏‎‏‎‏‏‎‏‎‎‎‎‏‏‏‎‎‏‎‎‏‏‎‎‏‏‎‎Allow &lt;strong&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/strong&gt; to access this information from your phone‎‏‎‎‏‎"</string>
+ <string name="title_app_streaming_with_mirroring" msgid="3364582597581570658">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‏‎‏‏‎‎‎‏‎‏‏‎‎‏‏‎‎‎‎‎‏‎‏‏‏‏‎‏‎‎‏‎‎‏‎‎‏‏‏‏‏‎‎‎‎‎‏‎‎‏‏‎‎‎‏‎‎Allow &lt;strong&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/strong&gt; to stream your phone’s apps?‎‏‎‎‏‎"</string>
+ <string name="summary_app_streaming" msgid="295548145144086753">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‎‎‎‏‏‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‎‏‏‎‏‏‏‎‏‎‏‎‏‎‏‏‎‏‏‎‎‎‎‎‎‏‏‏‎‎‎‎‏‎%1$s will have access to anything that’s visible or played on the phone, including audio, photos, passwords, and messages.&lt;br/&gt;&lt;br/&gt;%1$s will be able to stream apps until you remove access to this permission.‎‏‎‎‏‎"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‏‏‏‎‏‏‏‎‎‎‎‎‏‎‏‎‏‎‏‎‏‎‏‎‎‎‎‏‎‏‎‏‎‎‏‎‏‎‎‏‏‎‏‎‏‏‏‏‎‎‏‎‏‎Cross-device services‎‏‎‎‏‎"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‎‎‎‎‏‏‎‎‎‎‏‏‎‎‏‎‎‎‎‏‏‎‎‎‏‎‎‎‏‏‎‏‎‏‏‎‏‏‎‏‏‎‎‎‏‎‏‎‏‏‏‎‎‏‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is requesting permission on behalf of your ‎‏‎‎‏‏‎<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>‎‏‎‎‏‏‏‎ to stream apps between your devices‎‏‎‎‏‎"</string>
+ <string name="helper_summary_app_streaming_with_mirroring" msgid="6138581029144467467">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‏‎‎‎‎‏‎‎‏‏‏‏‎‏‏‏‎‏‏‎‎‎‎‏‎‎‎‏‏‎‎‎‏‏‎‏‏‏‎‎‏‏‎‎‎‎‎‎‎‏‎‏‏‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is requesting permission on behalf of your ‎‏‎‎‏‏‎<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>‎‏‎‎‏‏‏‎ to display and stream apps between your devices‎‏‎‎‏‎"</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; to access this information from your phone‎‏‎‎‏‎"</string>
@@ -35,6 +38,8 @@
<string name="helper_title_computer" msgid="4671071173916176037">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‎‏‎‎‏‎‏‏‏‏‏‎‏‎‎‏‏‏‏‎‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‏‏‏‎‎‏‎‏‏‏‎‏‎‏‎‎‏‎‏‎Google Play services‎‏‎‎‏‎"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‏‏‎‎‏‏‏‎‏‏‏‏‏‏‎‎‎‏‏‎‏‏‎‏‎‏‎‏‎‏‎‎‎‎‎‏‎‏‎‏‏‏‎‏‏‎‎‎‎‎‎‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is requesting permission on behalf of your ‎‏‎‎‏‏‎<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>‎‏‎‎‏‏‏‎ to access your phone’s photos, media, and notifications‎‏‎‎‏‎"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‎‎‏‎‎‎‎‎‏‎‎‏‏‎‎‏‏‏‏‎‎‎‎‎‏‏‏‎‎‎‏‏‎‏‏‏‎‏‎‎‏‏‏‎‎‏‎‏‏‎‎‏‎‎Allow &lt;strong&gt;‎‏‎‎‏‏‎<xliff:g id="DEVICE_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/strong&gt; to take this action?‎‏‎‎‏‎"</string>
+ <string name="title_nearby_device_streaming_with_mirroring" msgid="242855799919611657">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‏‎‏‎‏‏‏‏‎‏‏‎‎‏‏‎‎‎‎‎‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‎‏‏‎‏‎‎‎‎‎‏‏‏‏‎‎‎‎‏‎‎‏‎Allow &lt;strong&gt;‎‏‎‎‏‏‎<xliff:g id="DEVICE_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/strong&gt; to stream your phone’s apps and system features?‎‏‎‎‏‎"</string>
+ <string name="summary_nearby_device_streaming" msgid="4039565463149145573">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‎‎‎‏‏‏‏‎‏‏‎‏‎‏‏‎‏‏‎‎‎‏‎‏‏‎‏‏‏‎‏‏‏‏‏‎‎‎‎‏‏‏‎‏‏‎‏‏‏‏‎‎‏‎‏‎%1$s will have access to anything that’s visible or played on your phone, including audio, photos, payment info, passwords, and messages.&lt;br/&gt;&lt;br/&gt;%1$s will be able to stream apps and system features until you remove access to this permission.‎‏‎‎‏‎"</string>
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‎‏‎‏‏‎‏‎‏‎‎‏‎‏‏‏‏‏‏‎‎‏‎‎‎‎‎‎‎‎‏‎‎‏‎‏‎‏‎‎‏‎‎‏‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is requesting permission on behalf of your ‎‏‎‎‏‏‎<xliff:g id="DEVICE_NAME">%2$s</xliff:g>‎‏‎‎‏‏‏‎ to stream apps and other system features to nearby devices‎‏‎‎‏‎"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‎‎‏‏‏‎‏‏‏‏‏‎‎‏‎‎‏‎‎‏‏‏‏‎‎‎‏‏‏‎‏‏‏‎‎‎‎‎‎‎‎‏‏‏‎‏‏‎‏‏‎‎‎device‎‏‎‎‏‎"</string>
<string name="summary_generic" msgid="1761976003668044801">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‎‏‏‏‎‎‏‏‏‏‎‎‏‎‏‏‏‏‎‏‎‏‏‏‎‎‎‎‏‎‎‏‎‏‏‎‎‏‎‏‎‏‏‎‏‏‎‎‎‎‎‎‎‎‎‏‎This app will be able to sync info, like the name of someone calling, between your phone and the chosen device‎‏‎‎‏‎"</string>
diff --git a/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml b/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml
index 75cd49ca1237..51f187480905 100644
--- a/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"dispositivo"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Esta app podrá acceder a los siguientes permisos en tu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Permite que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acceda a esta información de tu teléfono"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Servicios multidispositivo"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> solicita tu permiso en nombre de <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para transmitir apps entre dispositivos"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Permite que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acceda a esta información de tu teléfono"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Servicios de Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> solicita tu permiso en nombre de <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para acceder a las fotos, el contenido multimedia y las notificaciones de tu teléfono"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"¿Permites que &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; realice esta acción?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> está solicitando permiso en nombre de tu <xliff:g id="DEVICE_NAME">%2$s</xliff:g> para transmitir apps y otras funciones del sistema a dispositivos cercanos"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"dispositivo"</string>
<string name="summary_generic" msgid="1761976003668044801">"Esta app podrá sincronizar información, como el nombre de la persona que llama, entre el teléfono y el dispositivo elegido"</string>
diff --git a/packages/CompanionDeviceManager/res/values-es/strings.xml b/packages/CompanionDeviceManager/res/values-es/strings.xml
index ba6045bdba67..3e157f039df7 100644
--- a/packages/CompanionDeviceManager/res/values-es/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-es/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"dispositivo"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Esta aplicación podrá acceder a estos permisos de tu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Permitir que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acceda a esta información de tu teléfono"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Servicios multidispositivo"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> está pidiendo permiso en nombre de tu <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para emitir aplicaciones en otros dispositivos tuyos"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Permitir que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acceda a esta información de tu teléfono"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Servicios de Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> está pidiendo permiso en nombre de tu <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para acceder a las fotos, los archivos multimedia y las notificaciones de tu teléfono"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"¿Permitir que &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; realice esta acción?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> está pidiendo permiso en nombre de tu <xliff:g id="DEVICE_NAME">%2$s</xliff:g> para emitir aplicaciones y otras funciones del sistema en dispositivos cercanos"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"dispositivo"</string>
<string name="summary_generic" msgid="1761976003668044801">"Esta aplicación podrá sincronizar información (por ejemplo, el nombre de la persona que te llama) entre tu teléfono y el dispositivo que elijas"</string>
diff --git a/packages/CompanionDeviceManager/res/values-et/strings.xml b/packages/CompanionDeviceManager/res/values-et/strings.xml
index dc8d9920030b..28e8b0d194a6 100644
--- a/packages/CompanionDeviceManager/res/values-et/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-et/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"seade"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Sellele rakendusele antakse need load teie seadmes <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Lubage rakendusel &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; pääseda teie telefonis juurde sellele teabele"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Seadmeülesed teenused"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> taotleb teie seadme <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> nimel luba teie seadmete vahel rakendusi voogesitada"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Lubage rakendusel &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; pääseda teie telefonis juurde sellele teabele"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play teenused"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> taotleb teie seadme <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> nimel luba pääseda juurde telefoni fotodele, meediale ja märguannetele"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Kas lubada seadmel &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; teha seda toimingut?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> taotleb teie seadme <xliff:g id="DEVICE_NAME">%2$s</xliff:g> nimel luba voogesitada rakendusi ja muid süsteemi funktsioone läheduses olevatesse seadmetesse"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"seade"</string>
<string name="summary_generic" msgid="1761976003668044801">"See rakendus saab sünkroonida teavet, näiteks helistaja nime, teie telefoni ja valitud seadme vahel"</string>
diff --git a/packages/CompanionDeviceManager/res/values-eu/strings.xml b/packages/CompanionDeviceManager/res/values-eu/strings.xml
index 8cd4fdefad97..1884e04bdb1a 100644
--- a/packages/CompanionDeviceManager/res/values-eu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-eu/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"gailua"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Baimen hauek erabili ahalko ditu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>n aplikazioak:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Eman informazioa telefonotik hartzeko baimena &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; aplikazioari"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Gailuarteko zerbitzuak"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"Gailu batetik bestera aplikazioak igortzeko baimena eskatzen ari da <xliff:g id="APP_NAME">%1$s</xliff:g>, <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> gailuaren izenean"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Eman telefonoko informazio hau erabiltzeko baimena &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; aplikazioari"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play Services"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"Telefonoko argazkiak, multimedia-edukia eta jakinarazpenak erabiltzeko baimena eskatzen ari da <xliff:g id="APP_NAME">%1$s</xliff:g>, <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> gailuaren izenean"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Ekintza hau gauzatzeko baimena eman nahi diozu &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; aplikazioari?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Aplikazioak eta sistemaren beste eginbide batzuk inguruko gailuetara igortzeko baimena eskatzen ari da <xliff:g id="APP_NAME">%1$s</xliff:g>, <xliff:g id="DEVICE_NAME">%2$s</xliff:g> gailuaren izenean"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"gailua"</string>
<string name="summary_generic" msgid="1761976003668044801">"Telefonoaren eta hautatutako gailuaren artean informazioa sinkronizatzeko gai izango da aplikazioa (esate baterako, deitzaileen izenak)"</string>
diff --git a/packages/CompanionDeviceManager/res/values-fa/strings.xml b/packages/CompanionDeviceManager/res/values-fa/strings.xml
index 83628cb4a360..9c5807bc5008 100644
--- a/packages/CompanionDeviceManager/res/values-fa/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fa/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"دستگاه"</string>
<string name="summary_glasses" msgid="2872254734959842579">"این برنامه مجاز می‌شود به این اجازه‌ها در <xliff:g id="DEVICE_NAME">%1$s</xliff:g> شما دسترسی پیدا کند"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"‏اجازه دادن به &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; برای دسترسی به اطلاعات تلفن"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"سرویس‌های بین‌دستگاهی"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> ازطرف <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> اجازه می‌خواهد برنامه‌ها را بین دستگاه‌های شما جاری‌سازی کند"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"‏خدمات Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> ازطرف <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> اجازه می‌خواهد به عکس‌ها، رسانه‌ها، و اعلان‌های تلفن شما دسترسی پیدا کند"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"‏به &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; اجازه داده شود این اقدام را انجام دهد؟"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> ازطرف <xliff:g id="DEVICE_NAME">%2$s</xliff:g> اجازه می‌خواهد تا برنامه‌ها و دیگر ویژگی‌های سیستم را در دستگاه‌های اطراف جاری‌سازی کند."</string>
<string name="profile_name_generic" msgid="6851028682723034988">"دستگاه"</string>
<string name="summary_generic" msgid="1761976003668044801">"این برنامه مجاز می‌شود اطلاعتی مثل نام شخصی را که تماس می‌گیرد بین تلفن شما و دستگاه انتخاب‌شده همگام‌سازی کند"</string>
diff --git a/packages/CompanionDeviceManager/res/values-fi/strings.xml b/packages/CompanionDeviceManager/res/values-fi/strings.xml
index 86e79041357b..ecde94926658 100644
--- a/packages/CompanionDeviceManager/res/values-fi/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fi/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"laite"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Tämä sovellus saa käyttää näitä lupia laitteella (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>)"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Salli, että &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; saa pääsyn näihin puhelimesi tietoihin"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Laitteidenväliset palvelut"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> pyytää laitteesi (<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>) puolesta lupaa striimata sovelluksia laitteidesi välillä"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Salli pääsy tähän tietoon puhelimellasi: &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play Palvelut"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> pyytää laitteesi (<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>) puolesta lupaa päästä puhelimesi kuviin, mediaan ja ilmoituksiin"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Sallitko, että &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; voi suorittaa tämän toiminnon?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> pyytää laitteesi (<xliff:g id="DEVICE_NAME">%2$s</xliff:g>) puolesta lupaa striimata sovelluksia ja muita järjestelmän ominaisuuksia lähellä oleviin laitteisiin."</string>
<string name="profile_name_generic" msgid="6851028682723034988">"laite"</string>
<string name="summary_generic" msgid="1761976003668044801">"Sovellus voi synkronoida tietoja (esimerkiksi soittajan nimen) puhelimesi ja valitun laitteen välillä"</string>
diff --git a/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml b/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml
index b74c8ee5d68a..5debbf3bf6e1 100644
--- a/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"appareil"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Cette application pourra accéder à ces autorisations sur votre <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Autorisez &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à accéder à ces informations à partir de votre téléphone"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Services multiappareils"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> demande l\'autorisation au nom de votre <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> pour diffuser des applications entre vos appareils"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Autorisez &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à accéder à ces informations à partir de votre téléphone"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Services Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> demande l\'autorisation au nom de votre <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> pour accéder aux photos, aux fichiers multimédias et aux notifications de votre téléphone"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Autoriser &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; à effectuer cette action?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> demande l\'autorisation, au nom de votre <xliff:g id="DEVICE_NAME">%2$s</xliff:g>, de diffuser des applications et d\'autres fonctionnalités du système sur des appareils à proximité"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"appareil"</string>
<string name="summary_generic" msgid="1761976003668044801">"Cette application pourra synchroniser des informations, comme le nom de l\'appelant, entre votre téléphone et l\'appareil sélectionné"</string>
diff --git a/packages/CompanionDeviceManager/res/values-fr/strings.xml b/packages/CompanionDeviceManager/res/values-fr/strings.xml
index 30b0c9af5f0b..0403a4d69f72 100644
--- a/packages/CompanionDeviceManager/res/values-fr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fr/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"appareil"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Cette appli sera autorisée à accéder à ces autorisations sur votre <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Autoriser &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à accéder à ces informations depuis votre téléphone"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Services inter-appareils"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> demande l\'autorisation au nom de votre <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> pour caster des applis d\'un appareil à l\'autre"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Autoriser &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; à accéder à ces informations depuis votre téléphone"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Services Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> demande l\'autorisation au nom de votre <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> pour accéder aux photos, contenus multimédias et notifications de votre téléphone"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Autoriser &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; à effectuer cette action ?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> demande l\'autorisation au nom de votre <xliff:g id="DEVICE_NAME">%2$s</xliff:g> de diffuser des applis et d\'autres fonctionnalités système en streaming sur des appareils à proximité"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"appareil"</string>
<string name="summary_generic" msgid="1761976003668044801">"Cette appli pourra synchroniser des infos, comme le nom de l\'appelant, entre votre téléphone et l\'appareil choisi"</string>
diff --git a/packages/CompanionDeviceManager/res/values-gl/strings.xml b/packages/CompanionDeviceManager/res/values-gl/strings.xml
index 1b8b8d4d9078..5d9d7ee915d5 100644
--- a/packages/CompanionDeviceManager/res/values-gl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-gl/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"dispositivo"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Esta aplicación poderá acceder a estes permisos do dispositivo (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>)"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Permitir que a aplicación &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acceda a esta información desde o teu teléfono"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Servizos multidispositivo"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> está solicitando permiso en nome do teu dispositivo (<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>) para emitir contido de aplicacións entre os teus aparellos"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Permitir que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acceda a esta información do teu teléfono"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Servizos de Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> está solicitando permiso en nome do teu dispositivo (<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>) para acceder ás fotos, ao contido multimedia e ás notificacións do teléfono"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Queres permitir que &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; leve a cabo esta acción?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> está solicitando permiso en nome do teu dispositivo (<xliff:g id="DEVICE_NAME">%2$s</xliff:g>) para emitir o contido das aplicacións e doutras funcións do sistema en dispositivos próximos"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"dispositivo"</string>
<string name="summary_generic" msgid="1761976003668044801">"Esta aplicación poderá sincronizar información (por exemplo, o nome de quen chama) entre o teléfono e o dispositivo escollido"</string>
diff --git a/packages/CompanionDeviceManager/res/values-gu/strings.xml b/packages/CompanionDeviceManager/res/values-gu/strings.xml
index 474960cd7394..e645f187b3f1 100644
--- a/packages/CompanionDeviceManager/res/values-gu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-gu/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"ડિવાઇસ"</string>
<string name="summary_glasses" msgid="2872254734959842579">"આ ઍપને તમારા <xliff:g id="DEVICE_NAME">%1$s</xliff:g> પર આ પરવાનગીઓ ઍક્સેસ કરવાની મંજૂરી મળશે"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"તમારા ફોનમાંથી આ માહિતી ઍક્સેસ કરવા માટે, &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;ને મંજૂરી આપો"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"ક્રોસ-ડિવાઇસ સેવાઓ"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> તમારા <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> વતી તમારા ડિવાઇસ વચ્ચે ઍપ સ્ટ્રીમ કરવાની પરવાનગીની વિનંતી કરી રહી છે"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play સેવાઓ"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> તમારા <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> વતી તમારા ફોનના ફોટા, મીડિયા અને નોટિફિકેશન ઍક્સેસ કરવાની પરવાનગીની વિનંતી કરી રહી છે"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt;ને આ પગલું ભરવાની મંજૂરી આપીએ?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> નજીકના ડિવાઇસ પર ઍપ અને સિસ્ટમની અન્ય સુવિધાઓ સ્ટ્રીમ કરવા તમારા <xliff:g id="DEVICE_NAME">%2$s</xliff:g> વતી પરવાનગીની વિનંતી કરી રહી છે"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"ડિવાઇસ"</string>
<string name="summary_generic" msgid="1761976003668044801">"આ ઍપ તમારા ફોન અને પસંદ કરેલા ડિવાઇસ વચ્ચે, કૉલ કરનાર કોઈ વ્યક્તિનું નામ જેવી માહિતી સિંક કરી શકશે"</string>
diff --git a/packages/CompanionDeviceManager/res/values-hi/strings.xml b/packages/CompanionDeviceManager/res/values-hi/strings.xml
index 8a0e2d7f3017..f524b97f1222 100644
--- a/packages/CompanionDeviceManager/res/values-hi/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hi/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"डिवाइस"</string>
<string name="summary_glasses" msgid="2872254734959842579">"यह ऐप्लिकेशन, आपके <xliff:g id="DEVICE_NAME">%1$s</xliff:g> पर इन अनुमतियों को ऐक्सेस कर पाएगा"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; को अपने फ़ोन से यह जानकारी ऐक्सेस करने की अनुमति दें"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"क्रॉस-डिवाइस से जुड़ी सेवाएं"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> आपके <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> की ओर से, आपके डिवाइसों के बीच ऐप्लिकेशन स्ट्रीम करने की अनुमति मांग रहा है"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play services"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> आपके <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> की ओर से, आपने फ़ोन में मौजूद फ़ोटो, मीडिया, और सूचनाओं को ऐक्सेस करने की अनुमति मांग रहा है"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"क्या &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; को यह कार्रवाई करने की अनुमति देनी है?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> आपके <xliff:g id="DEVICE_NAME">%2$s</xliff:g> की ओर से, ऐप्लिकेशन और दूसरे सिस्टम की सुविधाओं को आस-पास मौजूद डिवाइसों पर स्ट्रीम करने की अनुमति मांग रहा है"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"डिवाइस"</string>
<string name="summary_generic" msgid="1761976003668044801">"यह ऐप्लिकेशन, आपके फ़ोन और चुने हुए डिवाइस के बीच जानकारी सिंक करेगा. जैसे, कॉल करने वाले व्यक्ति का नाम"</string>
diff --git a/packages/CompanionDeviceManager/res/values-hr/strings.xml b/packages/CompanionDeviceManager/res/values-hr/strings.xml
index 6dc59ea0ceb0..5ed3eb278a50 100644
--- a/packages/CompanionDeviceManager/res/values-hr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hr/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"uređaj"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Aplikacija će moći pristupati ovim dopuštenjima na vašem uređaju <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Omogućite aplikaciji &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; da pristupa informacijama s vašeg telefona"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Usluge na različitim uređajima"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> zahtijeva dopuštenje u ime vašeg uređaja <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> za stream aplikacija s jednog uređaja na drugi"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Omogućite aplikaciji &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; da pristupa informacijama s vašeg telefona"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Usluge za Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> zahtijeva dopuštenje u ime vašeg uređaja <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> za pristup fotografijama, medijskim sadržajima i obavijestima na telefonu"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Želite li uređaju &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; dopustiti da izvrši tu radnju?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> zahtijeva dopuštenje u ime vašeg uređaja <xliff:g id="DEVICE_NAME">%2$s</xliff:g> za emitiranje aplikacija i drugih značajki sustava na uređajima u blizini"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"uređaj"</string>
<string name="summary_generic" msgid="1761976003668044801">"Ta će aplikacija moći sinkronizirati podatke između vašeg telefona i odabranog uređaja, primjerice ime pozivatelja"</string>
diff --git a/packages/CompanionDeviceManager/res/values-hu/strings.xml b/packages/CompanionDeviceManager/res/values-hu/strings.xml
index 4b1a6f7b98a7..8082bb5f4a71 100644
--- a/packages/CompanionDeviceManager/res/values-hu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hu/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"eszköz"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Az alkalmazás hozzáférhet majd ezekhez az engedélyekhez az Ön <xliff:g id="DEVICE_NAME">%1$s</xliff:g> eszközén"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Engedélyezi a(z) „<xliff:g id="APP_NAME">%1$s</xliff:g>” alkalmazás számára az információhoz való hozzáférést a telefonról"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Többeszközös szolgáltatások"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> engedélyt kér a(z) <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> nevében az alkalmazások eszközök közötti streameléséhez"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Engedélyezi a(z) „<xliff:g id="APP_NAME">%1$s</xliff:g>” alkalmazás számára az információhoz való hozzáférést a telefonról"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play-szolgáltatások"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> engedélyt kér a(z) <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> nevében a telefonon tárolt fotókhoz, médiatartalmakhoz és értesítésekhez való hozzáféréshez"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Engedélyezi a(z) &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; számára ennek a műveletnek a végrehajtását?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> engedélyt kér a(z) <xliff:g id="DEVICE_NAME">%2$s</xliff:g> nevében az alkalmazások és más rendszerfunkciók közeli eszközökre történő streamelésére"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"eszköz"</string>
<string name="summary_generic" msgid="1761976003668044801">"Ez az alkalmazás képes lesz szinkronizálni az olyan információkat a telefon és a kiválasztott eszköz között, mint például a hívó fél neve."</string>
diff --git a/packages/CompanionDeviceManager/res/values-hy/strings.xml b/packages/CompanionDeviceManager/res/values-hy/strings.xml
index 405a98387e33..fc8adee138ab 100644
--- a/packages/CompanionDeviceManager/res/values-hy/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hy/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"սարք"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Այս հավելվածը կստանա հետևյալ թույլտվությունները ձեր <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ում"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Թույլատրեք &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; հավելվածին օգտագործել այս տեղեկությունները ձեր հեռախոսից"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Միջսարքային ծառայություններ"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը ձեր <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> սարքի անունից թույլտվություն է խնդրում՝ ձեր սարքերի միջև հավելվածներ հեռարձակելու համար"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play ծառայություններ"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը ձեր <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> սարքի անունից թույլտվություն է խնդրում՝ ձեր հեռախոսի լուսանկարները, մեդիաֆայլերն ու ծանուցումները տեսնելու համար"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Թույլատրե՞լ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; հավելվածին կատարել այս գործողությունը"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը ձեր <xliff:g id="DEVICE_NAME">%2$s</xliff:g> սարքի անունից թույլտվություն է խնդրում՝ մոտակա սարքերին հավելվածներ և համակարգի այլ գործառույթներ հեռարձակելու համար"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"սարք"</string>
<string name="summary_generic" msgid="1761976003668044801">"Այս հավելվածը կկարողանա համաժամացնել ձեր հեռախոսի և ընտրված սարքի տվյալները, օր․՝ զանգողի անունը"</string>
diff --git a/packages/CompanionDeviceManager/res/values-in/strings.xml b/packages/CompanionDeviceManager/res/values-in/strings.xml
index 02cc573315cc..c2814552b919 100644
--- a/packages/CompanionDeviceManager/res/values-in/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-in/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"perangkat"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Aplikasi ini akan diizinkan mengakses izin ini di <xliff:g id="DEVICE_NAME">%1$s</xliff:g> Anda"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Izinkan &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; untuk mengakses informasi ini dari ponsel Anda"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Layanan lintas perangkat"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> meminta izin atas nama <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> untuk menstreaming aplikasi di antara perangkat Anda"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Izinkan &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; mengakses informasi ini dari ponsel Anda"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Layanan Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> meminta izin atas nama <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> untuk mengakses foto, media, dan notifikasi ponsel Anda"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Izinkan &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; melakukan tindakan ini?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> meminta izin atas nama <xliff:g id="DEVICE_NAME">%2$s</xliff:g> untuk menstreaming aplikasi dan fitur sistem lainnya ke perangkat di sekitar"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"perangkat"</string>
<string name="summary_generic" msgid="1761976003668044801">"Aplikasi ini akan dapat menyinkronkan info, seperti nama penelepon, antara ponsel dan perangkat yang dipilih"</string>
diff --git a/packages/CompanionDeviceManager/res/values-is/strings.xml b/packages/CompanionDeviceManager/res/values-is/strings.xml
index baad2cf4676e..42ca7da70b94 100644
--- a/packages/CompanionDeviceManager/res/values-is/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-is/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"tæki"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Þetta forrit fær aðgang að eftirfarandi heimildum í <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Veita &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; aðgang að þessum upplýsingum úr símanum þínum"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Þjónustur á milli tækja"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> biður um heimild fyrir <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> til að streyma forritum á milli tækjanna þinna"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Veita &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; aðgang að þessum upplýsingum úr símanum þínum"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Þjónusta Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> sendir beiðni um aðgang að myndum, margmiðlunarefni og tilkynningum símans þíns fyrir hönd <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Leyfa &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; að framkvæma þessa aðgerð?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> biður um heimild fyrir <xliff:g id="DEVICE_NAME">%2$s</xliff:g> til að streyma forritum og öðrum kerfiseiginleikum í nálægum tækjum"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"tæki"</string>
<string name="summary_generic" msgid="1761976003668044801">"Þetta forrit mun geta samstillt upplýsingar, t.d. nafn þess sem hringir, á milli símans og valins tækis"</string>
diff --git a/packages/CompanionDeviceManager/res/values-it/strings.xml b/packages/CompanionDeviceManager/res/values-it/strings.xml
index 81f5d62cb7fb..06d58b694695 100644
--- a/packages/CompanionDeviceManager/res/values-it/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-it/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"dispositivo"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Questa app potrà accedere alle seguenti autorizzazioni su <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Consenti a &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; di accedere a queste informazioni dal tuo telefono"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Servizi cross-device"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> richiede per conto del tuo <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> l\'autorizzazione a trasmettere app in streaming tra i dispositivi"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Consenti a &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; di accedere a questa informazione dal tuo telefono"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play Services"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> richiede per conto del tuo <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> l\'autorizzazione ad accedere a foto, contenuti multimediali e notifiche del telefono"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Vuoi consentire a &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; di compiere questa azione?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> richiede per conto di <xliff:g id="DEVICE_NAME">%2$s</xliff:g> l\'autorizzazione a trasmettere in streaming app e altre funzionalità di sistema ai dispositivi nelle vicinanze"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"dispositivo"</string>
<string name="summary_generic" msgid="1761976003668044801">"Questa app potrà sincronizzare informazioni, ad esempio il nome di un chiamante, tra il telefono e il dispositivo scelto"</string>
diff --git a/packages/CompanionDeviceManager/res/values-iw/strings.xml b/packages/CompanionDeviceManager/res/values-iw/strings.xml
index f4367c0acea5..49d1f9e3b7e7 100644
--- a/packages/CompanionDeviceManager/res/values-iw/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-iw/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"מכשיר"</string>
<string name="summary_glasses" msgid="2872254734959842579">"האפליקציה הזו תוכל לגשת להרשאות האלה ב<xliff:g id="DEVICE_NAME">%1$s</xliff:g> שלך"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"‏מתן אישור לאפליקציה &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; לגשת למידע הזה מהטלפון שלך"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"שירותים למספר מכשירים"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> מבקשת הרשאה עבור המכשיר <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> כדי לשדר אפליקציות בין המכשירים שלך"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play Services"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> מבקשת הרשאה עבור המכשיר <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> כדי לגשת לתמונות, למדיה ולהתראות בטלפון שלך"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"‏לתת הרשאה למכשיר &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; לבצע את הפעולה הזו?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> מבקשת הרשאה עבור <xliff:g id="DEVICE_NAME">%2$s</xliff:g> כדי להעביר אפליקציות ותכונות מערכת אחרות בסטרימינג למכשירים בקרבת מקום"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"מכשיר"</string>
<string name="summary_generic" msgid="1761976003668044801">"האפליקציה הזו תוכל לסנכרן מידע, כמו השם של מישהו שמתקשר, מהטלפון שלך למכשיר שבחרת"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ja/strings.xml b/packages/CompanionDeviceManager/res/values-ja/strings.xml
index 2dfb4d1f6354..0f163947774f 100644
--- a/packages/CompanionDeviceManager/res/values-ja/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ja/strings.xml
@@ -26,8 +26,11 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"デバイス"</string>
<string name="summary_glasses" msgid="2872254734959842579">"このアプリは、<xliff:g id="DEVICE_NAME">%1$s</xliff:g>の以下の権限にアクセスできるようになります"</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="title_app_streaming_with_mirroring" msgid="3364582597581570658">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; にスマートフォンのアプリをストリーミングすることを許可しますか?"</string>
+ <string name="summary_app_streaming" msgid="295548145144086753">"%1$s は、音声、写真、パスワード、メッセージを含め、スマートフォンで表示、再生されるすべてのコンテンツにアクセスできるようになります。&lt;br/&gt;&lt;br/&gt;この権限へのアクセス権を削除するまで、%1$s はアプリをストリーミングできます。"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"クロスデバイス サービス"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> が <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> に代わってデバイス間でアプリをストリーミングする権限をリクエストしています"</string>
+ <string name="helper_summary_app_streaming_with_mirroring" msgid="6138581029144467467">"<xliff:g id="APP_NAME">%1$s</xliff:g> が <xliff:g id="DISPLAY_NAME">%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>
@@ -35,6 +38,8 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play 開発者サービス"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> が <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> に代わってスマートフォンの写真、メディア、通知にアクセスする権限をリクエストしています"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; にこの操作の実行を許可しますか?"</string>
+ <string name="title_nearby_device_streaming_with_mirroring" msgid="242855799919611657">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; にスマートフォンのアプリとシステム機能をストリーミングすることを許可しますか?"</string>
+ <string name="summary_nearby_device_streaming" msgid="4039565463149145573">"%1$s は、音声、写真、お支払い情報、パスワード、メッセージを含め、スマートフォンで表示、再生されるすべてのコンテンツにアクセスできるようになります。&lt;br/&gt;&lt;br/&gt;この権限へのアクセス権を削除するまで、%1$s はアプリとシステム機能をストリーミングできます。"</string>
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> が <xliff:g id="DEVICE_NAME">%2$s</xliff:g> に代わって、アプリやその他のシステム機能を付近のデバイスにストリーミングする権限をリクエストしています"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"デバイス"</string>
<string name="summary_generic" msgid="1761976003668044801">"このアプリは、あなたのスマートフォンと選択したデバイスとの間で、通話相手の名前などの情報を同期できるようになります"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ka/strings.xml b/packages/CompanionDeviceManager/res/values-ka/strings.xml
index f4dcaea08230..3ad80badfa91 100644
--- a/packages/CompanionDeviceManager/res/values-ka/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ka/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"მოწყობილობა"</string>
<string name="summary_glasses" msgid="2872254734959842579">"ეს აპი შეძლებს ამ ნებართვებზე წვდომას თქვენს <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ში"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"ნება დართეთ, რომ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; აპს ჰქონდეს ამ ინფორმაციაზე წვდომა თქვენი ტელეფონიდან"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"მოწყობილობათშორისი სერვისები"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> ითხოვს უფლებას თქვენი <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>-ის სახელით, რომ მოწყობილობებს შორის სტრიმინგი შეძლოს"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play services"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> ითხოვს უფლებას თქვენი <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>-ის სახელით, რომ წვდომა ჰქონდეს თქვენი ტელეფონის ფოტოებზე, მედიასა და შეტყობინებებზე"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"გსურთ ნება მისცეთ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ს&lt;/strong&gt; ამ მოქმედების შესასრულებლად?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> ითხოვს თქვენი <xliff:g id="DEVICE_NAME">%2$s</xliff:g>-ის სახელით აპების და სისტემის სხვა ფუნქციების ახლომახლო მოწყობილობებზე სტრიმინგის ნებართვას"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"მოწყობილობა"</string>
<string name="summary_generic" msgid="1761976003668044801">"ეს აპი შეძლებს ინფორმაციის სინქრონიზებას თქვენს ტელეფონსა და თქვენ მიერ არჩეულ მოწყობილობას შორის, მაგალითად, იმ ადამიანის სახელის, რომელიც გირეკავთ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-kk/strings.xml b/packages/CompanionDeviceManager/res/values-kk/strings.xml
index 122e2e60f7ba..4e4986ecf2ff 100644
--- a/packages/CompanionDeviceManager/res/values-kk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-kk/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"құрылғы"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Бұл қолданба <xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысында осы рұқсаттарды пайдалана алады."</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; қолданбасына телефоныңыздағы осы ақпаратты пайдалануға рұқсат беріңіз."</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Аралық құрылғы қызметтері"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасы <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> атынан құрылғылар арасында қолданбалар трансляциялау үшін рұқсат сұрайды."</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play қызметтері"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасы <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> атынан телефондағы фотосуреттерді, медиафайлдар мен хабарландыруларды пайдалану үшін рұқсат сұрайды."</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; құрылғысына бұл әрекетті орындауға рұқсат беру керек пе?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасы <xliff:g id="DEVICE_NAME">%2$s</xliff:g> атынан қолданбалар мен басқа да жүйе функцияларын маңайдағы құрылғыларға трансляциялау рұқсатын сұрап тұр."</string>
<string name="profile_name_generic" msgid="6851028682723034988">"құрылғы"</string>
<string name="summary_generic" msgid="1761976003668044801">"Бұл қолданба телефон мен таңдалған құрылғы арасында деректі (мысалы, қоңырау шалушының атын) синхрондай алады."</string>
diff --git a/packages/CompanionDeviceManager/res/values-km/strings.xml b/packages/CompanionDeviceManager/res/values-km/strings.xml
index d6f303737ef3..4646e11887e2 100644
--- a/packages/CompanionDeviceManager/res/values-km/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-km/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"ឧបករណ៍"</string>
<string name="summary_glasses" msgid="2872254734959842579">"កម្មវិធីនេះ​នឹងត្រូវបានអនុញ្ញាតឱ្យ​ចូលប្រើប្រាស់ការអនុញ្ញាតទាំងនេះ​នៅលើ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> របស់អ្នក"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"អនុញ្ញាតឱ្យ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ចូលប្រើព័ត៌មាននេះពីទូរសព្ទរបស់អ្នក"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"សេវាកម្មឆ្លងកាត់ឧបករណ៍"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> កំពុងស្នើសុំការអនុញ្ញាតជំនួសឱ្យ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> របស់អ្នក ដើម្បីបញ្ចាំងកម្មវិធីរវាងឧបករណ៍របស់អ្នក"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"សេវាកម្ម Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> កំពុងស្នើសុំការអនុញ្ញាតជំនួសឱ្យ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> របស់អ្នក ដើម្បីចូលប្រើរូបថត មេឌៀ និងការជូនដំណឹងរបស់ទូរសព្ទអ្នក"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"អនុញ្ញាតឱ្យ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ធ្វើសកម្មភាពនេះឬ?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> កំពុងស្នើសុំ​ការអនុញ្ញាតជំនួសឱ្យ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> របស់អ្នក ដើម្បីចាក់ផ្សាយកម្មវិធី និងមុខងារប្រព័ន្ធផ្សេងទៀត​ទៅកាន់​ឧបករណ៍នៅជិត"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"ឧបករណ៍"</string>
<string name="summary_generic" msgid="1761976003668044801">"កម្មវិធីនេះនឹងអាច​ធ្វើសមកាលកម្មព័ត៌មាន ដូចជាឈ្មោះមនុស្សដែលហៅទូរសព្ទជាដើម​ រវាងឧបករណ៍ដែលបានជ្រើសរើស និងទូរសព្ទរបស់អ្នក"</string>
diff --git a/packages/CompanionDeviceManager/res/values-kn/strings.xml b/packages/CompanionDeviceManager/res/values-kn/strings.xml
index 661d344e2e6a..4f2bdd2d0732 100644
--- a/packages/CompanionDeviceManager/res/values-kn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-kn/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"ಸಾಧನ"</string>
<string name="summary_glasses" msgid="2872254734959842579">"ನಿಮ್ಮ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ನಲ್ಲಿ ಈ ಅನುಮತಿಗಳನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ಈ ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸಲಾಗುತ್ತದೆ"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"ನಿಮ್ಮ ಫೋನ್ ಮೂಲಕ ಈ ಮಾಹಿತಿಯನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ಗೆ ಅನುಮತಿಸಿ"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"ಕ್ರಾಸ್-ಡಿವೈಸ್ ಸೇವೆಗಳು"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"ನಿಮ್ಮ ಸಾಧನಗಳ ನಡುವೆ ಆ್ಯಪ್‌ಗಳನ್ನು ಸ್ಟ್ರೀಮ್ ಮಾಡಲು ನಿಮ್ಮ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ನ ಪರವಾಗಿ <xliff:g id="APP_NAME">%1$s</xliff:g> ಅನುಮತಿಯನ್ನು ವಿನಂತಿಸಿಕೊಳ್ಳುತ್ತಿದೆ"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play ಸೇವೆಗಳು"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"ನಿಮ್ಮ ಫೋನ್‌ನ ಫೋಟೋಗಳು, ಮೀಡಿಯಾ ಮತ್ತು ಅಧಿಸೂಚನೆಗಳನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ನಿಮ್ಮ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ನ ಪರವಾಗಿ <xliff:g id="APP_NAME">%1$s</xliff:g> ಅನುಮತಿಯನ್ನು ವಿನಂತಿಸಿಕೊಳ್ಳುತ್ತಿದೆ"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"ಈ ಆ್ಯಕ್ಷನ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ಅನುಮತಿಸಬೇಕೇ?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"ಸಮೀಪದಲ್ಲಿರುವ ಸಾಧನಗಳಿಗೆ ಆ್ಯಪ್‌ಗಳು ಮತ್ತು ಇತರ ಸಿಸ್ಟಂ ಫೀಚರ್‌ಗಳನ್ನು ಸ್ಟ್ರೀಮ್ ಮಾಡಲು ನಿಮ್ಮ <xliff:g id="DEVICE_NAME">%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="1761976003668044801">"ಮೊಬೈಲ್ ಫೋನ್ ಮತ್ತು ಆಯ್ಕೆಮಾಡಿದ ಸಾಧನದ ನಡುವೆ, ಕರೆ ಮಾಡುವವರ ಹೆಸರಿನಂತಹ ಮಾಹಿತಿಯನ್ನು ಸಿಂಕ್ ಮಾಡಲು ಈ ಆ್ಯಪ್‌ಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ko/strings.xml b/packages/CompanionDeviceManager/res/values-ko/strings.xml
index 4ae5abdb4933..9aa49d57b89a 100644
--- a/packages/CompanionDeviceManager/res/values-ko/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ko/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"기기"</string>
<string name="summary_glasses" msgid="2872254734959842579">"앱이 <xliff:g id="DEVICE_NAME">%1$s</xliff:g>에서 이러한 권한에 액세스할 수 있게 됩니다."</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;이 휴대전화의 이 정보에 액세스하도록 허용합니다."</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"교차 기기 서비스"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g>에서 <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> 대신 기기 간에 앱을 스트리밍할 수 있는 권한을 요청하고 있습니다."</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play 서비스"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g>에서 <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> 대신 휴대전화의 사진, 미디어, 알림에 액세스할 수 있는 권한을 요청하고 있습니다."</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; 기기가 이 작업을 수행하도록 허용하시겠습니까?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g>에서 <xliff:g id="DEVICE_NAME">%2$s</xliff:g> 대신 근처 기기로 앱 및 기타 시스템 기능을 스트리밍할 권한을 요청하고 있습니다."</string>
<string name="profile_name_generic" msgid="6851028682723034988">"기기"</string>
<string name="summary_generic" msgid="1761976003668044801">"이 앱에서 휴대전화와 선택한 기기 간에 정보(예: 발신자 이름)를 동기화할 수 있게 됩니다."</string>
diff --git a/packages/CompanionDeviceManager/res/values-ky/strings.xml b/packages/CompanionDeviceManager/res/values-ky/strings.xml
index 099b5c5b74e1..bb1e1aa76958 100644
--- a/packages/CompanionDeviceManager/res/values-ky/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ky/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"түзмөк"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Бул колдонмого <xliff:g id="DEVICE_NAME">%1$s</xliff:g> түзмөгүңүздө төмөнкүлөрдү аткарууга уруксат берилет"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; колдонмосуна телефонуңуздагы ушул маалыматты көрүүгө уруксат бериңиз"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Түзмөктөр аралык кызматтар"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> түзмөгүңүздүн атынан түзмөктөрүңүздүн ортосунда колдонмолорду алып ойнотууга уруксат сурап жатат"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play кызматтары"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосу <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> түзмөгүңүздүн атынан телефондогу сүрөттөрдү, медиа файлдарды жана билдирмелерди колдонууга уруксат сурап жатат"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; түзмөгүнө бул аракетти аткарууга уруксат бересизби?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="DEVICE_NAME">%2$s</xliff:g> түзмөгүңүздүн атынан жакын жердеги түзмөктөрдө колдонмолорду жана системанын башка функцияларын алып ойнотууга уруксат сурап жатат"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"түзмөк"</string>
<string name="summary_generic" msgid="1761976003668044801">"Бул колдонмо маалыматты шайкештире алат, мисалы, чалып жаткан кишинин атын телефон жана тандалган түзмөк менен шайкештирет"</string>
diff --git a/packages/CompanionDeviceManager/res/values-lo/strings.xml b/packages/CompanionDeviceManager/res/values-lo/strings.xml
index fa378ca0640f..9a45460f3c5f 100644
--- a/packages/CompanionDeviceManager/res/values-lo/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-lo/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"ອຸປະກອນ"</string>
<string name="summary_glasses" msgid="2872254734959842579">"ແອັບນີ້ຈະໄດ້ຮັບສິດເຂົ້າເຖິງການອະນຸຍາດເຫຼົ່ານີ້ຢູ່ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ຂອງທ່ານ"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"ອະນຸຍາດ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ໃຫ້ເຂົ້າເຖິງຂໍ້ມູນນີ້ຈາກໂທລະສັບຂອງທ່ານໄດ້"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"ບໍລິການຂ້າມອຸປະກອນ"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> ກຳລັງຮ້ອງຂໍການອະນຸຍາດໃນນາມຂອງ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ເພື່ອສະຕຣີມແອັບລະຫວ່າງອຸປະກອນຕ່າງໆຂອງທ່ານ"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"ບໍລິການ Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> ກຳລັງຮ້ອງຂໍການອະນຸຍາດໃນນາມຂອງ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ເພື່ອເຂົ້າເຖິງຮູບພາບ, ສື່ ແລະ ການແຈ້ງເຕືອນໃນໂທລະສັບຂອງທ່ານ"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"ອະນຸຍາດ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ເພື່ອດຳເນີນຄຳສັ່ງນີ້ບໍ?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> ກໍາລັງຮ້ອງຂໍການອະນຸຍາດໃນນາມ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> ຂອງທ່ານເພື່ອສະຕຣີມແອັບ ແລະ ຄຸນສົມບັດລະບົບອື່ນໆໄປຫາອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງ"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"ອຸປະກອນ"</string>
<string name="summary_generic" msgid="1761976003668044801">"ແອັບນີ້ຈະສາມາດຊິ້ງຂໍ້ມູນ ເຊັ່ນ: ຊື່ຂອງຄົນທີ່ໂທເຂົ້າ, ລະຫວ່າງໂທລະສັບຂອງທ່ານ ແລະ ອຸປະກອນທີ່ເລືອກໄວ້ໄດ້"</string>
diff --git a/packages/CompanionDeviceManager/res/values-lt/strings.xml b/packages/CompanionDeviceManager/res/values-lt/strings.xml
index 54f840863f22..58a9db91bf3e 100644
--- a/packages/CompanionDeviceManager/res/values-lt/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-lt/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"įrenginio"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Šiai programai bus leidžiama pasiekti toliau nurodytus <xliff:g id="DEVICE_NAME">%1$s</xliff:g> leidimus."</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Leisti &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; pasiekti šią informaciją iš jūsų telefono"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Pasl. keliuose įrenginiuose"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"Programa „<xliff:g id="APP_NAME">%1$s</xliff:g>“ prašo leidimo jūsų „<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>“ vardu, kad galėtų srautu perduoti programas iš vieno įrenginio į kitą"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Leisti &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; pasiekti šią informaciją iš jūsų telefono"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"„Google Play“ paslaugos"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"Programa „<xliff:g id="APP_NAME">%1$s</xliff:g>“ prašo leidimo jūsų „<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>“ vardu, kad galėtų pasiekti telefono nuotraukas, mediją ir pranešimus"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Leisti &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; atlikti šį veiksmą?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ prašo leidimo jūsų „<xliff:g id="DEVICE_NAME">%2$s</xliff:g>“ vardu, kad galėtų srautu perduoti programas ir kitas sistemos funkcijas įrenginiams netoliese"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"įrenginys"</string>
<string name="summary_generic" msgid="1761976003668044801">"Ši programa galės sinchronizuoti tam tikrą informaciją, pvz., skambinančio asmens vardą, su jūsų telefonu ir pasirinktu įrenginiu"</string>
diff --git a/packages/CompanionDeviceManager/res/values-lv/strings.xml b/packages/CompanionDeviceManager/res/values-lv/strings.xml
index 390d54428de2..36908e418e35 100644
--- a/packages/CompanionDeviceManager/res/values-lv/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-lv/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"ierīce"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Šai lietotnei tiks sniegta piekļuve norādītajām atļaujām jūsu ierīcē (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>)."</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Atļaut lietotnei &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; piekļūt šai informācijai no jūsu tālruņa"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Vairāku ierīču pakalpojumi"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"Lietotne <xliff:g id="APP_NAME">%1$s</xliff:g> pieprasa atļauju straumēt lietotnes starp jūsu ierīcēm šīs ierīces vārdā: <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>."</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Atļaut lietotnei &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; piekļūt šai informācijai no jūsu tālruņa"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play pakalpojumi"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"Lietotne <xliff:g id="APP_NAME">%1$s</xliff:g> pieprasa atļauju piekļūt jūsu tālruņa fotoattēliem, multivides saturam un paziņojumiem šīs ierīces vārdā: <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>."</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Vai atļaut ierīcei &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; veikt šo darbību?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> pieprasa atļauju tuvumā esošās ierīcēs straumēt lietotnes un citas sistēmas funkcijas šīs ierīces vārdā: <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"ierīce"</string>
<string name="summary_generic" msgid="1761976003668044801">"Šī lietotne varēs sinhronizēt informāciju (piemēram, zvanītāja vārdu) starp jūsu tālruni un izvēlēto ierīci"</string>
diff --git a/packages/CompanionDeviceManager/res/values-mk/strings.xml b/packages/CompanionDeviceManager/res/values-mk/strings.xml
index dc15899c328c..b361ae2eaed0 100644
--- a/packages/CompanionDeviceManager/res/values-mk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-mk/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"уред"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Апликацијава ќе може да пристапува до овие дозволи на <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Овозможете &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; да пристапува до овие податоци на телефонот"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Повеќенаменски услуги"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> бара дозвола во име на вашиот <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> за да стримува апликации помеѓу вашите уреди"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Услуги на Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> бара дозвола во име на вашиот <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> за да пристапува до фотографиите, аудиовизуелните содржини и известувањата на телефонот"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Ќе дозволите &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; да го преземе ова дејство?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> бара дозвола во име на вашиот <xliff:g id="DEVICE_NAME">%2$s</xliff:g> за да стримува апликации и други системски функции на уредите во близина"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"уред"</string>
<string name="summary_generic" msgid="1761976003668044801">"Оваа апликација ќе може да ги синхронизира податоците како што се имињата на јавувачите помеѓу вашиот телефон и избраниот уред"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ml/strings.xml b/packages/CompanionDeviceManager/res/values-ml/strings.xml
index 6c09e6383e44..485dc98626e8 100644
--- a/packages/CompanionDeviceManager/res/values-ml/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ml/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"ഉപകരണം"</string>
<string name="summary_glasses" msgid="2872254734959842579">"നിങ്ങളുടെ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> എന്നതിൽ ഇനിപ്പറയുന്ന അനുമതികൾ ആക്സസ് ചെയ്യാൻ ഈ ആപ്പിനെ അനുവദിക്കും"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"നിങ്ങളുടെ ഫോണിൽ നിന്ന് ഈ വിവരങ്ങൾ ആക്‌സസ് ചെയ്യാൻ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ആപ്പിനെ അനുവദിക്കുക"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"ക്രോസ്-ഉപകരണ സേവനങ്ങൾ"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"നിങ്ങളുടെ ഉപകരണങ്ങളിൽ ഒന്നിൽ നിന്ന് അടുത്തതിലേക്ക് ആപ്പുകൾ സ്ട്രീം ചെയ്യാൻ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> എന്ന ഉപകരണത്തിന് വേണ്ടി <xliff:g id="APP_NAME">%1$s</xliff:g> എന്നത് അനുമതി അഭ്യർത്ഥിക്കുന്നു"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play സേവനങ്ങൾ"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"നിങ്ങളുടെ ഫോണിലെ ഫോട്ടോകൾ, മീഡിയ, അറിയിപ്പുകൾ എന്നിവ ആക്സസ് ചെയ്യാൻ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> എന്ന ഉപകരണത്തിന് വേണ്ടി <xliff:g id="APP_NAME">%1$s</xliff:g> അനുമതി അഭ്യർത്ഥിക്കുന്നു"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"ഈ പ്രവർത്തനം നടത്താൻ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; എന്നതിനെ അനുവദിക്കണോ?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"സമീപമുള്ള ഉപകരണങ്ങളിൽ ആപ്പുകളും മറ്റ് സിസ്റ്റം ഫീച്ചറുകളും സ്ട്രീം ചെയ്യാൻ നിങ്ങളുടെ <xliff:g id="DEVICE_NAME">%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="1761976003668044801">"വിളിക്കുന്നയാളുടെ പേര് പോലുള്ള വിവരങ്ങൾ നിങ്ങളുടെ ഫോണിനും തിരഞ്ഞെടുത്ത ഉപകരണത്തിനും ഇടയിൽ സമന്വയിപ്പിക്കുന്നതിന് ഈ ആപ്പിന് കഴിയും"</string>
diff --git a/packages/CompanionDeviceManager/res/values-mn/strings.xml b/packages/CompanionDeviceManager/res/values-mn/strings.xml
index 4cbccb48cae4..13d52d6b222e 100644
--- a/packages/CompanionDeviceManager/res/values-mn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-mn/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"төхөөрөмж"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Энэ апп таны <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-н эдгээр зөвшөөрөлд хандах эрхтэй байх болно"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;-д таны утаснаас энэ мэдээлэлд хандахыг зөвшөөрнө үү"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Төхөөрөмж хоорондын үйлчилгээ"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"Таны төхөөрөмжүүд хооронд апп дамжуулахын тулд <xliff:g id="APP_NAME">%1$s</xliff:g> таны <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>-н өмнөөс зөвшөөрөл хүсэж байна"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play үйлчилгээ"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"Таны утасны зураг, медиа болон мэдэгдэлд хандахын тулд <xliff:g id="APP_NAME">%1$s</xliff:g> таны <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>-н өмнөөс зөвшөөрөл хүсэж байна"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt;-д энэ үйлдлийг хийхийг зөвшөөрөх үү?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> таны <xliff:g id="DEVICE_NAME">%2$s</xliff:g>-н өмнөөс аппууд болон системийн бусад онцлогийг ойролцоох төхөөрөмжүүд рүү дамжуулах зөвшөөрөл хүсэж байна"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"төхөөрөмж"</string>
<string name="summary_generic" msgid="1761976003668044801">"Энэ апп залгаж буй хүний нэр зэрэг мэдээллийг таны утас болон сонгосон төхөөрөмжийн хооронд синк хийх боломжтой болно"</string>
diff --git a/packages/CompanionDeviceManager/res/values-mr/strings.xml b/packages/CompanionDeviceManager/res/values-mr/strings.xml
index a01759b4511d..7f77303846de 100644
--- a/packages/CompanionDeviceManager/res/values-mr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-mr/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"डिव्हाइस"</string>
<string name="summary_glasses" msgid="2872254734959842579">"या अ‍ॅपला तुमच्या <xliff:g id="DEVICE_NAME">%1$s</xliff:g> वर या परवानग्या अ‍ॅक्सेस करण्याची अनुमती असेल"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ला ही माहिती तुमच्या फोनवरून अ‍ॅक्सेस करण्यासाठी अनुमती द्या"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"क्रॉस-डिव्हाइस सेवा"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"तुमच्या डिव्हाइसदरम्यान ॲप्स स्ट्रीम करण्यासाठी <xliff:g id="APP_NAME">%1$s</xliff:g> हे तुमच्या <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> च्या वतीने परवानगीची विनंती करत आहे"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play सेवा"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"तुमच्या फोनमधील फोटो, मीडिया आणि सूचना ॲक्सेस करण्यासाठी <xliff:g id="APP_NAME">%1$s</xliff:g> हे तुमच्या <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> च्या वतीने परवानगीची विनंती करत आहे"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ला ही कृती करण्याची अनुमती द्यायची आहे का?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> हे जवळपासच्या डिव्हाइसवर अ‍ॅप्स आणि इतर सिस्टीम वैशिष्‍ट्ये स्ट्रीम करण्यासाठी तुमच्या <xliff:g id="DEVICE_NAME">%2$s</xliff:g> च्या वतीने परवानगीची विनंती करा"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"डिव्हाइस"</string>
<string name="summary_generic" msgid="1761976003668044801">"हे ॲप तुमचा फोन आणि निवडलेल्या डिव्‍हाइसदरम्यान कॉल करत असलेल्‍या एखाद्या व्यक्तीचे नाव यासारखी माहिती सिंक करू शकेल"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ms/strings.xml b/packages/CompanionDeviceManager/res/values-ms/strings.xml
index 008535b7711d..66f8caf42882 100644
--- a/packages/CompanionDeviceManager/res/values-ms/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ms/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"peranti"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Apl ini akan dibenarkan untuk mengakses kebenaran yang berikut pada <xliff:g id="DEVICE_NAME">%1$s</xliff:g> anda"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Benarkan &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; mengakses maklumat ini daripada telefon anda"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Perkhidmatan silang peranti"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> sedang meminta kebenaran bagi pihak <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> anda untuk menstrim apl antara peranti anda"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Benarkan &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; untuk mengakses maklumat ini daripada telefon anda"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Perkhidmatan Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> sedang meminta kebenaran bagi pihak <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> anda untuk mengakses foto, media dan pemberitahuan telefon anda"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Benarkan &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; mengambil tindakan ini?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> sedang meminta kebenaran bagi pihak <xliff:g id="DEVICE_NAME">%2$s</xliff:g> anda untuk menstrim apl dan ciri sistem yang lain pada peranti berdekatan"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"peranti"</string>
<string name="summary_generic" msgid="1761976003668044801">"Apl ini akan dapat menyegerakkan maklumat seperti nama individu yang memanggil, antara telefon anda dengan peranti yang dipilih"</string>
diff --git a/packages/CompanionDeviceManager/res/values-my/strings.xml b/packages/CompanionDeviceManager/res/values-my/strings.xml
index 05a3e88fcf98..2192efab84ec 100644
--- a/packages/CompanionDeviceManager/res/values-my/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-my/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"စက်"</string>
<string name="summary_glasses" msgid="2872254734959842579">"သင့် <xliff:g id="DEVICE_NAME">%1$s</xliff:g> တွင် ၎င်းခွင့်ပြုချက်များရယူရန် ဤအက်ပ်ကိုခွင့်ပြုမည်"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ကို သင့်ဖုန်းမှ ဤအချက်အလက် သုံးခွင့်ပြုမည်"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"စက်များကြားသုံး ဝန်ဆောင်မှုများ"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> သည် သင်၏စက်များအကြား အက်ပ်များတိုက်ရိုက်လွှင့်ရန် <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ကိုယ်စား ခွင့်ပြုချက်တောင်းနေသည်"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play ဝန်ဆောင်မှုများ"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> သည် သင့်ဖုန်း၏ ဓာတ်ပုံ၊ မီဒီယာနှင့် အကြောင်းကြားချက်များသုံးရန် <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ကိုယ်စား ခွင့်ပြုချက်တောင်းနေသည်"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ကို ဤသို့လုပ်ဆောင်ခွင့်ပြုမလား။"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> သည် အနီးတစ်ဝိုက်ရှိ အက်ပ်များနှင့် အခြားစနစ်အင်္ဂါရပ်များကို တိုက်ရိုက်ဖွင့်ရန် သင့် <xliff:g id="DEVICE_NAME">%2$s</xliff:g> ကိုယ်စား ခွင့်ပြုချက်တောင်းနေသည်"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"စက်"</string>
<string name="summary_generic" msgid="1761976003668044801">"ဤအက်ပ်သည် သင့်ဖုန်းနှင့် ရွေးထားသောစက်အကြား ခေါ်ဆိုသူ၏အမည်ကဲ့သို့ အချက်အလက်ကို စင့်ခ်လုပ်နိုင်ပါမည်"</string>
diff --git a/packages/CompanionDeviceManager/res/values-nb/strings.xml b/packages/CompanionDeviceManager/res/values-nb/strings.xml
index d910f2fc9904..2ad0f32cd225 100644
--- a/packages/CompanionDeviceManager/res/values-nb/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-nb/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"enheten"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Denne appen får disse tillatelsene på <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Gi &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; tilgang til denne informasjonen fra telefonen din"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Tjenester på flere enheter"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> ber om tillatelse til å strømme apper mellom enhetene dine, på vegne av <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Gi &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; tilgang til denne informasjonen fra telefonen din"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play-tjenester"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> ber om tillatelse til å få tilgang til bilder, medier og varsler på telefonen din, på vegne av <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Vil du la &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; gjøre dette?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> ber om tillatelse på vegne av <xliff:g id="DEVICE_NAME">%2$s</xliff:g> til å strømme apper og andre systemfunksjoner til enheter i nærheten"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"enhet"</string>
<string name="summary_generic" msgid="1761976003668044801">"Denne appen kan synkronisere informasjon som navnet til noen som ringer, mellom telefonen og den valgte enheten"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ne/strings.xml b/packages/CompanionDeviceManager/res/values-ne/strings.xml
index 2001af20dd6d..0d5cad878f8c 100644
--- a/packages/CompanionDeviceManager/res/values-ne/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ne/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"डिभाइस"</string>
<string name="summary_glasses" msgid="2872254734959842579">"तपाईंको <xliff:g id="DEVICE_NAME">%1$s</xliff:g> मा यो एपलाई निम्न अनुमति दिइने छ:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; लाई तपाईंको फोनमा भएको यो जानकारी हेर्ने तथा प्रयोग गर्ने अनुमति दिनुहोस्"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"क्रस-डिभाइस सेवाहरू"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> तपाईंको डिभाइस <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> को तर्फबाट तपाईंका कुनै एउटा डिभाइसबाट अर्को डिभाइसमा एप स्ट्रिम गर्ने अनुमति माग्दै छ"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play services"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> तपाईंको डिभाइस <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> को तर्फबाट तपाईंको फोनमा भएका फोटो, मिडिया र सूचनाहरू हेर्ने तथा प्रयोग गर्ने अनुमति माग्दै छ"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; लाई यो कार्य गर्ने अनुमति दिने हो?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> तपाईंको डिभाइस <xliff:g id="DEVICE_NAME">%2$s</xliff:g> को तर्फबाट नजिकैका डिभाइसहरूमा एप र सिस्टमका अन्य सुविधाहरू स्ट्रिम गर्ने अनुमति माग्दै छ"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"यन्त्र"</string>
<string name="summary_generic" msgid="1761976003668044801">"यो एपले तपाईंको फोन र तपाईंले छनौट गर्ने डिभाइसका बिचमा कल गर्ने व्यक्तिको नाम जस्ता जानकारी सिंक गर्न सक्ने छ।"</string>
diff --git a/packages/CompanionDeviceManager/res/values-nl/strings.xml b/packages/CompanionDeviceManager/res/values-nl/strings.xml
index e8ccb58e0361..b2c2818592a8 100644
--- a/packages/CompanionDeviceManager/res/values-nl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-nl/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"apparaat"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Deze app krijgt toegang tot deze rechten op je <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; toegang geven tot deze informatie op je telefoon"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Cross-device-services"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> vraagt namens jouw <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> toestemming om apps te streamen tussen je apparaten"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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; toegang geven tot deze informatie op je telefoon"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play-services"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> vraagt namens jouw <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> toegang tot de foto\'s, media en meldingen van je telefoon"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Toestaan dat &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; deze actie uitvoert?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> vraagt namens je <xliff:g id="DEVICE_NAME">%2$s</xliff:g> toestemming om apps en andere systeemfuncties naar apparaten in de buurt te streamen"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"apparaat"</string>
<string name="summary_generic" msgid="1761976003668044801">"Deze app kan informatie, zoals de naam van iemand die belt, synchroniseren tussen je telefoon en het gekozen apparaat"</string>
diff --git a/packages/CompanionDeviceManager/res/values-or/strings.xml b/packages/CompanionDeviceManager/res/values-or/strings.xml
index 0bb47b8b249d..d5e9d85a609f 100644
--- a/packages/CompanionDeviceManager/res/values-or/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-or/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"ଡିଭାଇସ"</string>
<string name="summary_glasses" msgid="2872254734959842579">"ଆପଣଙ୍କ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ରେ ଏହି ଅନୁମତିଗୁଡ଼ିକୁ ଆକ୍ସେସ କରିବା ପାଇଁ ଏହି ଆପକୁ ଅନୁମତି ଦିଆଯିବ"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"ଆପଣଙ୍କ ଫୋନରୁ ଏହି ସୂଚନାକୁ ଆକ୍ସେସ କରିବା ପାଇଁ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;କୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"କ୍ରସ-ଡିଭାଇସ ସେବାଗୁଡ଼ିକ"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"ଆପଣଙ୍କ ଡିଭାଇସଗୁଡ଼ିକ ମଧ୍ୟରେ ଆପ୍ସକୁ ଷ୍ଟ୍ରିମ କରିବା ପାଇଁ <xliff:g id="APP_NAME">%1$s</xliff:g> ଆପଣଙ୍କର <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ତରଫରୁ ଅନୁମତି ପାଇଁ ଅନୁରୋଧ କରୁଛି"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play ସେବାଗୁଡ଼ିକ"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"ଆପଣଙ୍କ ଫୋନର ଫଟୋ, ମିଡିଆ ଏବଂ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <xliff:g id="APP_NAME">%1$s</xliff:g> ଆପଣଙ୍କର <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ତରଫରୁ ଅନୁମତି ପାଇଁ ଅନୁରୋଧ କରୁଛି"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"ଏହି ପଦକ୍ଷେପ ନେବା ପାଇଁ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt;କୁ ଅନୁମତି ଦେବେ?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"ଆଖପାଖର ଡିଭାଇସଗୁଡ଼ିକରେ ଆପ୍ସ ଏବଂ ଅନ୍ୟ ସିଷ୍ଟମ ଫିଚରଗୁଡ଼ିକୁ ଷ୍ଟ୍ରିମ କରିବା ପାଇଁ <xliff:g id="APP_NAME">%1$s</xliff:g> ଆପଣଙ୍କ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> ତରଫରୁ ଅନୁମତି ପାଇଁ ଅନୁରୋଧ କରୁଛି"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"ଡିଭାଇସ୍"</string>
<string name="summary_generic" msgid="1761976003668044801">"ଆପଣଙ୍କ ଫୋନ ଏବଂ ବଛାଯାଇଥିବା ଡିଭାଇସ ମଧ୍ୟରେ, କଲ କରୁଥିବା ଯେ କୌଣସି ବ୍ୟକ୍ତିଙ୍କ ନାମ ପରି ସୂଚନା ସିଙ୍କ କରିବାକୁ ଏହି ଆପ ସକ୍ଷମ ହେବ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-pa/strings.xml b/packages/CompanionDeviceManager/res/values-pa/strings.xml
index 445afa363e5d..8a89f06ebc2a 100644
--- a/packages/CompanionDeviceManager/res/values-pa/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pa/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"ਡੀਵਾਈਸ"</string>
<string name="summary_glasses" msgid="2872254734959842579">"ਇਸ ਐਪ ਨੂੰ ਤੁਹਾਡੇ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> \'ਤੇ ਇਨ੍ਹਾਂ ਇਜਾਜ਼ਤਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਹੋਵੇਗੀ"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ਨੂੰ ਤੁਹਾਡੇ ਫ਼ੋਨ ਤੋਂ ਇਸ ਜਾਣਕਾਰੀ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿਓ"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"ਕ੍ਰਾਸ-ਡੀਵਾਈਸ ਸੇਵਾਵਾਂ"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਤੁਹਾਡੇ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ਦੀ ਤਰਫ਼ੋਂ ਤੁਹਾਡੇ ਡੀਵਾਈਸਾਂ ਵਿਚਕਾਰ ਐਪਾਂ ਨੂੰ ਸਟ੍ਰੀਮ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਮੰਗ ਰਹੀ ਹੈ"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play ਸੇਵਾਵਾਂ"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਤੁਹਾਡੇ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> ਦੀ ਤਰਫ਼ੋਂ ਤੁਹਾਡੇ ਫ਼ੋਨ ਦੀਆਂ ਫ਼ੋਟੋਆਂ, ਮੀਡੀਆ ਅਤੇ ਸੂਚਨਾਵਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਮੰਗ ਰਹੀ ਹੈ"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"ਕੀ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ਨੂੰ ਇਹ ਕਾਰਵਾਈ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਤੁਹਾਡੇ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> ਦੀ ਤਰਫ਼ੋਂ ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸਾਂ \'ਤੇ ਐਪਾਂ ਅਤੇ ਹੋਰ ਸਿਸਟਮ ਸੰਬੰਧੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਸਟ੍ਰੀਮ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਮੰਗ ਰਹੀ ਹੈ"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"ਡੀਵਾਈਸ"</string>
<string name="summary_generic" msgid="1761976003668044801">"ਇਹ ਐਪ ਤੁਹਾਡੇ ਫ਼ੋਨ ਅਤੇ ਚੁਣੇ ਗਏ ਡੀਵਾਈਸ ਵਿਚਕਾਰ ਕਾਲਰ ਦੇ ਨਾਮ ਵਰਗੀ ਜਾਣਕਾਰੀ ਨੂੰ ਸਿੰਕ ਕਰ ਸਕੇਗੀ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-pl/strings.xml b/packages/CompanionDeviceManager/res/values-pl/strings.xml
index aec7b68504ff..945f8491597f 100644
--- a/packages/CompanionDeviceManager/res/values-pl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pl/strings.xml
@@ -26,8 +26,11 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"urządzenie"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Aplikacja będzie miała dostęp do tych uprawnień na Twoim urządzeniu (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>)"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Zezwól urządzeniu &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; na dostęp do tych informacji na Twoim telefonie"</string>
+ <string name="title_app_streaming_with_mirroring" msgid="3364582597581570658">"Zezwolić aplikacji &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; na strumieniowanie aplikacji z telefonu?"</string>
+ <string name="summary_app_streaming" msgid="295548145144086753">"%1$s będzie mieć dostęp do wszystkiego, co jest widoczne i odtwarzane na telefonie, w tym do dźwięku, zdjęć, haseł i wiadomości.&lt;br/&gt;&lt;br/&gt;%1$s będzie w stanie strumieniować aplikacje, dopóki nie usuniesz dostępu do tego uprawnienia."</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Usługi na innym urządzeniu"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> prosi w imieniu urządzenia <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> o uprawnienia dotyczące strumieniowego odtwarzania treści z aplikacji na innym urządzeniu"</string>
+ <string name="helper_summary_app_streaming_with_mirroring" msgid="6138581029144467467">"<xliff:g id="APP_NAME">%1$s</xliff:g> prosi w imieniu urządzenia <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> o pozwolenie na wyświetlanie i strumieniowanie aplikacji między Twoimi urządzeniami"</string>
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Zezwól aplikacji &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; na dostęp do tych informacji na Twoim telefonie"</string>
@@ -35,6 +38,8 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Usługi Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> prosi w imieniu urządzenia <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> o uprawnienia dotyczące dostępu do zdjęć, multimediów i powiadomień na telefonie"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Zezwolić urządzeniu &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; na wykonanie tego działania?"</string>
+ <string name="title_nearby_device_streaming_with_mirroring" msgid="242855799919611657">"Zezwolić urządzeniu &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; na strumieniowanie aplikacji i funkcji systemowych z telefonu?"</string>
+ <string name="summary_nearby_device_streaming" msgid="4039565463149145573">"%1$s będzie mieć dostęp do wszystkiego, co jest widoczne i odtwarzane na telefonie, w tym do dźwięku, zdjęć, danych do płatności, haseł i wiadomości.&lt;br/&gt;&lt;br/&gt;%1$s będzie w stanie strumieniować aplikacje i funkcje systemowe, dopóki nie usuniesz dostępu do tego uprawnienia."</string>
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> prosi w imieniu urządzenia <xliff:g id="DEVICE_NAME">%2$s</xliff:g> o uprawnienia do strumieniowego odtwarzania treści i innych funkcji systemowych na urządzeniach w pobliżu"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"urządzenie"</string>
<string name="summary_generic" msgid="1761976003668044801">"Ta aplikacja może synchronizować informacje takie jak imię i nazwisko osoby dzwoniącej między Twoim telefonem i wybranym urządzeniem"</string>
diff --git a/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml b/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml
index ef1d6cdd2bb5..41029b120b8f 100644
--- a/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"dispositivo"</string>
<string name="summary_glasses" msgid="2872254734959842579">"O app poderá acessar estas permissões no seu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Permitir que o app &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acesse estas informações do smartphone"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Serviços entre dispositivos"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> está pedindo permissão em nome do seu dispositivo <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para fazer streaming de apps entre seus dispositivos"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Autorizar que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acesse estas informações do smartphone"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play Services"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> está pedindo permissão em nome do seu dispositivo <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para acessar fotos, mídia e notificações do smartphone"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Permitir que o dispositivo &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; realize esta ação?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> está pedindo permissão em nome do seu dispositivo <xliff:g id="DEVICE_NAME">%2$s</xliff:g> para fazer streaming de apps e de outros recursos do sistema para dispositivos por perto"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"dispositivo"</string>
<string name="summary_generic" msgid="1761976003668044801">"O app poderá sincronizar informações, como o nome de quem está ligando, entre seu smartphone e o dispositivo escolhido"</string>
diff --git a/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml b/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml
index 1d96c0d45fd9..60a625ce13f5 100644
--- a/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"dispositivo"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Esta app vai poder aceder a estas autorizações no seu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Permita que a app &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; aceda a estas informações do seu telemóvel"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Serviços entre dispositivos"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> está a pedir autorização em nome do seu dispositivo <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para fazer stream de apps entre os seus dispositivos"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Permita que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; aceda a estas informações do seu telemóvel"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Serviços do Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> está a pedir autorização em nome do seu dispositivo <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para aceder às fotos, ao conteúdo multimédia e às notificações do seu telemóvel"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Permitir que o dispositivo &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; faça esta ação?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> está a pedir autorização em nome do dispositivo <xliff:g id="DEVICE_NAME">%2$s</xliff:g> para fazer stream de apps e outras funcionalidades do sistema para dispositivos próximos"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"dispositivo"</string>
<string name="summary_generic" msgid="1761976003668044801">"Esta app vai poder sincronizar informações, como o nome do autor de uma chamada, entre o telemóvel e o dispositivo escolhido"</string>
diff --git a/packages/CompanionDeviceManager/res/values-pt/strings.xml b/packages/CompanionDeviceManager/res/values-pt/strings.xml
index ef1d6cdd2bb5..41029b120b8f 100644
--- a/packages/CompanionDeviceManager/res/values-pt/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pt/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"dispositivo"</string>
<string name="summary_glasses" msgid="2872254734959842579">"O app poderá acessar estas permissões no seu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Permitir que o app &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acesse estas informações do smartphone"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Serviços entre dispositivos"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> está pedindo permissão em nome do seu dispositivo <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para fazer streaming de apps entre seus dispositivos"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Autorizar que &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; acesse estas informações do smartphone"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play Services"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> está pedindo permissão em nome do seu dispositivo <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para acessar fotos, mídia e notificações do smartphone"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Permitir que o dispositivo &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; realize esta ação?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> está pedindo permissão em nome do seu dispositivo <xliff:g id="DEVICE_NAME">%2$s</xliff:g> para fazer streaming de apps e de outros recursos do sistema para dispositivos por perto"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"dispositivo"</string>
<string name="summary_generic" msgid="1761976003668044801">"O app poderá sincronizar informações, como o nome de quem está ligando, entre seu smartphone e o dispositivo escolhido"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ro/strings.xml b/packages/CompanionDeviceManager/res/values-ro/strings.xml
index d2c3099ee2b7..70fc09082b9c 100644
--- a/packages/CompanionDeviceManager/res/values-ro/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ro/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"dispozitiv"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Aplicația va putea să acceseze următoarele permisiuni pe <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Permite ca &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; să acceseze aceste informații de pe telefon"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Servicii pe mai multe dispozitive"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> solicită permisiunea pentru <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> de a reda în stream aplicații între dispozitivele tale"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Permite ca &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; să acceseze aceste informații de pe telefon"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Servicii Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> solicită permisiunea pentru <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> de a accesa fotografiile, conținutul media și notificările de pe telefon"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Permiți ca &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; să realizeze această acțiune?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> solicită permisiunea pentru <xliff:g id="DEVICE_NAME">%2$s</xliff:g> de a reda în stream conținut din aplicații și alte funcții de sistem pe dispozitivele din apropiere"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"dispozitiv"</string>
<string name="summary_generic" msgid="1761976003668044801">"Aplicația va putea să sincronizeze informații, cum ar fi numele unui apelant, între telefonul tău și dispozitivul ales"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ru/strings.xml b/packages/CompanionDeviceManager/res/values-ru/strings.xml
index 77a2c46503d0..2072f90fa152 100644
--- a/packages/CompanionDeviceManager/res/values-ru/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ru/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"устройстве"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Это приложение получит указанные разрешения на <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Разрешите приложению &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; получать эту информацию с вашего телефона"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Сервисы стриминга приложений"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" запрашивает разрешение от имени вашего устройства <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>, чтобы транслировать приложения между устройствами."</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Сервисы Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" запрашивает разрешение от имени вашего устройства <xliff:g id="DISPLAY_NAME">%2$s</xliff:g>, чтобы получить доступ к фотографиям, медиаконтенту и уведомлениям на телефоне."</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Разрешить приложению &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; выполнять это действие?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" от имени вашего устройства \"<xliff:g id="DEVICE_NAME">%2$s</xliff:g>\" запрашивает разрешение транслировать приложения и системные функции на устройства поблизости."</string>
<string name="profile_name_generic" msgid="6851028682723034988">"устройство"</string>
<string name="summary_generic" msgid="1761976003668044801">"Приложение сможет синхронизировать информацию между телефоном и выбранным устройством, например данные из журнала звонков."</string>
diff --git a/packages/CompanionDeviceManager/res/values-si/strings.xml b/packages/CompanionDeviceManager/res/values-si/strings.xml
index 1ba83fdff6ba..6d252603010e 100644
--- a/packages/CompanionDeviceManager/res/values-si/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-si/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"උපාංගය"</string>
<string name="summary_glasses" msgid="2872254734959842579">"මෙම යෙදුමට ඔබේ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> මත මෙම අවසර වෙත ප්‍රවේශ වීමට ඉඩ දෙනු ලැබේ"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; හට ඔබගේ දුරකථනයෙන් මෙම තොරතුරුවලට ප්‍රවේශ වීමට ඉඩ දෙන්න"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"හරස්-උපාංග සේවා"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> ඔබේ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> වෙනුවෙන් ඔබේ උපාංග අතර යෙදුම් ප්‍රවාහ කිරීමට අවසරය ඉල්ලමින් සිටියි"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play සේවා"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> ඔබේ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> වෙනුවෙන් ඔබේ දුරකථනයේ ඡායාරූප, මාධ්‍ය, සහ දැනුම්දීම් වෙත ප්‍රවේශ වීමට අවසරය ඉල්ලමින් සිටියි"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"මෙම ක්‍රියාව කිරීමට &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; හට ඉඩ දෙන්න ද?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> ඔබේ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> වෙනුවෙන් යෙදුම් සහ අනෙකුත් පද්ධති විශේෂාංග අවට උපාංග වෙත ප්‍රවාහ කිරීමට අවසර ඉල්ලයි"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"උපාංගය"</string>
<string name="summary_generic" msgid="1761976003668044801">"මෙම යෙදුමට ඔබේ දුරකථනය සහ තෝරා ගත් උපාංගය අතර, අමතන කෙනෙකුගේ නම වැනි, තතු සමමුහුර්ත කිරීමට හැකි වනු ඇත"</string>
diff --git a/packages/CompanionDeviceManager/res/values-sk/strings.xml b/packages/CompanionDeviceManager/res/values-sk/strings.xml
index 637a24018759..b1653310141d 100644
--- a/packages/CompanionDeviceManager/res/values-sk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sk/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"zariadenie"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Táto aplikácia bude mať prístup k týmto povoleniam v zariadení <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Povoľte aplikácii &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; prístup k týmto informáciám z vášho telefónu"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Služby pre viacero zariadení"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> vyžaduje pre zariadenie <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> povolenie streamovať aplikácie medzi vašimi zariadeniami."</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Povoľte aplikácii &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; prístup k týmto informáciám z vášho telefónu"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Služby Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> vyžaduje pre zariadenie <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> povolenie na prístup k fotkám, médiám a upozorneniam vášho telefónu"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Chcete povoliť zariadeniu &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; vykonať túto akciu?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> vyžaduje pre zariadenie <xliff:g id="DEVICE_NAME">%2$s</xliff:g> povolenie streamovať aplikácie a ďalšie systémové funkcie do zariadení v okolí"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"zariadenie"</string>
<string name="summary_generic" msgid="1761976003668044801">"Táto aplikácia bude môcť synchronizovať informácie, napríklad meno volajúceho, medzi telefónom a vybraným zariadením"</string>
diff --git a/packages/CompanionDeviceManager/res/values-sl/strings.xml b/packages/CompanionDeviceManager/res/values-sl/strings.xml
index b03c27a9849f..6972fb405500 100644
--- a/packages/CompanionDeviceManager/res/values-sl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sl/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"naprava"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Ta aplikacija bo lahko dostopala do teh dovoljenj v napravi »<xliff:g id="DEVICE_NAME">%1$s</xliff:g>«."</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Dovolite, da &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; dostopa do teh podatkov v vašem telefonu"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Storitve za zunanje naprave"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> v imenu naprave »<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>« zahteva dovoljenje za pretočno predvajanje aplikacij v vaših napravah."</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Dovolite, da &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; dostopa do teh podatkov v vašem telefonu"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Storitve Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> v imenu naprave »<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>« zahteva dovoljenje za dostop do fotografij, predstavnosti in obvestil v telefonu."</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Ali napravi &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; dovolite izvedbo tega dejanja?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> v imenu naprave »<xliff:g id="DEVICE_NAME">%2$s</xliff:g>« zahteva dovoljenje za pretočno predvajanje aplikacij in drugih sistemskih funkcij v napravah v bližini."</string>
<string name="profile_name_generic" msgid="6851028682723034988">"naprava"</string>
<string name="summary_generic" msgid="1761976003668044801">"Ta aplikacija bo lahko sinhronizirala podatke, na primer ime klicatelja, v telefonu in izbrani napravi."</string>
diff --git a/packages/CompanionDeviceManager/res/values-sq/strings.xml b/packages/CompanionDeviceManager/res/values-sq/strings.xml
index 5eeeeb81ddf5..635e5c870842 100644
--- a/packages/CompanionDeviceManager/res/values-sq/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sq/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"pajisje"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Këtij aplikacioni do t\'i lejohet qasja te këto leje në <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Lejo që &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; të ketë qasje në këtë informacion nga telefoni yt"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Shërbimet mes pajisjeve"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> po kërkon leje në emër të <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> për të transmetuar aplikacione ndërmjet pajisjeve të tua"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Lejo që &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; të ketë qasje në këtë informacion nga telefoni yt"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Shërbimet e Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> po kërkon leje në emër të <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> për të marrë qasje te fotografitë, media dhe njoftimet e telefonit tënd"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Të lejohet që &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; të ndërmarrë këtë veprim?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> po kërkon leje në emër të (<xliff:g id="DEVICE_NAME">%2$s</xliff:g>) tënde për të transmetuar aplikacione dhe veçori të tjera të sistemit te pajisjet në afërsi"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"pajisja"</string>
<string name="summary_generic" msgid="1761976003668044801">"Ky aplikacion do të mund të sinkronizojë informacione, si p.sh emrin e dikujt që po telefonon, mes telefonit tënd dhe pajisjes së zgjedhur."</string>
diff --git a/packages/CompanionDeviceManager/res/values-sr/strings.xml b/packages/CompanionDeviceManager/res/values-sr/strings.xml
index 2271092fc804..af9e1945aa4c 100644
--- a/packages/CompanionDeviceManager/res/values-sr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sr/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"уређај"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Овој апликацији ће бити дозвољено да приступа овим дозволама на вашем уређају (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>)"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Дозволите да &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; приступа овим информацијама са телефона"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Услуге на више уређаја"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> захтева дозволу у име уређаја <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> за стримовање апликација између уређаја"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play услуге"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> захтева дозволу у име уређаја <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> за приступ сликама, медијском садржају и обавештењима са телефона"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Желите ли да дозволите да &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; обави ову радњу?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Апликација <xliff:g id="APP_NAME">%1$s</xliff:g> захтева дозволу у име уређаја <xliff:g id="DEVICE_NAME">%2$s</xliff:g> да стримује апликације и друге системске функције на уређаје у близини"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"уређај"</string>
<string name="summary_generic" msgid="1761976003668044801">"Ова апликација ће моћи да синхронизује податке, попут имена особе која упућује позив, између телефона и одабраног уређаја"</string>
diff --git a/packages/CompanionDeviceManager/res/values-sv/strings.xml b/packages/CompanionDeviceManager/res/values-sv/strings.xml
index a8934768d1fb..fdde926e961c 100644
--- a/packages/CompanionDeviceManager/res/values-sv/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sv/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"enhet"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Appen får tillåtelse att använda dessa behörigheter på din <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Ge &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; åtkomstbehörighet till denna information på telefonen"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Tjänster för flera enheter"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> begär behörighet att låta <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> streama appar mellan enheter"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Ge &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; åtkomstbehörighet till denna information på telefonen"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play-tjänster"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> begär behörighet att ge <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> åtkomst till foton, mediefiler och aviseringar på telefonen"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Vill du tillåta att &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; utför denna åtgärd?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> begär behörighet att streama appar och andra systemfunktioner till enheter i närheten för din <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"enhet"</string>
<string name="summary_generic" msgid="1761976003668044801">"Den här appen kommer att kunna synkronisera information mellan telefonen och den valda enheten, till exempel namnet på någon som ringer"</string>
diff --git a/packages/CompanionDeviceManager/res/values-sw/strings.xml b/packages/CompanionDeviceManager/res/values-sw/strings.xml
index c35c407fcbd2..2fb4677564b0 100644
--- a/packages/CompanionDeviceManager/res/values-sw/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sw/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"kifaa"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Programu hii itaruhusiwa kufikia ruhusa hizi kwenye <xliff:g id="DEVICE_NAME">%1$s</xliff:g> yako"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Ruhusu &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ifikie maelezo haya kutoka kwenye simu yako"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Huduma za kifaa kilichounganishwa kwingine"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"Programu ya <xliff:g id="APP_NAME">%1$s</xliff:g> inaomba ruhusa kwa niaba ya <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> yako ili itiririshe programu kati ya vifaa vyako"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Ruhusu &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ifikie maelezo haya kutoka kwenye simu yako"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Huduma za Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"Programu ya <xliff:g id="APP_NAME">%1$s</xliff:g> inaomba ruhusa kwa niaba ya <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> yako ili ifikie picha, maudhui na arifa za simu yako"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Ungependa kuruhusu &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; itekeleze kitendo hiki?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> inaomba ruhusa kwa niaba ya <xliff:g id="DEVICE_NAME">%2$s</xliff:g> chako ili itiririshe programu na vipengele vingine vya mfumo kwenye vifaa vilivyo karibu"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"kifaa"</string>
<string name="summary_generic" msgid="1761976003668044801">"Programu hii itaweza kusawazisha maelezo, kama vile jina la mtu anayepiga simu, kati ya simu yako na kifaa ulichochagua"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ta/strings.xml b/packages/CompanionDeviceManager/res/values-ta/strings.xml
index 1efdca48be81..62a9c332124b 100644
--- a/packages/CompanionDeviceManager/res/values-ta/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ta/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"சாதனம்"</string>
<string name="summary_glasses" msgid="2872254734959842579">"உங்கள் <xliff:g id="DEVICE_NAME">%1$s</xliff:g> சாதனத்தில் இந்த அனுமதிகளை அணுக இந்த ஆப்ஸ் அனுமதிக்கப்படும்"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"மொபைலில் உள்ள இந்தத் தகவல்களை அணுக, &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ஆப்ஸை அனுமதிக்கவும்"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"பன்முக சாதன சேவைகள்"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"உங்கள் சாதனங்களுக்கு இடையே ஆப்ஸை ஸ்ட்ரீம் செய்ய உங்கள் <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> சார்பாக <xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸ் அனுமதியைக் கோருகிறது"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play சேவைகள்"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"உங்கள் மொபைலில் உள்ள படங்கள், மீடியா, அறிவிப்புகள் ஆகியவற்றை அணுக உங்கள் <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> சார்பாக <xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸ் அனுமதியைக் கோருகிறது"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"இந்தச் செயலைச் செய்ய &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ஐ அனுமதிக்கவா?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"அருகிலுள்ள சாதனங்களுக்கு ஆப்ஸையும் பிற சிஸ்டம் அம்சங்களையும் ஸ்ட்ரீம் செய்ய உங்கள் <xliff:g id="DEVICE_NAME">%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="1761976003668044801">"அழைப்பவரின் பெயர் போன்ற தகவலை உங்கள் மொபைல் மற்றும் தேர்வுசெய்த சாதனத்திற்கு இடையில் இந்த ஆப்ஸால் ஒத்திசைக்க முடியும்"</string>
diff --git a/packages/CompanionDeviceManager/res/values-te/strings.xml b/packages/CompanionDeviceManager/res/values-te/strings.xml
index 3dd183e6acfc..4e26141922de 100644
--- a/packages/CompanionDeviceManager/res/values-te/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-te/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"పరికరం"</string>
<string name="summary_glasses" msgid="2872254734959842579">"మీ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>లో ఈ అనుమతులను యాక్సెస్ చేయడానికి ఈ యాప్ అనుమతించబడుతుంది"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"మీ ఫోన్ నుండి ఈ సమాచారాన్ని యాక్సెస్ చేయడానికి &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; యాప్‌ను అనుమతించండి"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Cross-device services"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"మీ పరికరాల మధ్య యాప్‌లను స్ట్రీమ్ చేయడానికి <xliff:g id="APP_NAME">%1$s</xliff:g> మీ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> తరఫున అనుమతిని రిక్వెస్ట్ చేస్తోంది"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play సర్వీసులు"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> మీ ఫోన్‌లోని ఫోటోలను, మీడియాను, ఇంకా నోటిఫికేషన్‌లను యాక్సెస్ చేయడానికి మీ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> తరఫున అనుమతిని రిక్వెస్ట్ చేస్తోంది"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"ఈ చర్యను అమలు చేయడానికి &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt;‌ను అనుమతించాలా?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"సమీపంలోని పరికరాలకు యాప్‌లను, ఇతర సిస్టమ్ ఫీచర్‌లను స్ట్రీమ్ చేయడానికి <xliff:g id="APP_NAME">%1$s</xliff:g> మీ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> తరఫున అనుమతిని రిక్వెస్ట్ చేస్తోంది"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"పరికరం"</string>
<string name="summary_generic" msgid="1761976003668044801">"కాల్ చేస్తున్న వారి పేరు వంటి సమాచారాన్ని ఈ యాప్ మీ ఫోన్ కు, ఎంచుకున్న పరికరానికీ మధ్య సింక్ చేయగలుగుతుంది"</string>
diff --git a/packages/CompanionDeviceManager/res/values-th/strings.xml b/packages/CompanionDeviceManager/res/values-th/strings.xml
index 1ed5abf60da5..8be8b3437b34 100644
--- a/packages/CompanionDeviceManager/res/values-th/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-th/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"อุปกรณ์"</string>
<string name="summary_glasses" msgid="2872254734959842579">"แอปนี้จะได้รับสิทธิ์ดังต่อไปนี้ใน<xliff:g id="DEVICE_NAME">%1$s</xliff:g>ของคุณ"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"อนุญาตให้ &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; เข้าถึงข้อมูลนี้จากโทรศัพท์ของคุณ"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"บริการข้ามอุปกรณ์"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> กำลังขอสิทธิ์ในนามของ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> เพื่อสตรีมแอประหว่างอุปกรณ์ต่างๆ ของคุณ"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"บริการ Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> กำลังขอสิทธิ์ในนามของ <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> เพื่อเข้าถึงรูปภาพ สื่อ และการแจ้งเตือนในโทรศัพท์ของคุณ"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"อนุญาตให้ &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ทำงานนี้ไหม"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> กำลังขอสิทธิ์ในนามของ <xliff:g id="DEVICE_NAME">%2$s</xliff:g> เพื่อสตรีมแอปและฟีเจอร์อื่นๆ ของระบบไปยังอุปกรณ์ที่อยู่ใกล้เคียง"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"อุปกรณ์"</string>
<string name="summary_generic" msgid="1761976003668044801">"แอปนี้จะสามารถซิงค์ข้อมูล เช่น ชื่อของบุคคลที่โทรเข้ามา ระหว่างโทรศัพท์ของคุณและอุปกรณ์ที่เลือกไว้ได้"</string>
diff --git a/packages/CompanionDeviceManager/res/values-tl/strings.xml b/packages/CompanionDeviceManager/res/values-tl/strings.xml
index 1b82d91836ea..45bc01d98d76 100644
--- a/packages/CompanionDeviceManager/res/values-tl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-tl/strings.xml
@@ -26,8 +26,11 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"device"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Papayagan ang app na ito na i-access ang mga pahintulot na ito sa iyong <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Payagan ang &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; na i-access ang impormasyong ito sa iyong telepono"</string>
+ <string name="title_app_streaming_with_mirroring" msgid="3364582597581570658">"Payagan ang &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; na i-stream ang mga app ng iyong telepono?"</string>
+ <string name="summary_app_streaming" msgid="295548145144086753">"Magkakaroon ng access ang %1$s sa kahit anong nakikita o nape-play sa telepono, kasama ang audio, mga larawan, mga password, at mga mensahe.&lt;br/&gt;&lt;br/&gt;Makakapag-stream ng mga app ang %1$s hanggang sa alisin mo ang access sa pahintulot na ito."</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Mga cross-device na serbisyo"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"Ang <xliff:g id="APP_NAME">%1$s</xliff:g> ay humihiling ng pahintulot sa ngalan ng iyong <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para mag-stream ng mga app sa pagitan ng mga device mo"</string>
+ <string name="helper_summary_app_streaming_with_mirroring" msgid="6138581029144467467">"Humihiling ng pahintulot ang <xliff:g id="APP_NAME">%1$s</xliff:g> para sa iyong <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> na makapagpakita at makapag-stream ng mga app sa mga device mo"</string>
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Payagan ang &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; na i-access ang impormasyon sa iyong telepono"</string>
@@ -35,6 +38,8 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Mga serbisyo ng Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"Ang <xliff:g id="APP_NAME">%1$s</xliff:g> ay humihiling ng pahintulot sa ngalan ng iyong <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> para i-access ang mga larawan, media, at notification ng telepono mo"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Payagan ang &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; na gawin ang pagkilos na ito?"</string>
+ <string name="title_nearby_device_streaming_with_mirroring" msgid="242855799919611657">"Payagan ang &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; na i-stream ang mga app at feature ng system ng iyong telepono?"</string>
+ <string name="summary_nearby_device_streaming" msgid="4039565463149145573">"Magkakaroon ng access ang %1$s sa kahit anong nakikita o nape-play sa iyong telepono, kasama ang audio, mga larawan, impormasyon sa pagbabayad, mga password, at mga mensahe.&lt;br/&gt;&lt;br/&gt;Makakapag-stream ng mga app at feature ng system ang %1$s hanggang sa alisin mo ang access sa pahintulot na ito."</string>
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Humihiling ang <xliff:g id="APP_NAME">%1$s</xliff:g> ng pahintulot sa ngalan ng iyong <xliff:g id="DEVICE_NAME">%2$s</xliff:g> para mag-stream ng mga app at iba pang feature ng system sa mga kalapit na device"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"device"</string>
<string name="summary_generic" msgid="1761976003668044801">"Magagawa ng app na ito na mag-sync ng impormasyon, tulad ng pangalan ng isang taong tumatawag, sa pagitan ng iyong telepono at ng napiling device"</string>
diff --git a/packages/CompanionDeviceManager/res/values-tr/strings.xml b/packages/CompanionDeviceManager/res/values-tr/strings.xml
index 392e1585a6ac..d5c51e8b7446 100644
--- a/packages/CompanionDeviceManager/res/values-tr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-tr/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"Cihaz"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Bu uygulamanın <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazınızda şu izinlere erişmesine izin verilecek:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; uygulamasının, telefonunuzdaki bu bilgilere erişmesine izin verin"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Cihazlar arası hizmetler"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g>, cihazlarınız arasında uygulama akışı gerçekleştirmek için <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> cihazınız adına izin istiyor"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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; uygulamasının, telefonunuzdaki bu bilgilere erişmesine izin verin"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play Hizmetleri"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g>, telefonunuzdaki fotoğraf, medya ve bildirimlere erişmek için <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> cihazınız adına izin istiyor"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; cihazının bu işlemi yapmasına izin verilsin mi?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> uygulaması <xliff:g id="DEVICE_NAME">%2$s</xliff:g> cihazınız adına uygulamaları ve diğer sistem özelliklerini yakındaki cihazlara aktarmak için izin istiyor"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"cihaz"</string>
<string name="summary_generic" msgid="1761976003668044801">"Bu uygulama, arayan kişinin adı gibi bilgileri telefonunuz ve seçili cihaz arasında senkronize edebilir"</string>
diff --git a/packages/CompanionDeviceManager/res/values-uk/strings.xml b/packages/CompanionDeviceManager/res/values-uk/strings.xml
index 9f88d9f3f852..97a3dbc17993 100644
--- a/packages/CompanionDeviceManager/res/values-uk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-uk/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"пристрій"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Цей додаток матиме доступ до перелічених нижче дозволів на вашому <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Надайте додатку &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; доступ до цієї інформації з телефона"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Сервіси для кількох пристроїв"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> від імені вашого пристрою \"<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>\" запитує дозвіл на трансляцію додатків між вашими пристроями"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Сервіси Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> від імені вашого пристрою \"<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>\" запитує дозвіл на доступ до фотографій, медіафайлів і сповіщень вашого телефона"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Дозволити додатку &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; виконувати цю дію?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> від імені вашого пристрою (<xliff:g id="DEVICE_NAME">%2$s</xliff:g>) запитує дозвіл на трансляцію додатків та інших системних функцій на пристрої поблизу"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"пристрій"</string>
<string name="summary_generic" msgid="1761976003668044801">"Цей додаток зможе синхронізувати інформацію (наприклад, ім’я абонента, який викликає) між телефоном і вибраним пристроєм"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ur/strings.xml b/packages/CompanionDeviceManager/res/values-ur/strings.xml
index 36f8b4f8b5f1..52826b30e7b7 100644
--- a/packages/CompanionDeviceManager/res/values-ur/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ur/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"آلہ"</string>
<string name="summary_glasses" msgid="2872254734959842579">"اس ایپ کو آپ کے <xliff:g id="DEVICE_NAME">%1$s</xliff:g> پر ان اجازتوں تک رسائی کی اجازت ہوگی"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"‏اپنے فون سے ان معلومات تک رسائی حاصل کرنے کی &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; کو اجازت دیں"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"کراس ڈیوائس سروسز"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> ایپ آپ کے <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> کی جانب سے آپ کے آلات کے درمیان ایپس کی سلسلہ بندی کرنے کی اجازت کی درخواست کر رہی ہے"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"‏Google Play سروسز"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> ایپ آپ کے <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> کی جانب سے آپ کے فون کی تصاویر، میڈیا اور اطلاعات تک رسائی کی اجازت کی درخواست کر رہی ہے"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"‏&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; کو یہ کارروائی انجام دینے کی اجازت دیں؟"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> آپ کے <xliff:g id="DEVICE_NAME">%2$s</xliff:g> کی جانب سے ایپس اور سسٹم کی دیگر خصوصیات کی سلسلہ بندی قریبی آلات پر کرنے کی اجازت طلب کر رہی ہے"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"آلہ"</string>
<string name="summary_generic" msgid="1761976003668044801">"یہ ایپ آپ کے فون اور منتخب کردہ آلے کے درمیان معلومات، جیسے کسی کال کرنے والے کے نام، کی مطابقت پذیری کر سکے گی"</string>
diff --git a/packages/CompanionDeviceManager/res/values-uz/strings.xml b/packages/CompanionDeviceManager/res/values-uz/strings.xml
index 8defcbc82e53..b2c81e185ea4 100644
--- a/packages/CompanionDeviceManager/res/values-uz/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-uz/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"qurilma"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Bu ilova <xliff:g id="DEVICE_NAME">%1$s</xliff:g> qurilmasida quyidagi ruxsatlarni oladi"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ilovasiga telefondagi ushbu maʼlumot uchun ruxsat bering"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Qurilmalararo xizmatlar"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"Qurilamalararo ilovalar strimingi uchun <xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> nomidan ruxsat soʻramoqda"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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; ilovasiga telefondagi ushbu maʼlumot uchun ruxsat bering"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play xizmatlari"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"Telefoningizdagi rasm, media va bildirishnomalarga kirish uchun <xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> nomidan ruxsat soʻramoqda"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; ilovasiga bu amalni bajarish uchun ruxsat berilsinmi?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi <xliff:g id="DEVICE_NAME">%2$s</xliff:g> qurilmangizdan nomidan atrofdagi qurilmalarga ilova va boshqa tizim funksiyalarini uzatish uchun ruxsat olmoqchi"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"qurilma"</string>
<string name="summary_generic" msgid="1761976003668044801">"Bu ilova telefoningiz va tanlangan qurilmada chaqiruvchining ismi kabi maʼlumotlarni sinxronlay oladi"</string>
diff --git a/packages/CompanionDeviceManager/res/values-vi/strings.xml b/packages/CompanionDeviceManager/res/values-vi/strings.xml
index 779700824fbf..ae6fc7fefa9b 100644
--- a/packages/CompanionDeviceManager/res/values-vi/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-vi/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"thiết bị"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Ứng dụng này sẽ được phép dùng những quyền sau trên <xliff:g id="DEVICE_NAME">%1$s</xliff:g> của bạn"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Cho phép &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; truy cập vào thông tin này trên điện thoại của bạn"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Dịch vụ trên nhiều thiết bị"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"<xliff:g id="APP_NAME">%1$s</xliff:g> đang yêu cầu quyền thay cho <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> để truyền trực tuyến ứng dụng giữa các thiết bị của bạn"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Cho phép &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; truy cập vào thông tin này trên điện thoại của bạn"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Dịch vụ Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"<xliff:g id="APP_NAME">%1$s</xliff:g> đang yêu cầu quyền thay cho <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> để truy cập vào ảnh, nội dung nghe nhìn và thông báo trên điện thoại của bạn"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Cho phép &lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt; thực hiện hành động này?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"<xliff:g id="APP_NAME">%1$s</xliff:g> đang thay <xliff:g id="DEVICE_NAME">%2$s</xliff:g> yêu cầu quyền truyền trực tuyến ứng dụng và các tính năng khác của hệ thống đến các thiết bị ở gần"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"thiết bị"</string>
<string name="summary_generic" msgid="1761976003668044801">"Ứng dụng này sẽ đồng bộ hoá thông tin (ví dụ: tên người gọi) giữa điện thoại của bạn và thiết bị bạn chọn"</string>
diff --git a/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml
index 11e3332f2758..8bc828738590 100644
--- a/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"设备"</string>
<string name="summary_glasses" msgid="2872254734959842579">"该应用将可以获得您<xliff:g id="DEVICE_NAME">%1$s</xliff:g>上的以下权限"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"允许“<xliff:g id="APP_NAME">%1$s</xliff:g>”&lt;strong&gt;&lt;/strong&gt;访问您手机中的这项信息"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"跨设备服务"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"“<xliff:g id="APP_NAME">%1$s</xliff:g>”正代表您的<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>请求在您的设备之间流式传输应用内容"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<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>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play 服务"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"“<xliff:g id="APP_NAME">%1$s</xliff:g>”正代表您的<xliff:g id="DISPLAY_NAME">%2$s</xliff:g>请求访问您手机上的照片、媒体内容和通知"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"允许&lt;strong&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/strong&gt;进行此操作?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"“<xliff:g id="APP_NAME">%1$s</xliff:g>”正代表您的<xliff:g id="DEVICE_NAME">%2$s</xliff:g>请求将应用和其他系统功能流式传输到附近的设备"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"设备"</string>
<string name="summary_generic" msgid="1761976003668044801">"此应用将能在您的手机和所选设备之间同步信息,例如来电者的姓名"</string>
diff --git a/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml
index e340d5a91c13..a085893e8b28 100644
--- a/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"裝置"</string>
<string name="summary_glasses" msgid="2872254734959842579">"此應用程式將可在<xliff:g id="DEVICE_NAME">%1$s</xliff:g>上取得以下權限"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;存取你手機中的這項資料"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"跨裝置服務"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」正在代表 <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> 要求權限,以便在裝置間串流應用程式的內容"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;存取你手機中的這項資料"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play 服務"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」正在代表 <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> 要求權限,以便存取手機上的相片、媒體和通知"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"要允許「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;執行此操作嗎?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」正在代表「<xliff:g id="DEVICE_NAME">%2$s</xliff:g>」要求權限,才能在附近的裝置上串流播放應用程式和其他系統功能"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"裝置"</string>
<string name="summary_generic" msgid="1761976003668044801">"此應用程式將可同步手機和所選裝置的資訊,例如來電者的名稱"</string>
diff --git a/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml
index 82ad021a082b..a93034ff96a0 100644
--- a/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"裝置"</string>
<string name="summary_glasses" msgid="2872254734959842579">"這個應用程式將可取得<xliff:g id="DEVICE_NAME">%1$s</xliff:g>上的這些權限"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;存取手機中的這項資訊"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"跨裝置服務"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"為了在裝置間串流傳輸應用程式內容,「<xliff:g id="APP_NAME">%1$s</xliff:g>」正在代表 <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> 要求相關權限"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;存取你手機中的這項資訊"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play 服務"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"為了存取手機上的相片、媒體和通知,「<xliff:g id="APP_NAME">%1$s</xliff:g>」正在代表 <xliff:g id="DISPLAY_NAME">%2$s</xliff:g> 要求相關權限"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"要允許「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」&lt;strong&gt;&lt;/strong&gt;執行這項操作嗎?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」正在代表「<xliff:g id="DEVICE_NAME">%2$s</xliff:g>」要求必要權限,才能在鄰近裝置上串流播放應用程式和其他系統功能"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"裝置"</string>
<string name="summary_generic" msgid="1761976003668044801">"這個應用程式將可在手機和指定裝置間同步資訊,例如來電者名稱"</string>
diff --git a/packages/CompanionDeviceManager/res/values-zu/strings.xml b/packages/CompanionDeviceManager/res/values-zu/strings.xml
index c35ff6aaa3bf..ddda3e35d29e 100644
--- a/packages/CompanionDeviceManager/res/values-zu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zu/strings.xml
@@ -26,8 +26,14 @@
<string name="profile_name_glasses" msgid="3506504967216601277">"idivayisi"</string>
<string name="summary_glasses" msgid="2872254734959842579">"Le-app izovunyelwa ukufinyelela lezi zimvume ku-<xliff:g id="DEVICE_NAME">%1$s</xliff:g> yakho"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Vumela i-&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ifinyelele lolu lwazi kusukela efonini yakho"</string>
+ <!-- no translation found for title_app_streaming_with_mirroring (3364582597581570658) -->
+ <skip />
+ <!-- no translation found for summary_app_streaming (295548145144086753) -->
+ <skip />
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Amasevisi amadivayisi amaningi"</string>
<string name="helper_summary_app_streaming" msgid="2396773196949578425">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> icela imvume esikhundleni se-<xliff:g id="DISPLAY_NAME">%2$s</xliff:g> yakho ukuze isakaze-bukhoma ama-app phakathi kwamadivayisi akho"</string>
+ <!-- no translation found for helper_summary_app_streaming_with_mirroring (6138581029144467467) -->
+ <skip />
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"Vumela &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ukufinyelela lolu lwazi kusuka efonini yakho"</string>
@@ -35,6 +41,10 @@
<string name="helper_title_computer" msgid="4671071173916176037">"Amasevisi we-Google Play"</string>
<string name="helper_summary_computer" msgid="8774832742608187072">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> icela imvume esikhundleni se-<xliff:g id="DISPLAY_NAME">%2$s</xliff:g> yakho ukuze ifinyelele izithombe zefoni yakho, imidiya nezaziso"</string>
<string name="title_nearby_device_streaming" msgid="7269956847378799794">"Vumela i-<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ukwenza lesi senzo?"</string>
+ <!-- no translation found for title_nearby_device_streaming_with_mirroring (242855799919611657) -->
+ <skip />
+ <!-- no translation found for summary_nearby_device_streaming (4039565463149145573) -->
+ <skip />
<string name="helper_summary_nearby_device_streaming" msgid="2063965070936844876">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> icela imvume esikhundleni se-<xliff:g id="DEVICE_NAME">%2$s</xliff:g> ukusakaza ama-app nezinye izakhi zesistimu kumadivayisi aseduze"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"idivayisi"</string>
<string name="summary_generic" msgid="1761976003668044801">"Le app izokwazi ukuvumelanisa ulwazi, njengegama lomuntu othile ofonayo, phakathi kwefoni yakho nedivayisi ekhethiwe"</string>
diff --git a/packages/CredentialManager/res/values-uz/strings.xml b/packages/CredentialManager/res/values-uz/strings.xml
index 4e27d3e71fd9..8b9cecd6f6f6 100644
--- a/packages/CredentialManager/res/values-uz/strings.xml
+++ b/packages/CredentialManager/res/values-uz/strings.xml
@@ -61,7 +61,7 @@
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ta parol"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> ta kalit"</string>
<string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> hisobi maʼlumotlari"</string>
- <string name="passkey_before_subtitle" msgid="2448119456208647444">"Kod"</string>
+ <string name="passkey_before_subtitle" msgid="2448119456208647444">"Kirish kaliti"</string>
<string name="another_device" msgid="5147276802037801217">"Boshqa qurilma"</string>
<string name="other_password_manager" msgid="565790221427004141">"Boshqa parol menejerlari"</string>
<string name="close_sheet" msgid="1393792015338908262">"Varaqni yopish"</string>
diff --git a/packages/SettingsLib/SearchWidget/res/values-fr-rCA/strings.xml b/packages/SettingsLib/SearchWidget/res/values-fr-rCA/strings.xml
index 9977138f2079..1b22e9e3af8a 100644
--- a/packages/SettingsLib/SearchWidget/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-fr-rCA/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="search_menu" msgid="1914043873178389845">"Rechercher dans les paramètres"</string>
+ <string name="search_menu" msgid="1914043873178389845">"Recherchez dans les paramètres"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
index cc23f6eedf9a..530198522c98 100644
--- a/packages/SettingsLib/res/values-af/strings.xml
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Kon nie \'n nuwe gebruiker skep nie"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Kon nie ’n nuwe gas skep nie"</string>
<string name="user_nickname" msgid="262624187455825083">"Bynaam"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Jou naam en prent sal sigbaar wees vir enigiemand wat hierdie toestel gebruik."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Voeg gebruiker by"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Voeg gas by"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Verwyder gas"</string>
diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml
index 0ecd376626c4..c5c5cdd0b899 100644
--- a/packages/SettingsLib/res/values-am/strings.xml
+++ b/packages/SettingsLib/res/values-am/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"አዲስ ተጠቃሚን መፍጠር አልተሳካም"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"አዲስ እንግዳ መፍጠር አልተሳካም"</string>
<string name="user_nickname" msgid="262624187455825083">"ቅጽል ስም"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"ይህን መሳሪያ ለሚጠቀም ማንኛውም ሰው ስምዎ እና ምስልዎ ይታያል።"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index 1f313aef239c..4fda845defb2 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"تعذّر إنشاء مستخدم جديد."</string>
<string name="add_guest_failed" msgid="8074548434469843443">"تعذّر إنشاء جلسة ضيف جديدة."</string>
<string name="user_nickname" msgid="262624187455825083">"اللقب"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"سيكون اسمك وصورتك مرئيَين لأي شخص يستخدم هذا الجهاز."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml
index a4be8e997311..2d14a8265c89 100644
--- a/packages/SettingsLib/res/values-as/strings.xml
+++ b/packages/SettingsLib/res/values-as/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"নতুন ব্যৱহাৰকাৰী সৃষ্টি কৰিব পৰা নগ’ল"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"নতুন অতিথি সৃষ্টি কৰিব পৰা নগ’ল"</string>
<string name="user_nickname" msgid="262624187455825083">"উপনাম"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"এই ডিভাইচটো ব্যৱহাৰ কৰা যিকোনো লোকে আপোনাৰ নাম আৰু চিত্ৰ দেখা পাব।"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml
index df6dad208bd8..0e3e99aa8b24 100644
--- a/packages/SettingsLib/res/values-az/strings.xml
+++ b/packages/SettingsLib/res/values-az/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Yeni istifadəçi yaratmaq alınmadı"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Yeni qonaq yaratmaq alınmadı"</string>
<string name="user_nickname" msgid="262624187455825083">"Ləqəb"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Ad və şəklinizi bu cihazdan istifadə edən hər kəs görəcək."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"İstifadəçi əlavə edin"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Qonaq əlavə edin"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Qonağı silin"</string>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
index 8bb8c838ed39..c674a445e171 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Pravljenje novog korisnika nije uspelo"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Pravljenje novog gosta nije uspelo"</string>
<string name="user_nickname" msgid="262624187455825083">"Nadimak"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Ime i slika će biti vidljivi svakom ko koristi ovaj uređaj."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Dodaj korisnika"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Dodaj gosta"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Ukloni gosta"</string>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index 433c2430a40d..9fe0680fbc74 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Не ўдалося стварыць новага карыстальніка"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Не ўдалося стварыць новага госця"</string>
<string name="user_nickname" msgid="262624187455825083">"Псеўданім"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Ваша імя і відарыс профілю будуць бачныя ўсім, хто выкарыстоўвае гэту прыладу."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
index 27e27bef4f3a..b79c0e946a29 100644
--- a/packages/SettingsLib/res/values-bg/strings.xml
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Неуспешно създаване на нов потребител"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Създаването на нов гост не бе успешно"</string>
<string name="user_nickname" msgid="262624187455825083">"Псевдоним"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Вашето име и снимка няма да бъдат видими за нито един потребител, който използва това устройство."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index 2cf055654f3b..31f693b813fa 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"নতুন ব্যবহারকারী যোগ করা যায়নি"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"নতুন অতিথি তৈরি করা যায়নি"</string>
<string name="user_nickname" msgid="262624187455825083">"বিশেষ নাম"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"এই ডিভাইস ব্যবহার করেন এমন যেকেউ আপনার নাম ও ছবি দেখতে পাবেন।"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml
index 64ccf98c3aa8..db203d6e8ef9 100644
--- a/packages/SettingsLib/res/values-bs/strings.xml
+++ b/packages/SettingsLib/res/values-bs/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Kreiranje novog korisnika nije uspjelo"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Kreiranje novog gosta nije uspjelo"</string>
<string name="user_nickname" msgid="262624187455825083">"Nadimak"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Vaše ime i slika će biti vidljivi svakom ko koristi ovaj uređaj."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Dodavanje korisnika"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Dodavanje gosta"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Ukloni gosta"</string>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index 81f9e97a2203..262adba02e1b 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"No s\'ha pogut crear l\'usuari"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"No s\'ha pogut crear un convidat"</string>
<string name="user_nickname" msgid="262624187455825083">"Àlies"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"El teu nom i la teva foto seran visibles per a qualsevol persona que utilitzi aquest dispositiu."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Afegeix un usuari"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Afegeix un convidat"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Suprimeix el convidat"</string>
diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml
index cb8c36b55580..3845e98b9a62 100644
--- a/packages/SettingsLib/res/values-cs/strings.xml
+++ b/packages/SettingsLib/res/values-cs/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Nového uživatele se nepodařilo vytvořit"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Vytvoření nového hosta se nezdařilo"</string>
<string name="user_nickname" msgid="262624187455825083">"Přezdívka"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Vaše jméno a fotku uvidí kdokoli, kdo toto zařízení použije."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Přidat uživatele"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Přidat hosta"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Odstranit hosta"</string>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index 625f05b57ac8..97676ad26757 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Der kunne ikke oprettes en ny bruger"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Der kunne ikke oprettes en ny gæst"</string>
<string name="user_nickname" msgid="262624187455825083">"Kaldenavn"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Dit navn og profilbillede vil være synligt for alle, der bruger denne enhed."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Tilføj bruger"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Tilføj gæst"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Fjern gæsten"</string>
diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml
index f622f61505f5..02fd0e0f786e 100644
--- a/packages/SettingsLib/res/values-de/strings.xml
+++ b/packages/SettingsLib/res/values-de/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Nutzer konnte nicht erstellt werden"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Fehler beim Erstellen eines neuen Gasts"</string>
<string name="user_nickname" msgid="262624187455825083">"Alias"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Dein Name und Bild sind für alle Nutzer dieses Geräts sichtbar."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Nutzer hinzufügen"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Gast hinzufügen"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Gast entfernen"</string>
diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml
index 861f4722edfb..ce81fb74645d 100644
--- a/packages/SettingsLib/res/values-el/strings.xml
+++ b/packages/SettingsLib/res/values-el/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Η δημιουργία νέου χρήστη απέτυχε"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Αποτυχία δημιουργίας νέου επισκέπτη"</string>
<string name="user_nickname" msgid="262624187455825083">"Ψευδώνυμο"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Το όνομα και η εικόνα σας θα είναι ορατά σε όλους τους χρήστες που χρησιμοποιούν αυτή τη συσκευή."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml
index e6923de1af8c..78e5b616e683 100644
--- a/packages/SettingsLib/res/values-en-rAU/strings.xml
+++ b/packages/SettingsLib/res/values-en-rAU/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Failed to create a new user"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Failed to create a new guest"</string>
<string name="user_nickname" msgid="262624187455825083">"Nickname"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Your name and picture will be visible to anyone that uses this device."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Add user"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Add guest"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Remove guest"</string>
diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml
index 36dfd2fb0c28..920f7b1a4efa 100644
--- a/packages/SettingsLib/res/values-en-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-en-rCA/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Failed to create a new user"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Failed to create a new guest"</string>
<string name="user_nickname" msgid="262624187455825083">"Nickname"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Your name and picture will be visible to anyone that uses this device."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Add user"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Add guest"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Remove guest"</string>
diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml
index e6923de1af8c..78e5b616e683 100644
--- a/packages/SettingsLib/res/values-en-rGB/strings.xml
+++ b/packages/SettingsLib/res/values-en-rGB/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Failed to create a new user"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Failed to create a new guest"</string>
<string name="user_nickname" msgid="262624187455825083">"Nickname"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Your name and picture will be visible to anyone that uses this device."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Add user"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Add guest"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Remove guest"</string>
diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml
index e6923de1af8c..78e5b616e683 100644
--- a/packages/SettingsLib/res/values-en-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-en-rIN/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Failed to create a new user"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Failed to create a new guest"</string>
<string name="user_nickname" msgid="262624187455825083">"Nickname"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Your name and picture will be visible to anyone that uses this device."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Add user"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Add guest"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Remove guest"</string>
diff --git a/packages/SettingsLib/res/values-en-rXC/strings.xml b/packages/SettingsLib/res/values-en-rXC/strings.xml
index 8b05e12f2ee4..dd83259d1733 100644
--- a/packages/SettingsLib/res/values-en-rXC/strings.xml
+++ b/packages/SettingsLib/res/values-en-rXC/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‎‎‎‎‎‎‎‎‏‎‎‏‏‏‎‏‏‏‎‏‏‏‎‎‎‎‏‏‎‏‏‎‎‏‎‎‎‏‏‏‎‏‏‏‏‏‎‎‏‎‏‎‎‎‎Failed to create a new user‎‏‎‎‏‎"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‎‏‏‏‎‏‎‎‎‏‏‏‏‎‎‎‎‎‏‎‏‎‎‏‏‎‏‏‎‎‏‎‎‎‎‏‎‏‏‏‏‎‎‎‏‏‏‏‏‎‎‏‏‎Failed to create a new guest‎‏‎‎‏‎"</string>
<string name="user_nickname" msgid="262624187455825083">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‏‏‎‏‎‎‏‎‏‎‎‎‎‎‏‏‏‎‏‎‎‏‏‏‎‏‎‎‏‏‎‏‎‏‎‏‏‏‎‏‎‏‏‏‎‎‏‎‎‏‎‏‏‏‎‏‏‎Nickname‎‏‎‎‏‎"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‎‏‎‎‎‎‎‏‏‏‎‎‏‎‎‏‎‎‎‎‏‎‏‎‏‎‎‎‏‎‏‎‎‎‎‏‎‏‎‎‏‎‏‏‎‏‎‎‏‎‏‎‏‎Your name and picture will be visible to anyone that uses this device.‎‏‎‎‏‎"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‎‏‏‏‎‏‏‎‎‎‏‎‎‏‏‏‎‎‏‏‎‎‎‏‏‏‏‏‏‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‏‏‏‎‏‎‎‎Add user‎‏‎‎‏‎"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‎‎‎‏‎‏‎‎‏‎‏‎‏‎‎‏‎‎‎‏‎‎‏‏‏‏‎‏‏‎‏‏‎‎‎‎‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‏‏‎‎‏‎‏‎Add guest‎‏‎‎‏‎"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‎‏‎‎‏‎‏‎‏‏‏‎‏‎‏‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‎‎‏‎‎‏‏‏‎‎‎‎Remove guest‎‏‎‎‏‎"</string>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index a6fdf569954c..a221d114968a 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"No se pudo crear el usuario nuevo"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"No se pudo crear un nuevo invitado"</string>
<string name="user_nickname" msgid="262624187455825083">"Sobrenombre"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Todas las personas que usen este dispositivo podrán ver tu nombre y foto."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Agregar usuario"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Agregar invitado"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Quitar invitado"</string>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index d57a33a305c6..f6beab9b3980 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"No se ha podido crear el usuario"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"No se ha podido crear un nuevo invitado"</string>
<string name="user_nickname" msgid="262624187455825083">"Apodo"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Cualquiera que use este dispositivo podrá ver tu nombre y tu imagen"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Añadir usuario"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Añadir invitado"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Quitar invitado"</string>
diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml
index dfe78d8f3557..b6b9132f8002 100644
--- a/packages/SettingsLib/res/values-et/strings.xml
+++ b/packages/SettingsLib/res/values-et/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Uue kasutaja loomine ebaõnnestus"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Uue külalise loomine ei õnnestunud"</string>
<string name="user_nickname" msgid="262624187455825083">"Hüüdnimi"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Teie nimi ja pilt on nähtav kõigile selle seadme kasutajatele."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Lisa kasutaja"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Lisa külaline"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Eemalda külaline"</string>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index 3c6309dad77f..b61388da515f 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Ezin izan da sortu erabiltzailea"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Ezin izan da sortu beste gonbidatu bat"</string>
<string name="user_nickname" msgid="262624187455825083">"Goitizena"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Gailu hau darabilen edonork ikusi ahal izango ditu zure izena eta argazkia."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Gehitu erabiltzaile bat"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Gehitu gonbidatu bat"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Kendu gonbidatua"</string>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index 2cb1873e5fbe..7938bc64c4ee 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"کاربر جدید ایجاد نشد"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"مهمان جدید ایجاد نشد"</string>
<string name="user_nickname" msgid="262624187455825083">"نام مستعار"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"افرادی که از این دستگاه استفاده می‌کنند می‌توانند نام و عکس شما را ببینند."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index 29459ca5ee1f..3ee7dc1b017d 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Uuden käyttäjän luominen epäonnistui"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Uutta vierasta ei voitu luoda"</string>
<string name="user_nickname" msgid="262624187455825083">"Lempinimi"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Nimesi ja kuvasi ovat näkyvillä kaikille tätä laitetta käyttäville henkilöille."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Lisää käyttäjä"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Lisää vieras"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Poista vieras"</string>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index f97b36ea895d..95a4e62486ba 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Impossible de créer un utilisateur"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Impossible de créer un nouvel invité"</string>
<string name="user_nickname" msgid="262624187455825083">"Pseudo"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Votre nom et votre photo seront visibles à toute personne utilisant cet appareil."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Ajouter un utilisateur"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Ajouter un invité"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Supprimer l\'invité"</string>
diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml
index 7f7ba637b47d..e26e8b045d17 100644
--- a/packages/SettingsLib/res/values-fr/strings.xml
+++ b/packages/SettingsLib/res/values-fr/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Échec de la création d\'un utilisateur"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Impossible de créer un profil invité"</string>
<string name="user_nickname" msgid="262624187455825083">"Pseudo"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Votre nom et votre photo seront visibles par quiconque utilise cet appareil."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Ajouter un utilisateur"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Ajouter un invité"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Supprimer l\'invité"</string>
diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml
index 179d946c23da..53332bf4c825 100644
--- a/packages/SettingsLib/res/values-gl/strings.xml
+++ b/packages/SettingsLib/res/values-gl/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Non se puido crear un novo usuario"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Produciuse un erro ao crear o convidado"</string>
<string name="user_nickname" msgid="262624187455825083">"Alcume"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Calquera que use este dispositivo poderá ver o teu nome e imaxe."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Engadir usuario"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Engadir convidado"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Quitar convidado"</string>
diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml
index cafe86c26b77..e792e9fb79c3 100644
--- a/packages/SettingsLib/res/values-gu/strings.xml
+++ b/packages/SettingsLib/res/values-gu/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"નવો વપરાશકર્તા બનાવવામાં નિષ્ફળ"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"નવી અતિથિ બનાવવામાં નિષ્ફળ રહ્યાં"</string>
<string name="user_nickname" msgid="262624187455825083">"ઉપનામ"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"તમારું નામ અને ફોટો આ ડિવાઇસનો ઉપયોગ કરનાર કોઈપણ વ્યક્તિને દેખાશે."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index 53cf7247b996..ae9e29a4a2a5 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"नया उपयोगकर्ता जोड़ा नहीं जा सका"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"नया मेहमान खाता नहीं बनाया जा सका"</string>
<string name="user_nickname" msgid="262624187455825083">"प्रचलित नाम"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"इस डिवाइस का इस्तेमाल करने वाले लोगों को आपका नाम और तस्वीर दिखेगी."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index f06baad6ea6c..1e12d969558a 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Izrada novog korisnika nije uspjela"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Izrada novog gosta nije uspjela"</string>
<string name="user_nickname" msgid="262624187455825083">"Nadimak"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Vaše ime i slika bit će vidljivi svima koji upotrebljavaju taj uređaj."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Dodajte korisnika"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Dodajte gosta"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Ukloni gosta"</string>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index 39d905f0bf46..0e5b1deb56ba 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Az új felhasználó létrehozása sikertelen"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Az új vendég létrehozása nem sikerült"</string>
<string name="user_nickname" msgid="262624187455825083">"Becenév"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Neve és képe mindenki számára látható lesz, aki ezt az eszközt használja."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Felhasználó hozzáadása"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Vendég hozzáadása"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Vendég munkamenet eltávolítása"</string>
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index 55f09e297f2a..6e0dd495fb4d 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Չհաջողվեց ստեղծել նոր օգտատեր"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Չհաջողվեց նոր հյուր ստեղծել"</string>
<string name="user_nickname" msgid="262624187455825083">"Կեղծանուն"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Ձեր անունն ու նկարը տեսանելի կլինեն այս սարքն օգտագործող բոլոր մարդկանց։"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index 885729da1b66..8afffaab0cd7 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Gagal membuat pengguna baru"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Gagal membuat tamu baru"</string>
<string name="user_nickname" msgid="262624187455825083">"Nama panggilan"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Nama dan foto Anda akan dapat dilihat oleh siapa saja yang menggunakan perangkat ini."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Tambahkan pengguna"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Tambahkan tamu"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Hapus tamu"</string>
diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml
index 020191b55e7c..b32266573638 100644
--- a/packages/SettingsLib/res/values-is/strings.xml
+++ b/packages/SettingsLib/res/values-is/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Ekki tókst að stofna nýjan notanda"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Ekki tókst að búa til nýjan gest"</string>
<string name="user_nickname" msgid="262624187455825083">"Gælunafn"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Allir sem nota þetta tæki geta séð nafnið þitt og myndina."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Bæta notanda við"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Bæta gesti við"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Fjarlægja gest"</string>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index 37a20675abe7..43aded08ad3a 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Creazione nuovo utente non riuscita"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Impossibile creare un nuovo ospite"</string>
<string name="user_nickname" msgid="262624187455825083">"Nickname"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Il tuo nome e la tua foto saranno visibili a chiunque usi questo dispositivo."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Aggiungi utente"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Aggiungi ospite"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Rimuovi ospite"</string>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index 3353374f7b40..990d9ac88ec0 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"לא ניתן היה ליצור משתמש חדש"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"יצירת אורח חדש נכשלה"</string>
<string name="user_nickname" msgid="262624187455825083">"כינוי"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"השם והתמונה שלך יהיו גלויים לכל מי שמשתמש במכשיר הזה."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index d87d0f8dafbc..7029f8c27112 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"新しいユーザーを作成できませんでした"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"新しいゲストを作成できませんでした"</string>
<string name="user_nickname" msgid="262624187455825083">"ニックネーム"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"このデバイスを使用するすべてのユーザーに、あなたの名前と写真が表示されます。"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml
index 7812f0b21601..461f211c46f4 100644
--- a/packages/SettingsLib/res/values-ka/strings.xml
+++ b/packages/SettingsLib/res/values-ka/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"ახალი მომხმარებლის შექმნა ვერ მოხერხდა"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"ახალი სტუმრის შექმნა ვერ მოხერხდა"</string>
<string name="user_nickname" msgid="262624187455825083">"მეტსახელი"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"თქვენი სახელი და სურათი ხილვადი იქნება ყველასთვის, ვინც ამ მოწყობილობას იყენებს."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml
index 300d4e517013..77d9f8b39448 100644
--- a/packages/SettingsLib/res/values-kk/strings.xml
+++ b/packages/SettingsLib/res/values-kk/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Жаңа пайдаланушы жасалмады."</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Жаңа қонақ профилі жасалмады."</string>
<string name="user_nickname" msgid="262624187455825083">"Лақап ат"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Атыңыз бен суретіңіз осы құрылғыны пайдаланатын барлық адамға көрінеді."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml
index 373cfc656789..7e57b15b3177 100644
--- a/packages/SettingsLib/res/values-km/strings.xml
+++ b/packages/SettingsLib/res/values-km/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"មិន​អាច​បង្កើត​អ្នកប្រើប្រាស់ថ្មី​បានទេ"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"មិនអាចបង្កើតភ្ញៀវថ្មីបានទេ"</string>
<string name="user_nickname" msgid="262624187455825083">"ឈ្មោះ​ហៅក្រៅ"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"គ្រប់គ្នាដែលប្រើឧបករណ៍នេះនឹងអាចមើលឃើញឈ្មោះ និងរូបភាពរបស់អ្នក។"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml
index bf84cc48aa39..6737cdc403c5 100644
--- a/packages/SettingsLib/res/values-kn/strings.xml
+++ b/packages/SettingsLib/res/values-kn/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"ಹೊಸ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲು ವಿಫಲವಾಗಿದೆ"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"ಹೊಸ ಅತಿಥಿಯನ್ನು ರಚಿಸಲು ವಿಫಲವಾಗಿದೆ"</string>
<string name="user_nickname" msgid="262624187455825083">"ಅಡ್ಡ ಹೆಸರು"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"ಈ ಸಾಧನವನ್ನು ಬಳಸುವ ಯಾರಿಗಾದರೂ ನಿಮ್ಮ ಹೆಸರು ಮತ್ತು ಚಿತ್ರವು ಗೋಚರಿಸುತ್ತದೆ."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index b184ef43e5b7..be472a1474f8 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"새 사용자를 만들지 못함"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"새 게스트 생성 실패"</string>
<string name="user_nickname" msgid="262624187455825083">"닉네임"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"이 기기를 사용하는 모든 사람에게 내 이름과 사진이 공개됩니다."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml
index e565e444536c..94c0fd1113f8 100644
--- a/packages/SettingsLib/res/values-ky/strings.xml
+++ b/packages/SettingsLib/res/values-ky/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Жаңы колдонуучу түзүлбөй калды"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Жаңы конок түзүлгөн жок"</string>
<string name="user_nickname" msgid="262624187455825083">"Ылакап аты"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Аты-жөнүңүз менен сүрөтүңүз ушул түзмөктү колдонгондордун баарына көрүнөт."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml
index 6caaf952b364..036889899f25 100644
--- a/packages/SettingsLib/res/values-lo/strings.xml
+++ b/packages/SettingsLib/res/values-lo/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"ສ້າງຜູ້ໃຊ້ໃໝ່ບໍ່ສຳເລັດ"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"ສ້າງແຂກໃໝ່ບໍ່ສຳເລັດ"</string>
<string name="user_nickname" msgid="262624187455825083">"ຊື່ຫຼິ້ນ"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"ຊື່ ແລະ ຮູບຂອງທ່ານຈະເຫັນໄດ້ໂດຍທຸກຄົນທີ່ໃຊ້ອຸປະກອນນີ້."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
index bc66a806375f..de0add8e3511 100644
--- a/packages/SettingsLib/res/values-lt/strings.xml
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Nepavyko sukurti naujo naudotojo"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Nepavyko sukurti naujo gesto"</string>
<string name="user_nickname" msgid="262624187455825083">"Slapyvardis"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Jūsų vardas ir nuotrauka bus rodomi visiems šio įrenginio naudotojams."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Pridėti naudotoją"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Pridėti svečią"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Pašalinti svečią"</string>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index c5409454d384..1d627f372663 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Neizdevās izveidot jaunu lietotāju"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Neizdevās izveidot jaunu viesa profilu"</string>
<string name="user_nickname" msgid="262624187455825083">"Segvārds"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Jūsu vārds un attēls būs redzams jebkuram šīs ierīces lietotājam."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Pievienot lietotāju"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Pievienot viesi"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Noņemt viesi"</string>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index 70bcc2100ddd..3bcabd68ea2a 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Не успеа да создаде нов корисник"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Не успеа создавањето нов гостин"</string>
<string name="user_nickname" msgid="262624187455825083">"Прекар"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Вашите име и слика ќе бидат видливи за секој што го користи уредов."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index 9a297e5fb4d8..b21d3cf8e0f1 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"പുതിയ ഉപയോക്താവിനെ സൃഷ്‌ടിക്കാനായില്ല"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"പുതിയ അതിഥിയെ സൃഷ്‌ടിക്കാനായില്ല"</string>
<string name="user_nickname" msgid="262624187455825083">"വിളിപ്പേര്"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"നിങ്ങളുടെ പേരും ചിത്രവും ഈ ഉപകരണം ഉപയോഗിക്കുന്ന എല്ലാവർക്കും ദൃശ്യമാകും."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml
index 000e306afef3..dbdb694f71d5 100644
--- a/packages/SettingsLib/res/values-mn/strings.xml
+++ b/packages/SettingsLib/res/values-mn/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Шинэ хэрэглэгч үүсгэж чадсангүй"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Шинэ зочин үүсгэж чадсангүй"</string>
<string name="user_nickname" msgid="262624187455825083">"Хоч"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Таны нэр болон зураг энэ төхөөрөмжийг ашигладаг дурын хүнд харагдана."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index 6af0fbdc0ac8..b270f417adbe 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"नवीन वापरकर्ता तयार करता आला नाही"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"नवीन अतिथी तयार करता आला नाही"</string>
<string name="user_nickname" msgid="262624187455825083">"टोपणनाव"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"हे डिव्हाइस वापरणाऱ्या कोणत्याही व्यक्तीला तुमचे नाव आणि फोटो दिसेल."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml
index 621b4694026b..1bc0f20ba2ef 100644
--- a/packages/SettingsLib/res/values-ms/strings.xml
+++ b/packages/SettingsLib/res/values-ms/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Gagal membuat pengguna baharu"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Gagal membuat tetamu baharu"</string>
<string name="user_nickname" msgid="262624187455825083">"Nama panggilan"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Nama dan gambar anda akan kelihatan kepada sesiapa yang menggunakan peranti ini."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Tambah pengguna"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Tambah tetamu"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Alih keluar tetamu"</string>
diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml
index 60161c344ebb..2b9ae6daa784 100644
--- a/packages/SettingsLib/res/values-my/strings.xml
+++ b/packages/SettingsLib/res/values-my/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"အသုံးပြုသူအသစ် ပြုလုပ်၍မရပါ"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"ဧည့်သည်သစ် ပြုလုပ်၍မရပါ"</string>
<string name="user_nickname" msgid="262624187455825083">"နာမည်ပြောင်"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"သင့်အမည်နှင့် ဓာတ်ပုံကို ဤစက်သုံးသူတိုင်း မြင်ရပါမည်။"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
index 22162bbc79a3..4a3363fcd918 100644
--- a/packages/SettingsLib/res/values-nb/strings.xml
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Kunne ikke opprette noen ny bruker"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Kunne ikke opprette en ny gjest"</string>
<string name="user_nickname" msgid="262624187455825083">"Kallenavn"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Navnet og bildet ditt blir synlige for alle som bruker denne enheten."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Legg til bruker"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Legg til gjest"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Fjern gjesten"</string>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index fdd965a6e52a..7ba6ca0d1e43 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"नयाँ प्रयोगकर्ता सिर्जना गर्न सकिएन"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"नयाँ अतिथि बनाउन सकिएन"</string>
<string name="user_nickname" msgid="262624187455825083">"उपनाम"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"यो डिभाइस प्रयोग गर्ने सबै जना मान्छे तपाईंको नाम र फोटो देख्ने छन्।"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
index 72e57af602e8..79d918a21e10 100644
--- a/packages/SettingsLib/res/values-nl/strings.xml
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Kan geen nieuwe gebruiker maken"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Kan geen nieuwe gast maken"</string>
<string name="user_nickname" msgid="262624187455825083">"Bijnaam"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Je naam en foto zijn zichtbaar voor iedereen die dit apparaat gebruikt."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Gebruiker toevoegen"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Gast toevoegen"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Gast verwijderen"</string>
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index 723af105f8ea..9ab80d0e4003 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"ନୂଆ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି କରିବାକୁ ବିଫଳ ହେଲା"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"ଜଣେ ନୂଆ ଅତିଥି ତିଆରି କରିବାରେ ବିଫଳ ହୋଇଛି"</string>
<string name="user_nickname" msgid="262624187455825083">"ଡାକନାମ"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"ଏହି ଡିଭାଇସ ବ୍ୟବହାର କରୁଥିବା ଯେ କୌଣସି ବ୍ୟକ୍ତିଙ୍କୁ ଆପଣଙ୍କ ନାମ ଏବଂ ଛବି ଦେଖାଯିବ।"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 8a77c12f6c0c..293233822cd1 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਬਣਾਉਣਾ ਅਸਫਲ ਰਿਹਾ"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"ਨਵਾਂ ਮਹਿਮਾਨ ਪ੍ਰੋਫਾਈਲ ਬਣਾਉਣਾ ਅਸਫਲ ਰਿਹਾ"</string>
<string name="user_nickname" msgid="262624187455825083">"ਉਪਨਾਮ"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"ਤੁਹਾਡਾ ਨਾਮ ਅਤੇ ਤਸਵੀਰ ਇਸ ਡੀਵਾਈਸ ਦੀ ਵਰਤੋਂ ਕਰਨ ਵਾਲੇ ਕਿਸੇ ਵੀ ਵਿਅਕਤੀ ਦਿਖਾਈ ਦੇਵੇਗੀ।"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index 375a35f6edef..a7d59cfef236 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Nie udało się utworzyć nowego użytkownika"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Nie udało się utworzyć nowego gościa"</string>
<string name="user_nickname" msgid="262624187455825083">"Pseudonim"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Twoja nazwa użytkownika oraz zdjęcie będą widoczne dla każdego, kto korzysta z tego urządzenia."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Dodaj użytkownika"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Dodaj gościa"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Usuń gościa"</string>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
index 55b9db509200..bb83c2bcc631 100644
--- a/packages/SettingsLib/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Falha ao criar um novo usuário"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Falha ao criar um novo convidado"</string>
<string name="user_nickname" msgid="262624187455825083">"Apelido"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Seu nome e foto vão ficar visíveis para qualquer pessoa que use este dispositivo."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Adicionar usuário"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Adicionar visitante"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Remover visitante"</string>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index ca704e7bbb87..4554f85f7ec8 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Falha ao criar um novo utilizador"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Falha ao criar um novo convidado"</string>
<string name="user_nickname" msgid="262624187455825083">"Alcunha"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"O seu nome e imagem vão ser visíveis para qualquer pessoa que use este dispositivo."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Adicionar utilizador"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Adicionar convidado"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Remover convidado"</string>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
index 55b9db509200..bb83c2bcc631 100644
--- a/packages/SettingsLib/res/values-pt/strings.xml
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Falha ao criar um novo usuário"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Falha ao criar um novo convidado"</string>
<string name="user_nickname" msgid="262624187455825083">"Apelido"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Seu nome e foto vão ficar visíveis para qualquer pessoa que use este dispositivo."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Adicionar usuário"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Adicionar visitante"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Remover visitante"</string>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
index fa89c1a4c3d8..1482ee541d16 100644
--- a/packages/SettingsLib/res/values-ro/strings.xml
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Nu s-a creat noul utilizator"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Nu s-a putut crea un invitat nou"</string>
<string name="user_nickname" msgid="262624187455825083">"Pseudonim"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Numele și fotografia ta vor fi vizibile pentru orice persoană care folosește acest dispozitiv."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Adaugă un utilizator"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Adaugă un invitat"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Șterge invitatul"</string>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index d85307098a35..7fa3f1823022 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Не удалось создать пользователя"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Не удалось создать гостя."</string>
<string name="user_nickname" msgid="262624187455825083">"Псевдоним"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Ваше имя и фото профиля будут видны всем пользователям этого устройства."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml
index 093f216afccc..ec4092637bec 100644
--- a/packages/SettingsLib/res/values-si/strings.xml
+++ b/packages/SettingsLib/res/values-si/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"නව පරිශීලකයෙකු තැනීමට අසමත් විය"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"නව අමුත්තකු තැනීම අසාර්ථක විය"</string>
<string name="user_nickname" msgid="262624187455825083">"අපනාමය"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"මෙම උපාංගය භාවිත කරන ඕනෑම කෙනෙකුට ඔබේ නම සහ පින්තූරය දැකිය හැකි වෙයි."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index 1c8293312871..4b90a9193273 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Nového použív. sa nepodarilo vytvoriť"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Nového hosťa sa nepodarilo vytvoriť"</string>
<string name="user_nickname" msgid="262624187455825083">"Prezývka"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Vaše meno a fotku uvidia všetci používatelia tohto zariadenia."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Pridať používateľa"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Pridať hosťa"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Odobrať hosťa"</string>
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
index f97dd78f8179..f04e83942836 100644
--- a/packages/SettingsLib/res/values-sl/strings.xml
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Ustvarjanje novega uporabnika ni uspelo."</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Ustvarjanje novega gosta ni uspelo."</string>
<string name="user_nickname" msgid="262624187455825083">"Vzdevek"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Vaša ime in fotografija bosta vidna vsem uporabnikom te naprave."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Dodaj uporabnika"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Dodaj gosta"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Odstrani gosta"</string>
diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml
index a802f115da4a..6721987e86c5 100644
--- a/packages/SettingsLib/res/values-sq/strings.xml
+++ b/packages/SettingsLib/res/values-sq/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Krijimi i një përdoruesi të ri dështoi"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Profili i vizitorit të ri nuk u krijua"</string>
<string name="user_nickname" msgid="262624187455825083">"Pseudonimi"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Emri dhe fotografia jote do të jenë të dukshme për çdo person që e përdor këtë pajisje."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Shto përdorues"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Shto vizitor"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Hiq vizitorin"</string>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
index df2215911673..5497c6e15b43 100644
--- a/packages/SettingsLib/res/values-sr/strings.xml
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Прављење новог корисника није успело"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Прављење новог госта није успело"</string>
<string name="user_nickname" msgid="262624187455825083">"Надимак"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Име и слика ће бити видљиви сваком ко користи овај уређај."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index 79b8399527a0..a331bc601f60 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Det gick inte att skapa en ny användare"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Det gick inte att skapa en ny gäst"</string>
<string name="user_nickname" msgid="262624187455825083">"Smeknamn"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Ditt namn och din bild visas för alla som använder den här enheten."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Lägg till användare"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Lägg till gäst"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Ta bort gäst"</string>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index c0ace5805e63..53481a2297a6 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Imeshindwa kuweka mtumiaji mpya"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Imeshindwa kuunda wasifu mpya wa mgeni"</string>
<string name="user_nickname" msgid="262624187455825083">"Jina wakilishi"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Mtu yeyote anayetumia kifaa hiki ataona jina na picha yako."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Ongeza mtumiaji"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Ongeza mgeni"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Ondoa mgeni"</string>
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index ebca26dc3063..204da0cb5344 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"புதிய பயனரை உருவாக்க முடியவில்லை"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"புதிய விருந்தினரை உருவாக்க முடியவில்லை"</string>
<string name="user_nickname" msgid="262624187455825083">"புனைப்பெயர்"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"இந்தச் சாதனத்தைப் பயன்படுத்தும் அனைவருக்கும் உங்கள் பெயரும் படமும் காட்டப்படும்."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index cf3c08acc54c..f576c8d2eee9 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"కొత్త యూజర్‌ను క్రియేట్ చేయడం విఫలమైంది"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"కొత్త అతిథిని క్రియేట్ చేయడం విఫలమైంది"</string>
<string name="user_nickname" msgid="262624187455825083">"మారుపేరు"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"ఈ పరికరాన్ని ఉపయోగించే ప్రతి ఒక్కరికి మీ పేరు, ఫోటో కనిపిస్తుంది."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index a74265ee3e9a..42e6c0567800 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"สร้างผู้ใช้ใหม่ไม่ได้"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"สร้างผู้เข้าร่วมใหม่ไม่สำเร็จ"</string>
<string name="user_nickname" msgid="262624187455825083">"ชื่อเล่น"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"ชื่อและภาพของคุณจะปรากฏแก่ทุกคนที่ใช้อุปกรณ์นี้"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
index 18d3d3b626fa..73db0c567024 100644
--- a/packages/SettingsLib/res/values-tl/strings.xml
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Hindi nakagawa ng bagong user"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Hindi nakagawa ng bagong guest"</string>
<string name="user_nickname" msgid="262624187455825083">"Nickname"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Makikita ng sinumang gumagamit ng device na ito ang iyong pangalan at larawan."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Magdagdag ng user"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Magdagdag ng bisita"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Alisin ang bisita"</string>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
index c4241150ad12..98cfe35635f8 100644
--- a/packages/SettingsLib/res/values-tr/strings.xml
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Yeni kullanıcı oluşturulamadı"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Yeni misafir oluşturulamadı"</string>
<string name="user_nickname" msgid="262624187455825083">"Takma ad"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Adınızı ve resminizi, bu cihazı kullanan herkes görebilir."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Kullanıcı ekle"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Misafir ekle"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Misafir oturumunu kaldır"</string>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index 97592f970b67..3321c780ab6e 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Не вдалося створити користувача"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Не вдалося створити гостя"</string>
<string name="user_nickname" msgid="262624187455825083">"Псевдонім"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Ваше ім’я і зображення бачитимуть усі користувачі цього пристрою."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml
index 9d3405234e5b..dadb9bc45f93 100644
--- a/packages/SettingsLib/res/values-ur/strings.xml
+++ b/packages/SettingsLib/res/values-ur/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"نیا صارف بنانے میں ناکام"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"نیا مہمان بنانے میں ناکام"</string>
<string name="user_nickname" msgid="262624187455825083">"عرفی نام"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"آپ کا نام اور تصویر ہر اس شخص کو نظر آئے گی جو اس آلہ کو استعمال کرتا ہے۔"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index bd38bb44df6e..2254132195e3 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Yangi foydalanuvchi yaratilmadi"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Yangi mehmon yaratilmadi"</string>
<string name="user_nickname" msgid="262624187455825083">"Nik"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Ismingiz va rasmingiz ushbu qurilmadan foydalanadigan har bir kishiga koʻrinadi."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Foydalanuvchi kiritish"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Mehmon kiritish"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Mehmonni olib tashlash"</string>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index 5b91df3e44a2..c98dcecbad9c 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Không tạo được người dùng mới"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Không tạo được khách mới"</string>
<string name="user_nickname" msgid="262624187455825083">"Biệt hiệu"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Bất kỳ ai dùng thiết bị này đều có thể thấy tên và hình ảnh của bạn."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Thêm người dùng"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Thêm khách"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Xóa khách"</string>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index 594922a4050d..136586dce68d 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"无法创建新用户"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"未能创建新的访客"</string>
<string name="user_nickname" msgid="262624187455825083">"昵称"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"所有使用此设备的用户都将可以看到您的姓名和照片。"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
index b3aafae4a3c6..a32e51edb9a1 100644
--- a/packages/SettingsLib/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"無法建立新使用者"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"無法建立新訪客"</string>
<string name="user_nickname" msgid="262624187455825083">"暱稱"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"此裝置的使用者都會看到你的名稱和相片。"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index c3be21a93d8c..b5f5e2edf993 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"無法建立新的使用者"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"無法建立新訪客"</string>
<string name="user_nickname" msgid="262624187455825083">"暱稱"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"這部裝置的使用者都會看到你的名稱和相片。"</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <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>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
index f6aaf813af84..19dbebfa3806 100644
--- a/packages/SettingsLib/res/values-zu/strings.xml
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -619,7 +619,8 @@
<string name="add_user_failed" msgid="4809887794313944872">"Yehlulekile ukudala umsebenzisi omusha"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"Yehlulekile ukusungula isimenywa esisha"</string>
<string name="user_nickname" msgid="262624187455825083">"Isiteketiso"</string>
- <string name="edit_user_info_message" msgid="5199468585059260053">"Igama nesithombe sakho kuzobonakala kunoma ubani osebenzisa le divayisi."</string>
+ <!-- no translation found for edit_user_info_message (6677556031419002895) -->
+ <skip />
<string name="user_add_user" msgid="7876449291500212468">"Engeza umsebenzisi"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"Engeza isivakashi"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Susa isihambeli"</string>
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java
index 1118efc3e953..64cf5c640143 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java
@@ -172,6 +172,7 @@ public class LocalBluetoothLeBroadcast implements LocalBluetoothProfile {
if ((profile == BluetoothProfile.LE_AUDIO_BROADCAST)
&& mIsBroadcastProfileReady) {
mIsBroadcastProfileReady = false;
+ notifyBroadcastStateChange(BROADCAST_STATE_OFF);
unregisterServiceCallBack(mBroadcastCallback);
mCachedBroadcastCallbackExecutorMap.clear();
}
@@ -1118,6 +1119,7 @@ public class LocalBluetoothLeBroadcast implements LocalBluetoothProfile {
Intent intent = new Intent(ACTION_LE_AUDIO_SHARING_STATE_CHANGE);
intent.putExtra(EXTRA_LE_AUDIO_SHARING_STATE, state);
intent.setPackage(mContext.getPackageName());
+ Log.e(TAG, "notifyBroadcastStateChange for state = " + state);
mContext.sendBroadcast(intent);
}
}
diff --git a/packages/SettingsProvider/res/values-af/strings.xml b/packages/SettingsProvider/res/values-af/strings.xml
index 24efbb61e0fc..79a7f2d86b74 100644
--- a/packages/SettingsProvider/res/values-af/strings.xml
+++ b/packages/SettingsProvider/res/values-af/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Instellingsberging"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Warmkolinstellings het verander"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Tik om besonderhede te sien"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-am/strings.xml b/packages/SettingsProvider/res/values-am/strings.xml
index 48fb705cdf87..6380b999e9f3 100644
--- a/packages/SettingsProvider/res/values-am/strings.xml
+++ b/packages/SettingsProvider/res/values-am/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"የቅንብሮች ማከማቻ"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"የመገናኛ ነጥብ ቅንብሮች ተለውጠዋል"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"ዝርዝሮችን ለማየት መታ ያድርጉ"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-ar/strings.xml b/packages/SettingsProvider/res/values-ar/strings.xml
index 6371f2c30abc..ab1b808d312a 100644
--- a/packages/SettingsProvider/res/values-ar/strings.xml
+++ b/packages/SettingsProvider/res/values-ar/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"تخزين الإعدادات"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"تم تغيير إعدادات نقطة الاتصال."</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"انقر للاطّلاع على التفاصيل."</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-as/strings.xml b/packages/SettingsProvider/res/values-as/strings.xml
index ead9f4da21ef..d90599e699e6 100644
--- a/packages/SettingsProvider/res/values-as/strings.xml
+++ b/packages/SettingsProvider/res/values-as/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"ছেটিঙৰ ষ্ট\'ৰেজ"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"হটস্পটৰ ছেটিং সলনি হৈছে"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"সবিশেষ চাবলৈ টিপক"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-az/strings.xml b/packages/SettingsProvider/res/values-az/strings.xml
index b0e864248e10..e99e99bc82ef 100644
--- a/packages/SettingsProvider/res/values-az/strings.xml
+++ b/packages/SettingsProvider/res/values-az/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Ayarlar Deposu"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Hotspot ayarları dəyişib"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Detalları görmək üçün toxunun"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-b+sr+Latn/strings.xml b/packages/SettingsProvider/res/values-b+sr+Latn/strings.xml
index def4b6839143..337b18ef2f4a 100644
--- a/packages/SettingsProvider/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsProvider/res/values-b+sr+Latn/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Podešavanja skladišta"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Podešavanja hotspota su promenjena"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Dodirnite da biste videli detalje"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-be/strings.xml b/packages/SettingsProvider/res/values-be/strings.xml
index 709178e9116b..3a8557ce9a32 100644
--- a/packages/SettingsProvider/res/values-be/strings.xml
+++ b/packages/SettingsProvider/res/values-be/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Сховішча налад"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Налады хот-спота змяніліся"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Дакраніцеся, каб убачыць падрабязныя звесткі"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-bg/strings.xml b/packages/SettingsProvider/res/values-bg/strings.xml
index b2eae736acac..f3d21d82c700 100644
--- a/packages/SettingsProvider/res/values-bg/strings.xml
+++ b/packages/SettingsProvider/res/values-bg/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Настройки за хранилище"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Настройките за точката за достъп са променени"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Докоснете, за да видите подробности"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-bn/strings.xml b/packages/SettingsProvider/res/values-bn/strings.xml
index b2eaa2f9ec5c..7e72dfb9a968 100644
--- a/packages/SettingsProvider/res/values-bn/strings.xml
+++ b/packages/SettingsProvider/res/values-bn/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"সেটিংস স্টোরেজ"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"হটস্পট সেটিংসে পরিবর্তন করা হয়েছে"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"বিশদে জানতে ট্যাপ করুন"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-bs/strings.xml b/packages/SettingsProvider/res/values-bs/strings.xml
index 506fea2b8fb5..464a29f17ad2 100644
--- a/packages/SettingsProvider/res/values-bs/strings.xml
+++ b/packages/SettingsProvider/res/values-bs/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Postavke za pohranu podataka"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Postavke pristupne tačke su promijenjene"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Dodirnite da vidite detalje"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-ca/strings.xml b/packages/SettingsProvider/res/values-ca/strings.xml
index 58d3572e5efe..9d6ac7ae4e6d 100644
--- a/packages/SettingsProvider/res/values-ca/strings.xml
+++ b/packages/SettingsProvider/res/values-ca/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Configuració de l\'emmagatzematge"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"La configuració del punt d\'accés Wi‑Fi ha canviat"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Toca per veure\'n els detalls"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-cs/strings.xml b/packages/SettingsProvider/res/values-cs/strings.xml
index 449c63205432..a28ffa1e27a3 100644
--- a/packages/SettingsProvider/res/values-cs/strings.xml
+++ b/packages/SettingsProvider/res/values-cs/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Paměť pro nastavení"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Nastavení hotspotu se změnilo"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Klepnutím zobrazíte podrobnosti"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-da/strings.xml b/packages/SettingsProvider/res/values-da/strings.xml
index 278d97840566..ed450d57e4e8 100644
--- a/packages/SettingsProvider/res/values-da/strings.xml
+++ b/packages/SettingsProvider/res/values-da/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Lagring af indstillinger"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Indstillingerne for hotspots har ændret sig"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Tryk for at se flere oplysninger"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-de/strings.xml b/packages/SettingsProvider/res/values-de/strings.xml
index b006ac936755..6effbaee2196 100644
--- a/packages/SettingsProvider/res/values-de/strings.xml
+++ b/packages/SettingsProvider/res/values-de/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Einstellungsspeicher"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Hotspot-Einstellungen wurden geändert"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Für Details tippen"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-el/strings.xml b/packages/SettingsProvider/res/values-el/strings.xml
index 1bfbf27513d9..5bd1fa6af8e6 100644
--- a/packages/SettingsProvider/res/values-el/strings.xml
+++ b/packages/SettingsProvider/res/values-el/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Αποθηκευτικός χώρος ρυθμίσεων"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Οι ρυθμίσεις σημείου πρόσβασης Wi-Fi έχουν αλλάξει"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Πατήστε για προβολή λεπτομερειών."</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-en-rAU/strings.xml b/packages/SettingsProvider/res/values-en-rAU/strings.xml
index 4e90cade7323..c19fdd7aed7f 100644
--- a/packages/SettingsProvider/res/values-en-rAU/strings.xml
+++ b/packages/SettingsProvider/res/values-en-rAU/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Settings Storage"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Hotspot settings have changed"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Tap to see details"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-en-rCA/strings.xml b/packages/SettingsProvider/res/values-en-rCA/strings.xml
index 4e90cade7323..c19fdd7aed7f 100644
--- a/packages/SettingsProvider/res/values-en-rCA/strings.xml
+++ b/packages/SettingsProvider/res/values-en-rCA/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Settings Storage"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Hotspot settings have changed"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Tap to see details"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-en-rGB/strings.xml b/packages/SettingsProvider/res/values-en-rGB/strings.xml
index 4e90cade7323..c19fdd7aed7f 100644
--- a/packages/SettingsProvider/res/values-en-rGB/strings.xml
+++ b/packages/SettingsProvider/res/values-en-rGB/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Settings Storage"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Hotspot settings have changed"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Tap to see details"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-en-rIN/strings.xml b/packages/SettingsProvider/res/values-en-rIN/strings.xml
index 4e90cade7323..c19fdd7aed7f 100644
--- a/packages/SettingsProvider/res/values-en-rIN/strings.xml
+++ b/packages/SettingsProvider/res/values-en-rIN/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Settings Storage"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Hotspot settings have changed"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Tap to see details"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-en-rXC/strings.xml b/packages/SettingsProvider/res/values-en-rXC/strings.xml
index 4ea5c577070b..9b18e2b4028a 100644
--- a/packages/SettingsProvider/res/values-en-rXC/strings.xml
+++ b/packages/SettingsProvider/res/values-en-rXC/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‎‎‎‏‏‎‏‎‎‎‎‎‏‎‎‏‎‏‎‏‎‏‎‏‎‎‏‏‎‏‏‏‎‏‎‎‏‏‏‎‏‎‏‎‎‎‎‏‏‏‏‏‏‎Settings Storage‎‏‎‎‏‎"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‏‏‎‎‎‏‎‎‏‎‏‎‎‏‏‏‎‎‏‏‎‎‎‏‏‎‏‏‏‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‎‎‎‏‏‎‏‎Hotspot settings have changed‎‏‎‎‏‎"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‏‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‏‏‏‏‎‎‏‏‏‏‎Tap to see details‎‏‎‎‏‎"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-es-rUS/strings.xml b/packages/SettingsProvider/res/values-es-rUS/strings.xml
index 4345b7a70792..7a15d8bda8e1 100644
--- a/packages/SettingsProvider/res/values-es-rUS/strings.xml
+++ b/packages/SettingsProvider/res/values-es-rUS/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Almacenamiento de configuración"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Se modificó la configuración de hotspot"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Presiona para obtener más información"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-es/strings.xml b/packages/SettingsProvider/res/values-es/strings.xml
index c79968978686..7a15d8bda8e1 100644
--- a/packages/SettingsProvider/res/values-es/strings.xml
+++ b/packages/SettingsProvider/res/values-es/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Almacenamiento de configuración"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Se han cambiado los ajustes de Compartir Internet"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Toca para ver información detallada"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-et/strings.xml b/packages/SettingsProvider/res/values-et/strings.xml
index 856ccf1c96f0..30b729365f15 100644
--- a/packages/SettingsProvider/res/values-et/strings.xml
+++ b/packages/SettingsProvider/res/values-et/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Seadete talletusruum"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Kuumkoha seaded on muutunud"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Puudutage üksikasjade vaatamiseks"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-eu/strings.xml b/packages/SettingsProvider/res/values-eu/strings.xml
index e7d2c67ab736..6780ae0f663c 100644
--- a/packages/SettingsProvider/res/values-eu/strings.xml
+++ b/packages/SettingsProvider/res/values-eu/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Ezarpenen biltegia"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Wifi-gunearen ezarpenak aldatu dira"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Sakatu hau xehetasunak ikusteko"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-fa/strings.xml b/packages/SettingsProvider/res/values-fa/strings.xml
index 946e2c07c576..dbeab8cbe4bc 100644
--- a/packages/SettingsProvider/res/values-fa/strings.xml
+++ b/packages/SettingsProvider/res/values-fa/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"تنظیم محل فضای ذخیره‌سازی"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"تنظیمات نقطه اتصال تغییر کرده است"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"برای مشاهده جزئیات ضربه بزنید"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-fi/strings.xml b/packages/SettingsProvider/res/values-fi/strings.xml
index 829bb3b722cf..83c7f66b7374 100644
--- a/packages/SettingsProvider/res/values-fi/strings.xml
+++ b/packages/SettingsProvider/res/values-fi/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Asetuksien tallennus"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Hotspot-asetuksia on muutettu"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Katso lisätiedot napauttamalla"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-fr-rCA/strings.xml b/packages/SettingsProvider/res/values-fr-rCA/strings.xml
index d6408456222c..c90eb0957e52 100644
--- a/packages/SettingsProvider/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsProvider/res/values-fr-rCA/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Stockage des paramètres"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Les paramètres de point d\'accès ont changé"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Touchez pour afficher les renseignements"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-fr/strings.xml b/packages/SettingsProvider/res/values-fr/strings.xml
index ba6ec0b31444..c90eb0957e52 100644
--- a/packages/SettingsProvider/res/values-fr/strings.xml
+++ b/packages/SettingsProvider/res/values-fr/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Stockage des paramètres"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Les paramètres de point d\'accès ont changé"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Appuyer ici pour plus d\'infos"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-gl/strings.xml b/packages/SettingsProvider/res/values-gl/strings.xml
index 1be162e82783..80ef3102ad62 100644
--- a/packages/SettingsProvider/res/values-gl/strings.xml
+++ b/packages/SettingsProvider/res/values-gl/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Almacenamento da configuración"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"A configuración da zona wifi cambiou"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Toca a notificación para ver os detalles"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-gu/strings.xml b/packages/SettingsProvider/res/values-gu/strings.xml
index dded10ea7006..46c34c6fbd90 100644
--- a/packages/SettingsProvider/res/values-gu/strings.xml
+++ b/packages/SettingsProvider/res/values-gu/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"સેટિંગ સ્ટોરેજ"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"હૉટસ્પૉટ સેટિંગ બદલાઈ ગઈ છે"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"વિગતો જોવા માટે ટૅપ કરો"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-hi/strings.xml b/packages/SettingsProvider/res/values-hi/strings.xml
index 9441a59252e8..da8193fa55b9 100644
--- a/packages/SettingsProvider/res/values-hi/strings.xml
+++ b/packages/SettingsProvider/res/values-hi/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"सेटिंग मेमोरी"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"हॉटस्पॉट की सेटिंग बदल गई हैं"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"जानकारी देखने के लिए टैप करें"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-hr/strings.xml b/packages/SettingsProvider/res/values-hr/strings.xml
index 206f50f1bc0a..87f1270bb139 100644
--- a/packages/SettingsProvider/res/values-hr/strings.xml
+++ b/packages/SettingsProvider/res/values-hr/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Postavke pohrane"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Promijenile su se postavke žarišne točke"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Dodirnite da biste vidjeli pojedinosti"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-hu/strings.xml b/packages/SettingsProvider/res/values-hu/strings.xml
index a7ca0d28df13..dab1b17758b0 100644
--- a/packages/SettingsProvider/res/values-hu/strings.xml
+++ b/packages/SettingsProvider/res/values-hu/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Beállítástároló"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"A hotspot beállításai módosultak"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Koppintson a részletek megtekintéséhez"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-hy/strings.xml b/packages/SettingsProvider/res/values-hy/strings.xml
index 4fdb880197de..b1f1afbaf664 100644
--- a/packages/SettingsProvider/res/values-hy/strings.xml
+++ b/packages/SettingsProvider/res/values-hy/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Կարգավորումների պահուստ"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Թեժ կետի կարգավորումները փոխվել են"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Հպեք՝ ավելին իմանալու համար"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-in/strings.xml b/packages/SettingsProvider/res/values-in/strings.xml
index 911892b09e55..bed20eb8a327 100644
--- a/packages/SettingsProvider/res/values-in/strings.xml
+++ b/packages/SettingsProvider/res/values-in/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Setelan Penyimpanan"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Setelan hotspot telah berubah"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Ketuk untuk melihat detail"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-is/strings.xml b/packages/SettingsProvider/res/values-is/strings.xml
index c72442e3c238..c4e2aa689702 100644
--- a/packages/SettingsProvider/res/values-is/strings.xml
+++ b/packages/SettingsProvider/res/values-is/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Stillingageymsla"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Stillingum heits reits hefur verið breytt"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Ýttu til að sjá upplýsingar"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-it/strings.xml b/packages/SettingsProvider/res/values-it/strings.xml
index 0e11d0648b70..ba1431d821fa 100644
--- a/packages/SettingsProvider/res/values-it/strings.xml
+++ b/packages/SettingsProvider/res/values-it/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Memoria impostazioni"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Le impostazioni di hotspot sono state modificate"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Tocca per vedere i dettagli"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-iw/strings.xml b/packages/SettingsProvider/res/values-iw/strings.xml
index 10765fe90b45..ad2eaf4a2215 100644
--- a/packages/SettingsProvider/res/values-iw/strings.xml
+++ b/packages/SettingsProvider/res/values-iw/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"אחסון הגדרות"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"‏הגדרות נקודת האינטרנט (hotspot) השתנו"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"יש להקיש להצגת פרטים"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-ja/strings.xml b/packages/SettingsProvider/res/values-ja/strings.xml
index 5b91b2de1951..d222ca93a0db 100644
--- a/packages/SettingsProvider/res/values-ja/strings.xml
+++ b/packages/SettingsProvider/res/values-ja/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"ストレージの設定"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"アクセス ポイントの設定が変更されました"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"タップして詳細を確認してください"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-ka/strings.xml b/packages/SettingsProvider/res/values-ka/strings.xml
index 70845acf262a..691a2e966b1a 100644
--- a/packages/SettingsProvider/res/values-ka/strings.xml
+++ b/packages/SettingsProvider/res/values-ka/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"პარამეტრების საცავი"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"უსადენო ქსელის პარამეტრები შეიცვალა"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"შეეხეთ დეტალების სანახავად"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-kk/strings.xml b/packages/SettingsProvider/res/values-kk/strings.xml
index 2823e4e925c0..8cf8af2b2894 100644
--- a/packages/SettingsProvider/res/values-kk/strings.xml
+++ b/packages/SettingsProvider/res/values-kk/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Параметрлер жады"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Хотспот параметрлері өзгертілді"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Мәліметтерді көру үшін түртіңіз."</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-km/strings.xml b/packages/SettingsProvider/res/values-km/strings.xml
index cdae41066836..7be624279c50 100644
--- a/packages/SettingsProvider/res/values-km/strings.xml
+++ b/packages/SettingsProvider/res/values-km/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"កំណត់​ការ​ផ្ទុក"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"បាន​ប្ដូរ​ការកំណត់​ហតស្ប៉ត"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"ចុច​ដើម្បី​មើល​ព័ត៌មានលម្អិត"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-kn/strings.xml b/packages/SettingsProvider/res/values-kn/strings.xml
index 400b358e7c9b..ca427ec75038 100644
--- a/packages/SettingsProvider/res/values-kn/strings.xml
+++ b/packages/SettingsProvider/res/values-kn/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"ಸೆಟ್ಟಿಂಗ್‌ಗಳ ಸಂಗ್ರಹಣೆ"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"ಹಾಟ್‌ಸ್ಪಾಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಬದಲಾಗಿವೆ"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"ವಿವರಗಳನ್ನು ನೋಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-ko/strings.xml b/packages/SettingsProvider/res/values-ko/strings.xml
index d76b76667747..8e0cc75de7e0 100644
--- a/packages/SettingsProvider/res/values-ko/strings.xml
+++ b/packages/SettingsProvider/res/values-ko/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"설정 저장소"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"핫스팟 설정 변경됨"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"세부정보를 보려면 탭하세요."</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-ky/strings.xml b/packages/SettingsProvider/res/values-ky/strings.xml
index 830182b26594..2bbfa3d0d100 100644
--- a/packages/SettingsProvider/res/values-ky/strings.xml
+++ b/packages/SettingsProvider/res/values-ky/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Параметрлерди сактоо"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Байланыш түйүнү параметрлери өзгөрдү"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Чоо-жайын билүү үчүн басыңыз"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-lo/strings.xml b/packages/SettingsProvider/res/values-lo/strings.xml
index c2b5df71d11b..4e5793661740 100644
--- a/packages/SettingsProvider/res/values-lo/strings.xml
+++ b/packages/SettingsProvider/res/values-lo/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"ບ່ອນເກັບຂໍ້ມູນການຕັ້ງຄ່າ"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"ບັນທຶກການຕັ້ງຄ່າຮັອດສະປອດແລ້ວ"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"ແຕະເພື່ອເບິ່ງລາຍລະອຽດ"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-lt/strings.xml b/packages/SettingsProvider/res/values-lt/strings.xml
index 64f429b242e5..5b4432ff5f31 100644
--- a/packages/SettingsProvider/res/values-lt/strings.xml
+++ b/packages/SettingsProvider/res/values-lt/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Nustatymų saugykla"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Buvo pakeisti viešosios interneto prieigos taško nustatymai"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Palieskite ir peržiūrėkite išsamią informaciją"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-lv/strings.xml b/packages/SettingsProvider/res/values-lv/strings.xml
index e5af8f785773..c83580c7026e 100644
--- a/packages/SettingsProvider/res/values-lv/strings.xml
+++ b/packages/SettingsProvider/res/values-lv/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Iestatījumu krātuve"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Ir mainīti tīklāja iestatījumi"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Pieskarieties, lai skatītu detalizētāku informāciju."</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-mk/strings.xml b/packages/SettingsProvider/res/values-mk/strings.xml
index 13ff8a26d95d..f281baea384d 100644
--- a/packages/SettingsProvider/res/values-mk/strings.xml
+++ b/packages/SettingsProvider/res/values-mk/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Поставки за меморија"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Поставките за точка на пристап се променија"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Допрете за да видите детали"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-ml/strings.xml b/packages/SettingsProvider/res/values-ml/strings.xml
index 8df8ce4e02c8..43a88e1dd5a9 100644
--- a/packages/SettingsProvider/res/values-ml/strings.xml
+++ b/packages/SettingsProvider/res/values-ml/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"സംഭരണ ക്രമീകരണം"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"ഹോട്ട്‌സ്‌പോട്ട് ക്രമീകരണം മാറിയിരിക്കുന്നു"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"വിശദാംശങ്ങൾ കാണാൻ ടാപ്പ് ചെയ്യുക"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-mn/strings.xml b/packages/SettingsProvider/res/values-mn/strings.xml
index a9c2e8ca0e9d..94521451bcee 100644
--- a/packages/SettingsProvider/res/values-mn/strings.xml
+++ b/packages/SettingsProvider/res/values-mn/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Тохиргооны Сан"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Сүлжээний цэгийн тохиргоог өөрчиллөө"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Дэлгэрэнгүй мэдээлэл харахын тулд товшино уу"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-mr/strings.xml b/packages/SettingsProvider/res/values-mr/strings.xml
index 51b8b194df15..65a876f1a02a 100644
--- a/packages/SettingsProvider/res/values-mr/strings.xml
+++ b/packages/SettingsProvider/res/values-mr/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"सेटिंग्ज संचयन"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"हॉटस्पॉट सेटिंग्ज बदलल्या आहेत"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"तपशील पाहण्यासाठी टॅप करा"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-ms/strings.xml b/packages/SettingsProvider/res/values-ms/strings.xml
index 51a8f2baa4e7..9108b0706899 100644
--- a/packages/SettingsProvider/res/values-ms/strings.xml
+++ b/packages/SettingsProvider/res/values-ms/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Storan Tetapan"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Tetapan tempat liputan telah berubah"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Ketik untuk melihat butiran"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-my/strings.xml b/packages/SettingsProvider/res/values-my/strings.xml
index dc9f53171a28..0c5e8407758a 100644
--- a/packages/SettingsProvider/res/values-my/strings.xml
+++ b/packages/SettingsProvider/res/values-my/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"သိုလှောင်မှုဆက်တင်များ"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"ဟော့စပေါ့ ဆက်တင်များ ပြောင်းသွားပြီ"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"အသေးစိတ်ကြည့်ရန် တို့ပါ"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-nb/strings.xml b/packages/SettingsProvider/res/values-nb/strings.xml
index 8da90c0f32cb..ad18f945d401 100644
--- a/packages/SettingsProvider/res/values-nb/strings.xml
+++ b/packages/SettingsProvider/res/values-nb/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Lagring av innstillinger"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Innstillingene for wifi-sone er endret"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Trykk for å se detaljer"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-ne/strings.xml b/packages/SettingsProvider/res/values-ne/strings.xml
index a0e3465a32ff..af6ef62a17eb 100644
--- a/packages/SettingsProvider/res/values-ne/strings.xml
+++ b/packages/SettingsProvider/res/values-ne/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"सेटिङहरू भण्डारण"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"हटस्पटका सेटिङ परिवर्तन गरिएका छन्"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"विवरणहरू हेर्न ट्याप गर्नुहोस्"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-nl/strings.xml b/packages/SettingsProvider/res/values-nl/strings.xml
index 91b854242938..010fdb574eac 100644
--- a/packages/SettingsProvider/res/values-nl/strings.xml
+++ b/packages/SettingsProvider/res/values-nl/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Opslagruimte voor instellingen"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Hotspot-instellingen zijn gewijzigd"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Tik voor meer informatie"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-or/strings.xml b/packages/SettingsProvider/res/values-or/strings.xml
index 099130c77a00..1087e93ab92a 100644
--- a/packages/SettingsProvider/res/values-or/strings.xml
+++ b/packages/SettingsProvider/res/values-or/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"ସେଟିଂସ ଷ୍ଟୋରେଜ"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"ହଟସ୍ପଟ୍ ସେଟିଂସ ବଦଳାଯାଇଛି"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"ବିବରଣୀ ଦେଖିବାକୁ ଟାପ୍ କରନ୍ତୁ"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-pa/strings.xml b/packages/SettingsProvider/res/values-pa/strings.xml
index 1c9a985677eb..1813becf434a 100644
--- a/packages/SettingsProvider/res/values-pa/strings.xml
+++ b/packages/SettingsProvider/res/values-pa/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"ਸੈਟਿੰਗਾਂ ਸਟੋਰੇਜ"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"ਹੌਟਸਪੌਟ ਸੈਟਿੰਗਾਂ ਬਦਲ ਗਈਆਂ ਹਨ"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"ਵੇਰਵੇ ਦੇਖਣ ਲਈ ਟੈਪ ਕਰੋ"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-pl/strings.xml b/packages/SettingsProvider/res/values-pl/strings.xml
index d86fc4d03fa4..9f81e632a504 100644
--- a/packages/SettingsProvider/res/values-pl/strings.xml
+++ b/packages/SettingsProvider/res/values-pl/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Pamięć ustawień"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Ustawienia hotspotu zostały zmienione"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Kliknij, by zobaczyć szczegóły"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-pt-rBR/strings.xml b/packages/SettingsProvider/res/values-pt-rBR/strings.xml
index a8600188a54e..ade17469292c 100644
--- a/packages/SettingsProvider/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsProvider/res/values-pt-rBR/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Armazenamento de configurações"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"As configurações de ponto de acesso mudaram"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Toque para ver os detalhes"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-pt-rPT/strings.xml b/packages/SettingsProvider/res/values-pt-rPT/strings.xml
index a8a8e07b3e86..c7dc9e6dc6dd 100644
--- a/packages/SettingsProvider/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsProvider/res/values-pt-rPT/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Armazenamento de definições"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"As definições da zona Wi-Fi foram alteradas"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Toque para ver os detalhes."</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-pt/strings.xml b/packages/SettingsProvider/res/values-pt/strings.xml
index a8600188a54e..ade17469292c 100644
--- a/packages/SettingsProvider/res/values-pt/strings.xml
+++ b/packages/SettingsProvider/res/values-pt/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Armazenamento de configurações"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"As configurações de ponto de acesso mudaram"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Toque para ver os detalhes"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-ro/strings.xml b/packages/SettingsProvider/res/values-ro/strings.xml
index db1301966100..53e9429a49cd 100644
--- a/packages/SettingsProvider/res/values-ro/strings.xml
+++ b/packages/SettingsProvider/res/values-ro/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Stocare setări"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Setările hotspotului s-au modificat"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Atinge pentru detalii"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-ru/strings.xml b/packages/SettingsProvider/res/values-ru/strings.xml
index 331fae1c9046..4c15984c7ceb 100644
--- a/packages/SettingsProvider/res/values-ru/strings.xml
+++ b/packages/SettingsProvider/res/values-ru/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Хранилище настроек"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Настройки точки доступа изменены"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Нажмите, чтобы узнать больше."</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-si/strings.xml b/packages/SettingsProvider/res/values-si/strings.xml
index a9c4d0b8ef0b..24ef79820220 100644
--- a/packages/SettingsProvider/res/values-si/strings.xml
+++ b/packages/SettingsProvider/res/values-si/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"සැකසීම් ගබඩාව"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"හොට්ස්පොට් සැකසීම් වෙනස් කර ඇත"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"විස්තර බැලීමට තට්ටු කරන්න"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-sk/strings.xml b/packages/SettingsProvider/res/values-sk/strings.xml
index 5712d05f752f..955c834754c2 100644
--- a/packages/SettingsProvider/res/values-sk/strings.xml
+++ b/packages/SettingsProvider/res/values-sk/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Ukladací priestor nastavení"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Nastavenia hotspotu boli zmenené"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Klepnutím zobrazíte podrobnosti"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-sl/strings.xml b/packages/SettingsProvider/res/values-sl/strings.xml
index 4e265fb5ecaf..3d7768dfa024 100644
--- a/packages/SettingsProvider/res/values-sl/strings.xml
+++ b/packages/SettingsProvider/res/values-sl/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Shramba nastavitev"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Nastavitve dostopne ročke so spremenjene"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Dotaknite se za ogled podrobnosti"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-sq/strings.xml b/packages/SettingsProvider/res/values-sq/strings.xml
index 8bbe2e70dbe0..a8e66d5dae80 100644
--- a/packages/SettingsProvider/res/values-sq/strings.xml
+++ b/packages/SettingsProvider/res/values-sq/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Hapësira ruajtëse e \"Cilësimeve\""</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Cilësimet e zonës së qasjes për internet kanë ndryshuar"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Trokit për të parë detajet"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-sr/strings.xml b/packages/SettingsProvider/res/values-sr/strings.xml
index 4d0576212d9c..7082761e1f71 100644
--- a/packages/SettingsProvider/res/values-sr/strings.xml
+++ b/packages/SettingsProvider/res/values-sr/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Подешавања складишта"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Подешавања хотспота су промењена"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Додирните да бисте видели детаље"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-sv/strings.xml b/packages/SettingsProvider/res/values-sv/strings.xml
index 5ee4703dcfc6..b6de084cdeb9 100644
--- a/packages/SettingsProvider/res/values-sv/strings.xml
+++ b/packages/SettingsProvider/res/values-sv/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Lagring av inställningar"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Inställningarna för surfzon har ändrats"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Tryck här för mer information"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-sw/strings.xml b/packages/SettingsProvider/res/values-sw/strings.xml
index 59f82a948177..d17f60b92aea 100644
--- a/packages/SettingsProvider/res/values-sw/strings.xml
+++ b/packages/SettingsProvider/res/values-sw/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Hifadhi ya Mipangilio"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Mipangilio ya mtandaopepe imebadilika"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Gusa ili uangalie maelezo"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-ta/strings.xml b/packages/SettingsProvider/res/values-ta/strings.xml
index 54d2242dced9..7a868785d952 100644
--- a/packages/SettingsProvider/res/values-ta/strings.xml
+++ b/packages/SettingsProvider/res/values-ta/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"அமைப்புகளின் சேமிப்பிடம்"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"ஹாட்ஸ்பாட் அமைப்புகள் மாற்றப்பட்டன"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"விவரங்களைப் பார்க்க, தட்டவும்"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-te/strings.xml b/packages/SettingsProvider/res/values-te/strings.xml
index 95be5c5e9a5d..9bbe7617b02b 100644
--- a/packages/SettingsProvider/res/values-te/strings.xml
+++ b/packages/SettingsProvider/res/values-te/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"సెట్టింగ్‌ల స్టోరేజ్‌"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"హాట్‌స్పాట్ సెట్టింగ్‌లు మార్చబడ్డాయి"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"వివరాలను చూడటానికి ట్యాప్ చేయండి"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-th/strings.xml b/packages/SettingsProvider/res/values-th/strings.xml
index ed6317427da4..ae8ba6a430b8 100644
--- a/packages/SettingsProvider/res/values-th/strings.xml
+++ b/packages/SettingsProvider/res/values-th/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"ที่เก็บข้อมูลการตั้งค่า"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"การตั้งค่าฮอตสปอตมีการเปลี่ยนแปลง"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"แตะเพื่อดูรายละเอียด"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-tl/strings.xml b/packages/SettingsProvider/res/values-tl/strings.xml
index 3d6be4071715..0fe535eee8e3 100644
--- a/packages/SettingsProvider/res/values-tl/strings.xml
+++ b/packages/SettingsProvider/res/values-tl/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Storage ng Mga Setting"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Nabago ang mga setting ng hotspot"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"I-tap para makita ang mga detalye"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-tr/strings.xml b/packages/SettingsProvider/res/values-tr/strings.xml
index 75e908f46475..e99e99bc82ef 100644
--- a/packages/SettingsProvider/res/values-tr/strings.xml
+++ b/packages/SettingsProvider/res/values-tr/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Ayarlar Deposu"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Hotspot ayarları değişti"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Ayrıntıları görmek için dokunun"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-uk/strings.xml b/packages/SettingsProvider/res/values-uk/strings.xml
index 2dbb360cbffa..900dd0710be5 100644
--- a/packages/SettingsProvider/res/values-uk/strings.xml
+++ b/packages/SettingsProvider/res/values-uk/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Сховище налаштувань"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Налаштування точки доступу змінились"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Торкніться, щоб переглянути докладні відомості"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-ur/strings.xml b/packages/SettingsProvider/res/values-ur/strings.xml
index 5a1b0f985bb6..e79249b00c18 100644
--- a/packages/SettingsProvider/res/values-ur/strings.xml
+++ b/packages/SettingsProvider/res/values-ur/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"ترتیبات کا اسٹوریج"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"ہاٹ اسپاٹ کی ترتیبات تبدیل ہو گئیں"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"تفصیلات دیکھنے کے لیے تھپتھپائیں"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-uz/strings.xml b/packages/SettingsProvider/res/values-uz/strings.xml
index bb6e22eb62ba..38f0ce518bf6 100644
--- a/packages/SettingsProvider/res/values-uz/strings.xml
+++ b/packages/SettingsProvider/res/values-uz/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Sozlamalar xotirasi"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Hotspot sozlamalari oʻzgardi"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Tafsilotlar uchun bosing"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-vi/strings.xml b/packages/SettingsProvider/res/values-vi/strings.xml
index 4608983aa9e1..015fbfda9b82 100644
--- a/packages/SettingsProvider/res/values-vi/strings.xml
+++ b/packages/SettingsProvider/res/values-vi/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Lưu trữ bộ nhớ"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Đã thay đổi các tùy chọn cài đặt điểm phát sóng"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Nhấn để xem chi tiết"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-zh-rCN/strings.xml b/packages/SettingsProvider/res/values-zh-rCN/strings.xml
index a08afc85e9a4..11c5d6c28889 100644
--- a/packages/SettingsProvider/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsProvider/res/values-zh-rCN/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"设置存储"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"热点设置已更改"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"点按即可查看详细信息"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-zh-rHK/strings.xml b/packages/SettingsProvider/res/values-zh-rHK/strings.xml
index fb91dbbbf4d8..977c9b91d13d 100644
--- a/packages/SettingsProvider/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsProvider/res/values-zh-rHK/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"設定儲存空間"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"熱點設定已變更"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"輕按以查看詳情"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-zh-rTW/strings.xml b/packages/SettingsProvider/res/values-zh-rTW/strings.xml
index 1b8fcb267737..977c9b91d13d 100644
--- a/packages/SettingsProvider/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsProvider/res/values-zh-rTW/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"設定儲存空間"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"無線基地台設定有所變更"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"輕觸即可查看詳細資料"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-zu/strings.xml b/packages/SettingsProvider/res/values-zu/strings.xml
index dad24b496fd9..cb5a7818423b 100644
--- a/packages/SettingsProvider/res/values-zu/strings.xml
+++ b/packages/SettingsProvider/res/values-zu/strings.xml
@@ -20,6 +20,4 @@
<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="4567566098528588863">"Izilungiselelo zesitoreji"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Izilungiselelo ze-Hotspot zishintshile"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Thepha ukuze ubone imininingwane"</string>
</resources>
diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/values-kk/strings.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/values-kk/strings.xml
index 48c2634191d9..f707e367ce8a 100644
--- a/packages/SystemUI/accessibility/accessibilitymenu/res/values-kk/strings.xml
+++ b/packages/SystemUI/accessibility/accessibilitymenu/res/values-kk/strings.xml
@@ -15,7 +15,7 @@
<string name="screenshot_label" msgid="863978141223970162">"Скриншот"</string>
<string name="screenshot_utterance" msgid="1430760563401895074">"Скриншот жасау"</string>
<string name="volume_up_label" msgid="8592766918780362870">"Дыбысын арттыру"</string>
- <string name="volume_down_label" msgid="8574981863656447346">"Дыбысын азайту"</string>
+ <string name="volume_down_label" msgid="8574981863656447346">"Дыбысты азайту"</string>
<string name="brightness_up_label" msgid="8010753822854544846">"Жарықтығын арттыру"</string>
<string name="brightness_down_label" msgid="7115662941913272072">"Жарықтығын азайту"</string>
<string name="previous_button_content_description" msgid="840869171117765966">"Алдыңғы экранға өту"</string>
diff --git a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/AccessibilityMenuService.java b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/AccessibilityMenuService.java
index 88181e7e2a52..4dd029c038bb 100644
--- a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/AccessibilityMenuService.java
+++ b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/AccessibilityMenuService.java
@@ -280,10 +280,8 @@ public class AccessibilityMenuService extends AccessibilityService
return;
}
- if (Flags.a11yMenuHideBeforeTakingAction()) {
- // Hide the a11y menu UI before performing the following shortcut actions.
- mA11yMenuLayout.hideMenu();
- }
+ // Hide the a11y menu UI before performing the following shortcut actions.
+ mA11yMenuLayout.hideMenu();
if (viewTag == ShortcutId.ID_ASSISTANT_VALUE.ordinal()) {
// Always restart the voice command activity, so that the UI is reloaded.
@@ -299,31 +297,18 @@ public class AccessibilityMenuService extends AccessibilityService
} else if (viewTag == ShortcutId.ID_RECENT_VALUE.ordinal()) {
performGlobalActionInternal(GLOBAL_ACTION_RECENTS);
} else if (viewTag == ShortcutId.ID_LOCKSCREEN_VALUE.ordinal()) {
- if (Flags.a11yMenuHideBeforeTakingAction()) {
- // Delay before locking the screen to give time for the UI to close.
- mHandler.postDelayed(
- () -> performGlobalActionInternal(GLOBAL_ACTION_LOCK_SCREEN),
- HIDE_UI_DELAY_MS);
- } else {
- performGlobalActionInternal(GLOBAL_ACTION_LOCK_SCREEN);
- }
+ // Delay before locking the screen to give time for the UI to close.
+ mHandler.postDelayed(
+ () -> performGlobalActionInternal(GLOBAL_ACTION_LOCK_SCREEN),
+ HIDE_UI_DELAY_MS);
} else if (viewTag == ShortcutId.ID_QUICKSETTING_VALUE.ordinal()) {
performGlobalActionInternal(GLOBAL_ACTION_QUICK_SETTINGS);
} else if (viewTag == ShortcutId.ID_NOTIFICATION_VALUE.ordinal()) {
performGlobalActionInternal(GLOBAL_ACTION_NOTIFICATIONS);
} else if (viewTag == ShortcutId.ID_SCREENSHOT_VALUE.ordinal()) {
- if (Flags.a11yMenuHideBeforeTakingAction()) {
- // Delay before taking a screenshot to give time for the UI to close.
- mHandler.postDelayed(
- () -> performGlobalActionInternal(GLOBAL_ACTION_TAKE_SCREENSHOT),
- HIDE_UI_DELAY_MS);
- } else {
- performGlobalActionInternal(GLOBAL_ACTION_TAKE_SCREENSHOT);
- }
- }
-
- if (!Flags.a11yMenuHideBeforeTakingAction()) {
- mA11yMenuLayout.hideMenu();
+ mHandler.postDelayed(
+ () -> performGlobalActionInternal(GLOBAL_ACTION_TAKE_SCREENSHOT),
+ HIDE_UI_DELAY_MS);
}
}
diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig
index 79ae38946195..8da50216f13c 100644
--- a/packages/SystemUI/aconfig/systemui.aconfig
+++ b/packages/SystemUI/aconfig/systemui.aconfig
@@ -417,6 +417,13 @@ flag {
}
flag {
+ name: "screenshot_private_profile"
+ namespace: "systemui"
+ description: "Private profile support for screenshots"
+ bug: "327613051"
+}
+
+flag {
name: "run_fingerprint_detect_on_dismissible_keyguard"
namespace: "systemui"
description: "Run fingerprint detect instead of authenticate if the keyguard is dismissible."
@@ -480,6 +487,27 @@ flag {
}
flag {
+ name: "disable_contextual_tips_frequency_check"
+ description: "Disables frequency capping check for contextual tips."
+ namespace: "systemui"
+ bug: "322891421"
+}
+
+flag {
+ name: "disable_contextual_tips_ios_switcher_check"
+ description: "Disables iOS switcher check which guard the tips designed only for iOS switchers."
+ namespace: "systemui"
+ bug: "322891421"
+}
+
+flag {
+ name: "disable_contextual_tips_first_30d_check"
+ description: "Disables condition check which only show tips within 30 days after phone setup."
+ namespace: "systemui"
+ bug: "322891421"
+}
+
+flag {
name: "enable_contextual_tips"
description: "Enables showing contextual tips."
namespace: "systemui"
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt
index c7d43fcdf5e6..5c9b271b342c 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt
@@ -31,7 +31,6 @@ import com.android.systemui.statusbar.notification.stack.AmbientState
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
import com.android.systemui.statusbar.notification.stack.NotificationStackSizeCalculator
-import com.android.systemui.statusbar.notification.stack.shared.flexiNotifsEnabled
import com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificationContainer
import com.android.systemui.statusbar.notification.stack.ui.viewbinder.NotificationStackAppearanceViewBinder
import com.android.systemui.statusbar.notification.stack.ui.viewbinder.SharedNotificationContainerBinder
@@ -83,7 +82,7 @@ constructor(
mainImmediateDispatcher = mainImmediateDispatcher,
)
- if (sceneContainerFlags.flexiNotifsEnabled()) {
+ if (sceneContainerFlags.isEnabled()) {
NotificationStackAppearanceViewBinder.bind(
context,
sharedNotificationContainer,
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt b/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt
index 791d629179e6..d78097815b5e 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt
@@ -42,7 +42,6 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.snapshotFlow
-import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.draw.drawBehind
@@ -355,18 +354,7 @@ private fun SceneScope.NotificationPlaceholder(
)
}
) {
- content {
- if (viewModel.isPlaceholderTextVisible) {
- Box(Modifier.fillMaxSize()) {
- Text(
- text = "Notifications",
- style = MaterialTheme.typography.titleLarge,
- color = MaterialTheme.colorScheme.onSurface,
- modifier = Modifier.align(Alignment.Center),
- )
- }
- }
- }
+ content {}
}
}
diff --git a/packages/SystemUI/customization/src/com/android/systemui/util/Assert.java b/packages/SystemUI/customization/src/com/android/systemui/util/Assert.java
index e08936cbf75e..165e9728b9d7 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/util/Assert.java
+++ b/packages/SystemUI/customization/src/com/android/systemui/util/Assert.java
@@ -37,6 +37,39 @@ public class Assert {
sTestThread = thread;
}
+ /**
+ * Run {@code mainThreadWork} synchronously, ensuring that {@link #isMainThread()} will return
+ * {@code true} while it is running.
+ * <ol>
+ * <li>If {@link #isMainThread()} already passes, the work is simply run.
+ * <li>If the test thread is {@code null}, it will be set, the work run, and then cleared.
+ * <li>If the test thread is already set to a different thread, this call will fail the test to
+ * avoid causing spurious errors on other thread
+ * </ol>
+ */
+ @VisibleForTesting
+ public static void runWithCurrentThreadAsMainThread(Runnable mainThreadWork) {
+ if (sMainLooper.isCurrentThread()) {
+ // Already on the main thread; just run
+ mainThreadWork.run();
+ return;
+ }
+ Thread currentThread = Thread.currentThread();
+ Thread originalThread = sTestThread;
+ if (originalThread == currentThread) {
+ // test thread is already set; just run
+ mainThreadWork.run();
+ return;
+ }
+ if (originalThread != null) {
+ throw new AssertionError("Can't run with current thread (" + currentThread
+ + ") as main thread; test thread is already set to " + originalThread);
+ }
+ sTestThread = currentThread;
+ mainThreadWork.run();
+ sTestThread = null;
+ }
+
public static void isMainThread() {
if (!sMainLooper.isCurrentThread()
&& (sTestThread == null || sTestThread != Thread.currentThread())) {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModelTest.kt
new file mode 100644
index 000000000000..02d927a0e5ab
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModelTest.kt
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.communal.ui.viewmodel
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.testKosmos
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class CommunalTransitionViewModelTest : SysuiTestCase() {
+ private val kosmos = testKosmos()
+ private val testScope = kosmos.testScope
+
+ val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository
+
+ private lateinit var underTest: CommunalTransitionViewModel
+
+ @Before
+ fun setup() {
+ underTest = kosmos.communalTransitionViewModel
+ }
+
+ @Test
+ fun testIsUmoOnCommunalDuringTransitionBetweenLockscreenAndGlanceableHub() =
+ testScope.runTest {
+ val isUmoOnCommunal by collectLastValue(underTest.isUmoOnCommunal)
+ assertThat(isUmoOnCommunal).isNull()
+
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.LOCKSCREEN,
+ to = KeyguardState.GLANCEABLE_HUB,
+ testScope
+ )
+ assertThat(isUmoOnCommunal).isTrue()
+
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.GLANCEABLE_HUB,
+ to = KeyguardState.LOCKSCREEN,
+ testScope
+ )
+ assertThat(isUmoOnCommunal).isFalse()
+ }
+
+ @Test
+ fun testIsUmoOnCommunalDuringTransitionBetweenDreamingAndGlanceableHub() =
+ testScope.runTest {
+ val isUmoOnCommunal by collectLastValue(underTest.isUmoOnCommunal)
+ assertThat(isUmoOnCommunal).isNull()
+
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.DREAMING,
+ to = KeyguardState.GLANCEABLE_HUB,
+ testScope
+ )
+ assertThat(isUmoOnCommunal).isTrue()
+
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.GLANCEABLE_HUB,
+ to = KeyguardState.DREAMING,
+ testScope
+ )
+ assertThat(isUmoOnCommunal).isFalse()
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToLockscreenTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToLockscreenTransitionViewModelTest.kt
index af9678022e07..1aa1ec4c22a2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToLockscreenTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToLockscreenTransitionViewModelTest.kt
@@ -50,7 +50,7 @@ class GlanceableHubToLockscreenTransitionViewModelTest : SysuiTestCase() {
fun lockscreenFadeIn() =
testScope.runTest {
val values by collectValues(underTest.keyguardAlpha)
- assertThat(values).containsExactly(0f)
+ assertThat(values).isEmpty()
keyguardTransitionRepository.sendTransitionSteps(
listOf(
@@ -70,7 +70,7 @@ class GlanceableHubToLockscreenTransitionViewModelTest : SysuiTestCase() {
testScope,
)
- assertThat(values).hasSize(5)
+ assertThat(values).hasSize(4)
values.forEach { assertThat(it).isIn(Range.closed(0f, 1f)) }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGlanceableHubTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGlanceableHubTransitionViewModelTest.kt
index 241d0b818193..68a7b7e3d384 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGlanceableHubTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGlanceableHubTransitionViewModelTest.kt
@@ -50,7 +50,7 @@ class LockscreenToGlanceableHubTransitionViewModelTest : SysuiTestCase() {
fun lockscreenFadeOut() =
testScope.runTest {
val values by collectValues(underTest.keyguardAlpha)
- assertThat(values).containsExactly(1f)
+ assertThat(values).isEmpty()
keyguardTransitionRepository.sendTransitionSteps(
listOf(
@@ -71,7 +71,7 @@ class LockscreenToGlanceableHubTransitionViewModelTest : SysuiTestCase() {
testScope,
)
- assertThat(values).hasSize(4)
+ assertThat(values).hasSize(3)
values.forEach { assertThat(it).isIn(Range.closed(0f, 1f)) }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileDataInteractorTest.kt
index 37ef6ad17a64..769a54aee862 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileDataInteractorTest.kt
@@ -127,31 +127,15 @@ class InternetTileDataInteractorTest : SysuiTestCase() {
context.orCreateTestableResources.apply {
addOverride(com.android.internal.R.drawable.ic_signal_cellular, TestStubDrawable())
- addOverride(
- com.android.settingslib.R.drawable.ic_no_internet_wifi_signal_0,
- TestStubDrawable()
- )
- addOverride(
- com.android.settingslib.R.drawable.ic_no_internet_wifi_signal_1,
- TestStubDrawable()
- )
- addOverride(
- com.android.settingslib.R.drawable.ic_no_internet_wifi_signal_2,
- TestStubDrawable()
- )
- addOverride(
- com.android.settingslib.R.drawable.ic_no_internet_wifi_signal_3,
- TestStubDrawable()
- )
- addOverride(
- com.android.settingslib.R.drawable.ic_no_internet_wifi_signal_4,
- TestStubDrawable()
- )
addOverride(com.android.settingslib.R.drawable.ic_hotspot_phone, TestStubDrawable())
addOverride(com.android.settingslib.R.drawable.ic_hotspot_laptop, TestStubDrawable())
addOverride(com.android.settingslib.R.drawable.ic_hotspot_tablet, TestStubDrawable())
addOverride(com.android.settingslib.R.drawable.ic_hotspot_watch, TestStubDrawable())
addOverride(com.android.settingslib.R.drawable.ic_hotspot_auto, TestStubDrawable())
+
+ WifiIcons.WIFI_NO_INTERNET_ICONS.forEach { iconId ->
+ addOverride(iconId, TestStubDrawable())
+ }
}
underTest =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationStackAppearanceIntegrationTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationStackAppearanceIntegrationTest.kt
index 47918c8c1b3d..2689fc111142 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationStackAppearanceIntegrationTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationStackAppearanceIntegrationTest.kt
@@ -97,6 +97,8 @@ class NotificationStackAppearanceIntegrationTest : SysuiTestCase() {
sceneInteractor.setTransitionState(transitionState)
val expandFraction by collectLastValue(appearanceViewModel.expandFraction)
assertThat(expandFraction).isEqualTo(0f)
+ val isScrollable by collectLastValue(appearanceViewModel.isScrollable)
+ assertThat(isScrollable).isFalse()
fakeSceneDataSource.pause()
sceneInteractor.changeScene(Scenes.Shade, "reason")
@@ -119,6 +121,7 @@ class NotificationStackAppearanceIntegrationTest : SysuiTestCase() {
fakeSceneDataSource.unpause(expectedScene = Scenes.Shade)
assertThat(expandFraction).isWithin(0.01f).of(1f)
+ assertThat(isScrollable).isTrue()
}
@Test
@@ -131,6 +134,8 @@ class NotificationStackAppearanceIntegrationTest : SysuiTestCase() {
sceneInteractor.setTransitionState(transitionState)
val expandFraction by collectLastValue(appearanceViewModel.expandFraction)
assertThat(expandFraction).isEqualTo(1f)
+ val isScrollable by collectLastValue(appearanceViewModel.isScrollable)
+ assertThat(isScrollable).isFalse()
}
@Test
@@ -144,7 +149,12 @@ class NotificationStackAppearanceIntegrationTest : SysuiTestCase() {
val expandFraction by collectLastValue(appearanceViewModel.expandFraction)
assertThat(expandFraction).isEqualTo(1f)
+ fakeSceneDataSource.changeScene(toScene = Scenes.Shade)
+ val isScrollable by collectLastValue(appearanceViewModel.isScrollable)
+ assertThat(isScrollable).isTrue()
+
fakeSceneDataSource.pause()
+
sceneInteractor.changeScene(Scenes.QuickSettings, "reason")
val transitionProgress = MutableStateFlow(0f)
transitionState.value =
@@ -165,5 +175,6 @@ class NotificationStackAppearanceIntegrationTest : SysuiTestCase() {
fakeSceneDataSource.unpause(expectedScene = Scenes.QuickSettings)
assertThat(expandFraction).isEqualTo(1f)
+ assertThat(isScrollable).isFalse()
}
}
diff --git a/packages/SystemUI/res-keyguard/values-af/strings.xml b/packages/SystemUI/res-keyguard/values-af/strings.xml
index 3b2eb15956e4..b4d89ab3ae48 100644
--- a/packages/SystemUI/res-keyguard/values-af/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-af/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Gebruik eerder ’n patroon vir bykomende sekuriteit"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Gebruik eerder ’n PIN vir bykomende sekuriteit"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Gebruik eerder ’n wagwoord vir bykomende sekuriteit"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Toestel is deur administrateur gesluit"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Toestel is handmatig gesluit"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Nie herken nie"</string>
diff --git a/packages/SystemUI/res-keyguard/values-am/strings.xml b/packages/SystemUI/res-keyguard/values-am/strings.xml
index c3d141c36a53..bfe918f50039 100644
--- a/packages/SystemUI/res-keyguard/values-am/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-am/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"ለተጨማሪ ደህንነት በምትኩ ስርዓተ ጥለት ይጠቀሙ"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"ለተጨማሪ ደህንነት በምትኩ ፒን ይጠቀሙ"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"ለተጨማሪ ደህንነት በምትኩ የይለፍ ቃል ይጠቀሙ"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"መሣሪያ በአስተዳዳሪ ተቆልፏል"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"መሣሪያ በተጠቃሚው ራሱ ተቆልፏል"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"አልታወቀም"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ar/strings.xml b/packages/SystemUI/res-keyguard/values-ar/strings.xml
index cf8341dfd44f..e4dc86dcc01b 100644
--- a/packages/SystemUI/res-keyguard/values-ar/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ar/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"لمزيد من الأمان، استخدِم النقش بدلاً من ذلك."</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"لمزيد من الأمان، أدخِل رقم التعريف الشخصي بدلاً من ذلك."</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"لمزيد من الأمان، أدخِل كلمة المرور بدلاً من ذلك."</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"اختار المشرف قفل الجهاز"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"تم حظر الجهاز يدويًا"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"لم يتم التعرّف عليه."</string>
diff --git a/packages/SystemUI/res-keyguard/values-as/strings.xml b/packages/SystemUI/res-keyguard/values-as/strings.xml
index d11a9c182cf3..7a12aef5a980 100644
--- a/packages/SystemUI/res-keyguard/values-as/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-as/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"অতিৰিক্ত সুৰক্ষাৰ বাবে, ইয়াৰ পৰিৱৰ্তে আৰ্হি ব্যৱহাৰ কৰক"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"অতিৰিক্ত সুৰক্ষাৰ বাবে, ইয়াৰ পৰিৱৰ্তে পিন ব্যৱহাৰ কৰক"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"অতিৰিক্ত সুৰক্ষাৰ বাবে, ইয়াৰ পৰিৱৰ্তে পাছৱৰ্ড ব্যৱহাৰ কৰক"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"প্ৰশাসকে ডিভাইচ লক কৰি ৰাখিছে"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"ডিভাইচটো মেনুৱেলভাৱে লক কৰা হৈছিল"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"চিনাক্ত কৰিব পৰা নাই"</string>
diff --git a/packages/SystemUI/res-keyguard/values-az/strings.xml b/packages/SystemUI/res-keyguard/values-az/strings.xml
index 4de32d91b817..ba07b2719b56 100644
--- a/packages/SystemUI/res-keyguard/values-az/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-az/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Əlavə təhlükəsizlik üçün modeldən istifadə edin"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Əlavə təhlükəsizlik üçün PIN istifadə edin"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Əlavə təhlükəsizlik üçün paroldan istifadə edin"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Cihaz admin tərəfindən kilidlənib"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Cihaz əl ilə kilidləndi"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Tanınmır"</string>
diff --git a/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml b/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml
index d23ff41e761a..9d6fdfa14ebe 100644
--- a/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Za dodatnu bezbednost koristite šablon"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Za dodatnu bezbednost koristite PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Za dodatnu bezbednost koristite lozinku"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Administrator je zaključao uređaj"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Uređaj je ručno zaključan"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Nije prepoznat"</string>
diff --git a/packages/SystemUI/res-keyguard/values-be/strings.xml b/packages/SystemUI/res-keyguard/values-be/strings.xml
index e704c3c84583..0a27f5e7cfd3 100644
--- a/packages/SystemUI/res-keyguard/values-be/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-be/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"У мэтах дадатковай бяспекі скарыстайце ўзор разблакіроўкі"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"У мэтах дадатковай бяспекі скарыстайце PIN-код"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"У мэтах дадатковай бяспекі скарыстайце пароль"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Прылада заблакіравана адміністратарам"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Прылада была заблакіравана ўручную"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Не распазнана"</string>
diff --git a/packages/SystemUI/res-keyguard/values-bg/strings.xml b/packages/SystemUI/res-keyguard/values-bg/strings.xml
index 795d4b83c857..ea3cbcff8dbe 100644
--- a/packages/SystemUI/res-keyguard/values-bg/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bg/strings.xml
@@ -111,6 +111,9 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"За допълнителна сигурност използвайте фигура вместо това"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"За допълнителна сигурност използвайте ПИН код вместо това"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"За допълнителна сигурност използвайте парола вместо това"</string>
+ <string name="kg_prompt_added_security_pin" msgid="5487992065995475528">"За допълнителна сигурност се изисква ПИН код"</string>
+ <string name="kg_prompt_added_security_pattern" msgid="1017068086102168544">"За допълнителна сигурност се изисква фигура"</string>
+ <string name="kg_prompt_added_security_password" msgid="6053156069765029006">"За допълнителна сигурност се изисква парола"</string>
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Устройството е заключено от администратора"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Устройството бе заключено ръчно"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Не е разпознато"</string>
diff --git a/packages/SystemUI/res-keyguard/values-bn/strings.xml b/packages/SystemUI/res-keyguard/values-bn/strings.xml
index e333ddd1ea4a..8fa334ddd1a0 100644
--- a/packages/SystemUI/res-keyguard/values-bn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bn/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"অতিরিক্ত সুরক্ষার জন্য, এর বদলে প্যাটার্ন ব্যবহার করুন"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"অতিরিক্ত সুরক্ষার জন্য, এর বদলে পিন ব্যবহার করুন"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"অতিরিক্ত সুরক্ষার জন্য, এর বদলে পাসওয়ার্ড ব্যবহার করুন"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"প্রশাসক ডিভাইসটি লক করেছেন"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"ডিভাইসটিকে ম্যানুয়ালি লক করা হয়েছে"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"শনাক্ত করা যায়নি"</string>
diff --git a/packages/SystemUI/res-keyguard/values-bs/strings.xml b/packages/SystemUI/res-keyguard/values-bs/strings.xml
index 75fe286dfe2f..7290a6011d06 100644
--- a/packages/SystemUI/res-keyguard/values-bs/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bs/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Radi dodatne zaštite, umjesto toga koristite uzorak"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Radi dodatne zaštite, umjesto toga koristite PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Radi dodatne zašitite, umjesto toga koristite lozinku"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Uređaj je zaključao administrator"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Uređaj je ručno zaključan"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Nije prepoznato"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ca/strings.xml b/packages/SystemUI/res-keyguard/values-ca/strings.xml
index 4047d7ca662a..1b91b099e3fa 100644
--- a/packages/SystemUI/res-keyguard/values-ca/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ca/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Per a més seguretat, utilitza el patró"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Per a més seguretat, utilitza el PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Per a més seguretat, utilitza la contrasenya"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"L\'administrador ha bloquejat el dispositiu"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"El dispositiu s\'ha bloquejat manualment"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"No s\'ha reconegut"</string>
diff --git a/packages/SystemUI/res-keyguard/values-cs/strings.xml b/packages/SystemUI/res-keyguard/values-cs/strings.xml
index ea9a68367652..c62e9ddeb8e4 100644
--- a/packages/SystemUI/res-keyguard/values-cs/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-cs/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Z bezpečnostních důvodů raději použijte gesto"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Z bezpečnostních důvodů raději použijte PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Z bezpečnostních důvodů raději použijte heslo"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Zařízení je uzamknuto administrátorem"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Zařízení bylo ručně uzamčeno"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Nerozpoznáno"</string>
diff --git a/packages/SystemUI/res-keyguard/values-da/strings.xml b/packages/SystemUI/res-keyguard/values-da/strings.xml
index 8794bc051f27..f776d2e10076 100644
--- a/packages/SystemUI/res-keyguard/values-da/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-da/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Øg sikkerheden ved at bruge dit oplåsningsmønter i stedet"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Øg sikkerheden ved at bruge din pinkode i stedet"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Øg sikkerheden ved at bruge din adgangskode i stedet"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Enheden er blevet låst af administratoren"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Enheden blev låst manuelt"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Ikke genkendt"</string>
diff --git a/packages/SystemUI/res-keyguard/values-de/strings.xml b/packages/SystemUI/res-keyguard/values-de/strings.xml
index 9e80b741c87d..633eab558b44 100644
--- a/packages/SystemUI/res-keyguard/values-de/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-de/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Verwende für mehr Sicherheit stattdessen dein Muster"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Verwende für mehr Sicherheit stattdessen deine PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Verwende für mehr Sicherheit stattdessen dein Passwort"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Gerät vom Administrator gesperrt"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Gerät manuell gesperrt"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Nicht erkannt"</string>
diff --git a/packages/SystemUI/res-keyguard/values-el/strings.xml b/packages/SystemUI/res-keyguard/values-el/strings.xml
index b7d32501a8c0..4f69be150bba 100644
--- a/packages/SystemUI/res-keyguard/values-el/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-el/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Για πρόσθετη ασφάλεια, χρησιμοποιήστε εναλλακτικά μοτίβο"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Για πρόσθετη ασφάλεια, χρησιμοποιήστε εναλλακτικά PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Για πρόσθετη ασφάλεια, χρησιμοποιήστε εναλλακτικά κωδικό πρόσβασης"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Η συσκευή κλειδώθηκε από τον διαχειριστή"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Η συσκευή κλειδώθηκε με μη αυτόματο τρόπο"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Δεν αναγνωρίστηκε"</string>
diff --git a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml
index d0461c1a56bb..f9ed76487897 100644
--- a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"For additional security, use pattern instead"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"For additional security, use PIN instead"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"For additional security, use password instead"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Device locked by admin"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Device was locked manually"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Not recognised"</string>
diff --git a/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml
index cb13fd578b7b..3cc7cff4df47 100644
--- a/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml
@@ -111,6 +111,9 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"For additional security, use pattern instead"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"For additional security, use PIN instead"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"For additional security, use password instead"</string>
+ <string name="kg_prompt_added_security_pin" msgid="5487992065995475528">"PIN required for additional security"</string>
+ <string name="kg_prompt_added_security_pattern" msgid="1017068086102168544">"Pattern required for additional security"</string>
+ <string name="kg_prompt_added_security_password" msgid="6053156069765029006">"Password required for additional security"</string>
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Device locked by admin"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Device was locked manually"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Not recognized"</string>
diff --git a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml
index d0461c1a56bb..f9ed76487897 100644
--- a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"For additional security, use pattern instead"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"For additional security, use PIN instead"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"For additional security, use password instead"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Device locked by admin"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Device was locked manually"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Not recognised"</string>
diff --git a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml
index d0461c1a56bb..f9ed76487897 100644
--- a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"For additional security, use pattern instead"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"For additional security, use PIN instead"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"For additional security, use password instead"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Device locked by admin"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Device was locked manually"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Not recognised"</string>
diff --git a/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml b/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml
index 188acd63e22a..cfa7c7e1ee06 100644
--- a/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml
@@ -111,6 +111,9 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‏‎‎‎‏‎‎‏‎‎‎‏‏‎‏‏‏‎‏‎‏‏‏‏‏‎‏‎‏‎‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‎‎‏‎‏‏‏‎‎‏‏‎For additional security, use pattern instead‎‏‎‎‏‎"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‎‏‏‎‎‏‎‏‏‏‏‎‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‏‏‏‎‎‏‏‏‎‏‏‎‏‎‎‏‎‏‎‎‏‏‎‎‎‎‎For additional security, use PIN instead‎‏‎‎‏‎"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‎‏‏‎‏‎‎‎‎‏‏‏‏‏‏‎‎‏‏‎‎‏‎‎‏‎‎‏‏‎‎‏‏‎‎‎‏‏‎‏‎‎‎‎‏‏‏‏‏‎‏‎‎For additional security, use password instead‎‏‎‎‏‎"</string>
+ <string name="kg_prompt_added_security_pin" msgid="5487992065995475528">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‏‎‏‎‎‏‎‏‎‎‎‎‏‏‏‎‏‏‎‏‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‏‎‏‎‎‎‏‎‏‎‎‏‎‎‏‎‎‎‎PIN required for additional security‎‏‎‎‏‎"</string>
+ <string name="kg_prompt_added_security_pattern" msgid="1017068086102168544">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‎‎‎‏‏‏‎‏‎‏‎‏‏‎‏‎‎‎‎‎‏‎‎‏‎‎‏‎‎‎‎‎‏‎‎‎‎‎‎‏‏‎‎‏‎‎‏‏‏‏‏‎‎‎‎‎‎Pattern required for additional security‎‏‎‎‏‎"</string>
+ <string name="kg_prompt_added_security_password" msgid="6053156069765029006">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‎‏‎‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‎‎‎‏‏‏‎‎‏‎‎‎‏‏‏‎‎Password required for additional security‎‏‎‎‏‎"</string>
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‏‏‎‏‏‎‎‎‎‎‎‎‏‏‏‎‎‎‏‎‏‎‏‎‏‏‏‎‏‏‎‏‏‏‏‎‎‏‎‎‎‏‎‎‏‏‎‎‎‎‏‎‏‎Device locked by admin‎‏‎‎‏‎"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‏‏‏‏‎‎‎‏‎‏‎‎‏‏‎‏‏‎‎‎‎‎‏‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‏‎‎‎‎‏‏‏‏‎‎‏‎‎‎‎‎Device was locked manually‎‏‎‎‏‎"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‎‎‎‎‏‏‏‏‎‎‏‎‎‏‏‎‏‏‏‏‏‎‏‎‏‎‏‎‏‎‏‎‎‏‏‏‏‎‎‎‎‏‏‎‏‎‏‏‎‎‎‎Not recognized‎‏‎‎‏‎"</string>
diff --git a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
index 43aea8da6670..5da50fd68917 100644
--- a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Para seguridad adicional, usa un patrón"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Para seguridad adicional, usa un PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Para seguridad adicional, usa una contraseña"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Dispositivo bloqueado por el administrador"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"El dispositivo se bloqueó de forma manual"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"No se reconoció"</string>
diff --git a/packages/SystemUI/res-keyguard/values-es/strings.xml b/packages/SystemUI/res-keyguard/values-es/strings.xml
index 9022a3d44474..9a67b07c01dd 100644
--- a/packages/SystemUI/res-keyguard/values-es/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-es/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Para mayor seguridad, usa el patrón"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Para mayor seguridad, usa el PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Para mayor seguridad, usa la contraseña"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Dispositivo bloqueado por el administrador"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"El dispositivo se ha bloqueado manualmente"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"No se reconoce"</string>
diff --git a/packages/SystemUI/res-keyguard/values-et/strings.xml b/packages/SystemUI/res-keyguard/values-et/strings.xml
index c0d5e2f23f35..446b92764973 100644
--- a/packages/SystemUI/res-keyguard/values-et/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-et/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Kasutage tugevama turvalisuse huvides hoopis mustrit"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Kasutage tugevama turvalisuse huvides hoopis PIN-koodi"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Kasutage tugevama turvalisuse huvides hoopis parooli"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Administraator lukustas seadme"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Seade lukustati käsitsi"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Ei tuvastatud"</string>
diff --git a/packages/SystemUI/res-keyguard/values-eu/strings.xml b/packages/SystemUI/res-keyguard/values-eu/strings.xml
index c9ac7e921e7b..ad20008114ad 100644
--- a/packages/SystemUI/res-keyguard/values-eu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-eu/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Babestuago egoteko, erabili eredua"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Babestuago egoteko, erabili PINa"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Babestuago egoteko, erabili pasahitza"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Administratzaileak blokeatu egin du gailua"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Eskuz blokeatu da gailua"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Ez da ezagutu"</string>
diff --git a/packages/SystemUI/res-keyguard/values-fa/strings.xml b/packages/SystemUI/res-keyguard/values-fa/strings.xml
index b1b1f8a5277c..087e45fd6da0 100644
--- a/packages/SystemUI/res-keyguard/values-fa/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fa/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"برای امنیت بیشتر، به‌جای آن از الگو استفاده کنید"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"برای امنیت بیشتر، به‌جای آن از پین استفاده کنید"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"برای امنیت بیشتر، به‌جای آن از گذرواژه استفاده کنید"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"دستگاه توسط سرپرست سیستم قفل شده است"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"دستگاه به‌صورت دستی قفل شده است"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"شناسایی نشد"</string>
diff --git a/packages/SystemUI/res-keyguard/values-fi/strings.xml b/packages/SystemUI/res-keyguard/values-fi/strings.xml
index f5a67594ced0..b5e8fb564293 100644
--- a/packages/SystemUI/res-keyguard/values-fi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fi/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Lisäsuojaa saat, kun käytät sen sijaan kuviota"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Lisäsuojaa saat, kun käytät sen sijaan PIN-koodia"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Lisäsuojaa saat, kun käytät sen sijaan salasanaa"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Järjestelmänvalvoja lukitsi laitteen."</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Laite lukittiin manuaalisesti"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Ei tunnistettu"</string>
diff --git a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
index bca8dd7909a7..ea6107028f0d 100644
--- a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Pour plus de sécurité, utilisez plutôt un schéma"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Pour plus de sécurité, utilisez plutôt un NIP"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Pour plus de sécurité, utilisez plutôt un mot de passe"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"L\'appareil a été verrouillé par l\'administrateur"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"L\'appareil a été verrouillé manuellement"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Doigt non reconnu"</string>
diff --git a/packages/SystemUI/res-keyguard/values-fr/strings.xml b/packages/SystemUI/res-keyguard/values-fr/strings.xml
index 97d2081555f9..40e10effb073 100644
--- a/packages/SystemUI/res-keyguard/values-fr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fr/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Pour plus de sécurité, utilisez plutôt un schéma"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Pour plus de sécurité, utilisez plutôt un code"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Pour plus de sécurité, utilisez plutôt un mot de passe"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Appareil verrouillé par l\'administrateur"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Appareil verrouillé manuellement"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Non reconnu"</string>
diff --git a/packages/SystemUI/res-keyguard/values-gl/strings.xml b/packages/SystemUI/res-keyguard/values-gl/strings.xml
index 12b6c2cae28e..2eb03233e4e4 100644
--- a/packages/SystemUI/res-keyguard/values-gl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-gl/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Utiliza un padrón para obter maior seguranza"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Utiliza un PIN para obter maior seguranza"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Utiliza un contrasinal para obter maior seguranza"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"O administrador bloqueou o dispositivo"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"O dispositivo bloqueouse manualmente"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Non se recoñeceu"</string>
diff --git a/packages/SystemUI/res-keyguard/values-gu/strings.xml b/packages/SystemUI/res-keyguard/values-gu/strings.xml
index 9e2fd536b3e0..5f01e289ae7b 100644
--- a/packages/SystemUI/res-keyguard/values-gu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-gu/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"વધારાની સુરક્ષા માટે, તેના બદલે પૅટર્નનો ઉપયોગ કરો"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"વધારાની સુરક્ષા માટે, તેના બદલે પિનનો ઉપયોગ કરો"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"વધારાની સુરક્ષા માટે, તેના બદલે પાસવર્ડનો ઉપયોગ કરો"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"વ્યવસ્થાપકે ઉપકરણ લૉક કરેલું છે"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"ઉપકરણ મેન્યુઅલી લૉક કર્યું હતું"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"ઓળખાયેલ નથી"</string>
diff --git a/packages/SystemUI/res-keyguard/values-hi/strings.xml b/packages/SystemUI/res-keyguard/values-hi/strings.xml
index 12cb7e396ded..11e608ca18ee 100644
--- a/packages/SystemUI/res-keyguard/values-hi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hi/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"ज़्यादा सुरक्षा के लिए, इसके बजाय पैटर्न का इस्तेमाल करें"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"ज़्यादा सुरक्षा के लिए, इसके बजाय पिन का इस्तेमाल करें"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"ज़्यादा सुरक्षा के लिए, इसके बजाय पासवर्ड का इस्तेमाल करें"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"व्यवस्थापक ने डिवाइस को लॉक किया है"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"डिवाइस को मैन्युअल रूप से लॉक किया गया था"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"पहचान नहीं हो पाई"</string>
diff --git a/packages/SystemUI/res-keyguard/values-hr/strings.xml b/packages/SystemUI/res-keyguard/values-hr/strings.xml
index fad222db3172..274fdeea935b 100644
--- a/packages/SystemUI/res-keyguard/values-hr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hr/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Za dodatnu sigurnost upotrijebite uzorak"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Za dodatnu sigurnost upotrijebite PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Za dodatnu sigurnost upotrijebite zaporku"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Administrator je zaključao uređaj"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Uređaj je ručno zaključan"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Nije prepoznato"</string>
diff --git a/packages/SystemUI/res-keyguard/values-hu/strings.xml b/packages/SystemUI/res-keyguard/values-hu/strings.xml
index a22fbceb8bcf..0a5ac59486a3 100644
--- a/packages/SystemUI/res-keyguard/values-hu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hu/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"A nagyobb biztonság érdekében használjon inkább mintát"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"A nagyobb biztonság érdekében használjon inkább PIN-kódot"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"A nagyobb biztonság érdekében használjon inkább jelszót"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"A rendszergazda zárolta az eszközt"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Az eszközt manuálisan lezárták"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Nem ismerhető fel"</string>
diff --git a/packages/SystemUI/res-keyguard/values-hy/strings.xml b/packages/SystemUI/res-keyguard/values-hy/strings.xml
index 119928a43766..28344c90914f 100644
--- a/packages/SystemUI/res-keyguard/values-hy/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hy/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Լրացուցիչ անվտանգության համար օգտագործեք նախշ"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Լրացուցիչ անվտանգության համար օգտագործեք PIN կոդ"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Լրացուցիչ անվտանգության համար օգտագործեք գաղտնաբառ"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Սարքը կողպված է ադմինիստրատորի կողմից"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Սարքը կողպվել է ձեռքով"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Չհաջողվեց ճանաչել"</string>
diff --git a/packages/SystemUI/res-keyguard/values-in/strings.xml b/packages/SystemUI/res-keyguard/values-in/strings.xml
index f4db0353a840..2a8d8a95c165 100644
--- a/packages/SystemUI/res-keyguard/values-in/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-in/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Untuk keamanan tambahan, gunakan pola"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Untuk keamanan tambahan, gunakan PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Untuk keamanan tambahan, gunakan sandi"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Perangkat dikunci oleh admin"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Perangkat dikunci secara manual"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Tidak dikenali"</string>
diff --git a/packages/SystemUI/res-keyguard/values-is/strings.xml b/packages/SystemUI/res-keyguard/values-is/strings.xml
index c364f60329eb..0c14e6c5c595 100644
--- a/packages/SystemUI/res-keyguard/values-is/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-is/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Fyrir aukið öryggi skaltu nota mynstur í staðinn"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Fyrir aukið öryggi skaltu nota PIN-númer í staðinn"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Fyrir aukið öryggi skaltu nota aðgangsorð í staðinn"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Kerfisstjóri læsti tæki"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Tækinu var læst handvirkt"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Þekktist ekki"</string>
diff --git a/packages/SystemUI/res-keyguard/values-it/strings.xml b/packages/SystemUI/res-keyguard/values-it/strings.xml
index 659928fc1800..2c2baccec8c9 100644
--- a/packages/SystemUI/res-keyguard/values-it/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-it/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Per maggior sicurezza, usa invece la sequenza"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Per maggior sicurezza, usa invece il PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Per maggior sicurezza, usa invece la password"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Dispositivo bloccato dall\'amministratore"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Il dispositivo è stato bloccato manualmente"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Non riconosciuto"</string>
diff --git a/packages/SystemUI/res-keyguard/values-iw/strings.xml b/packages/SystemUI/res-keyguard/values-iw/strings.xml
index 0021d0a87e30..6e54ba9f272c 100644
--- a/packages/SystemUI/res-keyguard/values-iw/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-iw/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"כדי להגביר את רמת האבטחה, כדאי להשתמש בקו ביטול נעילה במקום זאת"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"כדי להגביר את רמת האבטחה, כדאי להשתמש בקוד אימות במקום זאת"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"כדי להגביר את רמת האבטחה, כדאי להשתמש בסיסמה במקום זאת"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"המנהל של המכשיר נהל אותו"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"המכשיר ננעל באופן ידני"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"לא זוהתה"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ja/strings.xml b/packages/SystemUI/res-keyguard/values-ja/strings.xml
index c94d6b18cc8a..71969c00cc7c 100644
--- a/packages/SystemUI/res-keyguard/values-ja/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ja/strings.xml
@@ -111,6 +111,9 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"画面ロックを解除するにはパターンを入力してください"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"画面ロックを解除するには PIN を入力してください"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"画面ロックを解除するにはパスワードを入力してください"</string>
+ <string name="kg_prompt_added_security_pin" msgid="5487992065995475528">"追加の確認のため PIN が必要です"</string>
+ <string name="kg_prompt_added_security_pattern" msgid="1017068086102168544">"追加の確認のためパターンが必要です"</string>
+ <string name="kg_prompt_added_security_password" msgid="6053156069765029006">"追加の確認のためパスワードが必要です"</string>
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"デバイスは管理者によりロックされています"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"デバイスは手動でロックされました"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"認識されませんでした"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ka/strings.xml b/packages/SystemUI/res-keyguard/values-ka/strings.xml
index c36b4718c292..db99d965a507 100644
--- a/packages/SystemUI/res-keyguard/values-ka/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ka/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"დამატებითი უსაფრთხოებისთვის გამოიყენეთ ნიმუში"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"დამატებითი უსაფრთხოებისთვის გამოიყენეთ PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"დამატებითი უსაფრთხოებისთვის გამოიყენეთ პაროლი"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"მოწყობილობა ჩაკეტილია ადმინისტრატორის მიერ"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"მოწყობილობა ხელით ჩაიკეტა"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"არ არის ამოცნობილი"</string>
diff --git a/packages/SystemUI/res-keyguard/values-kk/strings.xml b/packages/SystemUI/res-keyguard/values-kk/strings.xml
index fef02beea07a..7bf93aee2f9e 100644
--- a/packages/SystemUI/res-keyguard/values-kk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-kk/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Қосымша қауіпсіздік үшін өрнекті пайдаланыңыз."</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Қосымша қауіпсіздік үшін PIN кодын пайдаланыңыз."</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Қосымша қауіпсіздік үшін құпия сөзді пайдаланыңыз."</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Құрылғыны әкімші құлыптаған"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Құрылғы қолмен құлыпталды"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Танылмады"</string>
diff --git a/packages/SystemUI/res-keyguard/values-km/strings.xml b/packages/SystemUI/res-keyguard/values-km/strings.xml
index f82defdc453e..b326f4c58aa9 100644
--- a/packages/SystemUI/res-keyguard/values-km/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-km/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"ដើម្បីសុវត្ថិភាពបន្ថែម សូមប្រើលំនាំជំនួសវិញ"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"ដើម្បីសុវត្ថិភាពបន្ថែម សូមប្រើកូដ PIN ជំនួសវិញ"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"ដើម្បីសុវត្ថិភាពបន្ថែម សូមប្រើពាក្យសម្ងាត់ជំនួសវិញ"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"ឧបករណ៍​ត្រូវបាន​ចាក់សោ​ដោយអ្នក​គ្រប់គ្រង"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"ឧបករណ៍ត្រូវបានចាក់សោដោយអ្នកប្រើផ្ទាល់"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"មិនអាចសម្គាល់បានទេ"</string>
diff --git a/packages/SystemUI/res-keyguard/values-kn/strings.xml b/packages/SystemUI/res-keyguard/values-kn/strings.xml
index 4ab035e5a420..10bd9bf50b43 100644
--- a/packages/SystemUI/res-keyguard/values-kn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-kn/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"ಹೆಚ್ಚುವರಿ ಭದ್ರತೆಗಾಗಿ, ಬದಲಿಗೆ ಪ್ಯಾಟರ್ನ್ ಅನ್ನು ಬಳಸಿ"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"ಹೆಚ್ಚುವರಿ ಭದ್ರತೆಗಾಗಿ, ಬದಲಿಗೆ ಪಿನ್ ಬಳಸಿ"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"ಹೆಚ್ಚುವರಿ ಭದ್ರತೆಗಾಗಿ, ಬದಲಿಗೆ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಬಳಸಿ"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"ನಿರ್ವಾಹಕರು ಸಾಧನವನ್ನು ಲಾಕ್ ಮಾಡಿದ್ದಾರೆ"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"ಸಾಧನವನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಲಾಕ್‌ ಮಾಡಲಾಗಿದೆ"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"ಗುರುತಿಸಲಾಗಿಲ್ಲ"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ko/strings.xml b/packages/SystemUI/res-keyguard/values-ko/strings.xml
index d4563660b01a..630453934323 100644
--- a/packages/SystemUI/res-keyguard/values-ko/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ko/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"보안 강화를 위해 대신 패턴 사용"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"보안 강화를 위해 대신 PIN 사용"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"보안 강화를 위해 대신 비밀번호 사용"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"관리자가 기기를 잠갔습니다."</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"기기가 수동으로 잠금 설정되었습니다."</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"인식할 수 없음"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ky/strings.xml b/packages/SystemUI/res-keyguard/values-ky/strings.xml
index e8640ae5caa3..8575d6049391 100644
--- a/packages/SystemUI/res-keyguard/values-ky/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ky/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Кошумча коопсуздук үчүн анын ордуна графикалык ачкычты колдонуңуз"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Кошумча коопсуздук үчүн анын ордуна PIN кодду колдонуңуз"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Кошумча коопсуздук үчүн анын ордуна сырсөздү колдонуңуз"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Түзмөктү администратор кулпулап койгон"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Түзмөк кол менен кулпуланды"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Таанылган жок"</string>
diff --git a/packages/SystemUI/res-keyguard/values-lo/strings.xml b/packages/SystemUI/res-keyguard/values-lo/strings.xml
index 6f6c1d11915b..984cc56606a5 100644
--- a/packages/SystemUI/res-keyguard/values-lo/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lo/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"ເພື່ອຄວາມປອດໄພເພີ່ມເຕີມ, ໃຫ້ໃຊ້ຮູບແບບແທນ"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"ເພື່ອຄວາມປອດໄພເພີ່ມເຕີມ, ໃຫ້ໃຊ້ PIN ແທນ"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"ເພື່ອຄວາມປອດໄພເພີ່ມເຕີມ, ໃຫ້ໃຊ້ລະຫັດຜ່ານແທນ"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"ອຸປະກອນຖືກລັອກໂດຍຜູ້ເບິ່ງແຍງລະບົບ"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"ອຸປະກອນຖືກສັ່ງໃຫ້ລັອກ"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"ບໍ່ຮູ້ຈັກ"</string>
diff --git a/packages/SystemUI/res-keyguard/values-lt/strings.xml b/packages/SystemUI/res-keyguard/values-lt/strings.xml
index 9d134853400f..96dc26687f95 100644
--- a/packages/SystemUI/res-keyguard/values-lt/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lt/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Papildomai saugai užtikrinti geriau naudokite atrakinimo piešinį"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Papildomai saugai užtikrinti geriau naudokite PIN kodą"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Papildomai saugai užtikrinti geriau naudokite slaptažodį"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Įrenginį užrakino administratorius"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Įrenginys užrakintas neautomatiškai"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Neatpažinta"</string>
diff --git a/packages/SystemUI/res-keyguard/values-lv/strings.xml b/packages/SystemUI/res-keyguard/values-lv/strings.xml
index 10d657ba999a..9ca5c6e25fce 100644
--- a/packages/SystemUI/res-keyguard/values-lv/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lv/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Papildu drošībai izmantojiet kombināciju"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Papildu drošībai izmantojiet PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Papildu drošībai izmantojiet paroli"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Administrators bloķēja ierīci."</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Ierīce tika bloķēta manuāli."</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Nav atpazīts"</string>
diff --git a/packages/SystemUI/res-keyguard/values-mk/strings.xml b/packages/SystemUI/res-keyguard/values-mk/strings.xml
index 9aafb86c8e27..421637fd8bbe 100644
--- a/packages/SystemUI/res-keyguard/values-mk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mk/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"За дополнителна безбедност, користете шема"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"За дополнителна безбедност, користете PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"За дополнителна безбедност, користете лозинка"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Уредот е заклучен од администраторот"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Уредот е заклучен рачно"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Непознат"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ml/strings.xml b/packages/SystemUI/res-keyguard/values-ml/strings.xml
index f690ce5b35ae..9bb1c60e7b34 100644
--- a/packages/SystemUI/res-keyguard/values-ml/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ml/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"അധിക സുരക്ഷയ്ക്കായി, പകരം പാറ്റേൺ ഉപയോഗിക്കുക"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"അധിക സുരക്ഷയ്ക്കായി, പകരം പിൻ ഉപയോഗിക്കുക"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"അധിക സുരക്ഷയ്ക്കായി, പകരം പാസ്‍വേഡ് ഉപയോഗിക്കുക"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"ഉപകരണം അഡ്‌മിൻ ലോക്കുചെയ്തു"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"ഉപകരണം നേരിട്ട് ലോക്കുചെയ്തു"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"തിരിച്ചറിയുന്നില്ല"</string>
diff --git a/packages/SystemUI/res-keyguard/values-mn/strings.xml b/packages/SystemUI/res-keyguard/values-mn/strings.xml
index 70cfa3741451..443e028baa7a 100644
--- a/packages/SystemUI/res-keyguard/values-mn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mn/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Нэмэлт аюулгүй байдлын үүднээс оронд нь хээ ашиглана уу"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Нэмэлт аюулгүй байдлын үүднээс оронд нь ПИН ашиглана уу"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Нэмэлт аюулгүй байдлын үүднээс оронд нь нууц үг ашиглана уу"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Админ төхөөрөмжийг түгжсэн"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Төхөөрөмжийг гараар түгжсэн"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Таньж чадсангүй"</string>
diff --git a/packages/SystemUI/res-keyguard/values-mr/strings.xml b/packages/SystemUI/res-keyguard/values-mr/strings.xml
index 9da4fb084c12..8b23abe82baf 100644
--- a/packages/SystemUI/res-keyguard/values-mr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mr/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"अतिरिक्त सुरक्षेसाठी, त्याऐवजी पॅटर्न वापरा"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"अतिरिक्त सुरक्षेसाठी, त्याऐवजी पिन वापरा"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"अतिरिक्त सुरक्षेसाठी, त्याऐवजी पासवर्ड वापरा"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"प्रशासकाद्वारे लॉक केलेले डिव्हाइस"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"डिव्हाइस मॅन्युअली लॉक केले होते"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"ओळखले नाही"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ms/strings.xml b/packages/SystemUI/res-keyguard/values-ms/strings.xml
index 76de213cc206..3291bd49940a 100644
--- a/packages/SystemUI/res-keyguard/values-ms/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ms/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Untuk keselamatan tambahan, gunakan corak"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Untuk keselamatan tambahan, gunakan PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Untuk keselamatan tambahan, gunakan kata laluan"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Peranti dikunci oleh pentadbir"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Peranti telah dikunci secara manual"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Tidak dikenali"</string>
diff --git a/packages/SystemUI/res-keyguard/values-my/strings.xml b/packages/SystemUI/res-keyguard/values-my/strings.xml
index bedabb811653..9d83323c0ebc 100644
--- a/packages/SystemUI/res-keyguard/values-my/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-my/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"ထပ်ဆောင်းလုံခြုံရေးအတွက် ၎င်းအစား ပုံစံသုံးပါ"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"ထပ်ဆောင်းလုံခြုံရေးအတွက် ၎င်းအစား ပင်နံပါတ်သုံးပါ"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"ထပ်ဆောင်းလုံခြုံရေးအတွက် ၎င်းအစား စကားဝှက်သုံးပါ"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"စက်ပစ္စည်းကို စီမံခန့်ခွဲသူက လော့ခ်ချထားပါသည်"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"စက်ပစ္စည်းကို ကိုယ်တိုင်ကိုယ်ကျ လော့ခ်ချထားခဲ့သည်"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"မသိ"</string>
diff --git a/packages/SystemUI/res-keyguard/values-nb/strings.xml b/packages/SystemUI/res-keyguard/values-nb/strings.xml
index 04b567b29017..1aefaa947e86 100644
--- a/packages/SystemUI/res-keyguard/values-nb/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-nb/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Bruk mønster i stedet, for å øke sikkerheten"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Bruk PIN-kode i stedet, for å øke sikkerheten"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Bruk passord i stedet, for å øke sikkerheten"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Enheten er låst av administratoren"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Enheten ble låst manuelt"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Ikke gjenkjent"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ne/strings.xml b/packages/SystemUI/res-keyguard/values-ne/strings.xml
index 692e693968d5..16d23ef5dc56 100644
--- a/packages/SystemUI/res-keyguard/values-ne/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ne/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"अतिरिक्त सुरक्षाका लागि यो प्रमाणीकरण विधिको साटो प्याटर्न प्रयोग गर्नुहोस्"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"अतिरिक्त सुरक्षाका लागि यो प्रमाणीकरण विधिको साटो पिन प्रयोग गर्नुहोस्"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"अतिरिक्त सुरक्षाका लागि यो प्रमाणीकरण विधिको साटो पासवर्ड प्रयोग गर्नुहोस्"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"प्रशासकले यन्त्रलाई लक गर्नुभएको छ"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"यन्त्रलाई म्यानुअल तरिकाले लक गरिएको थियो"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"पहिचान भएन"</string>
diff --git a/packages/SystemUI/res-keyguard/values-nl/strings.xml b/packages/SystemUI/res-keyguard/values-nl/strings.xml
index 9833505e49a7..77b5b57922e5 100644
--- a/packages/SystemUI/res-keyguard/values-nl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-nl/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Gebruik in plaats daarvan het patroon voor extra beveiliging"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Gebruik de pincode voor extra beveiliging"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Gebruik in plaats daarvan het wachtwoord voor extra beveiliging"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Apparaat vergrendeld door beheerder"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Apparaat is handmatig vergrendeld"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Niet herkend"</string>
diff --git a/packages/SystemUI/res-keyguard/values-or/strings.xml b/packages/SystemUI/res-keyguard/values-or/strings.xml
index 5ed2f11ddf99..73ed727add82 100644
--- a/packages/SystemUI/res-keyguard/values-or/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-or/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"ଅତିରିକ୍ତ ସୁରକ୍ଷା ପାଇଁ, ଏହା ପରିବର୍ତ୍ତେ ପାଟର୍ନ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"ଅତିରିକ୍ତ ସୁରକ୍ଷା ପାଇଁ, ଏହା ପରିବର୍ତ୍ତେ PIN ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"ଅତିରିକ୍ତ ସୁରକ୍ଷା ପାଇଁ, ଏହା ପରିବର୍ତ୍ତେ ପାସୱାର୍ଡ ବ୍ୟବହାର କରନ୍ତୁ"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"ଡିଭାଇସ୍‍ ଆଡମିନଙ୍କ ଦ୍ୱାରା ଲକ୍‍ କରାଯାଇଛି"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"ଡିଭାଇସ୍‍ ମାନୁଆଲ ଭାବେ ଲକ୍‍ କରାଗଲା"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"ଚିହ୍ନଟ ହେଲାନାହିଁ"</string>
diff --git a/packages/SystemUI/res-keyguard/values-pa/strings.xml b/packages/SystemUI/res-keyguard/values-pa/strings.xml
index e591e5d2f724..2e4d190cd915 100644
--- a/packages/SystemUI/res-keyguard/values-pa/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pa/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"ਵਧੀਕ ਸੁਰੱਖਿਆ ਲਈ, ਇਸਦੀ ਬਜਾਏ ਪੈਟਰਨ ਵਰਤੋ"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"ਵਧੀਕ ਸੁਰੱਖਿਆ ਲਈ, ਇਸਦੀ ਬਜਾਏ ਪਿੰਨ ਵਰਤੋ"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"ਵਧੀਕ ਸੁਰੱਖਿਆ ਲਈ, ਇਸਦੀ ਬਜਾਏ ਪਾਸਵਰਡ ਵਰਤੋ"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਡੀਵਾਈਸ ਨੂੰ ਲਾਕ ਕੀਤਾ ਗਿਆ"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"ਡੀਵਾਈਸ ਨੂੰ ਹੱਥੀਂ ਲਾਕ ਕੀਤਾ ਗਿਆ"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"ਪਛਾਣ ਨਹੀਂ ਹੋਈ"</string>
diff --git a/packages/SystemUI/res-keyguard/values-pl/strings.xml b/packages/SystemUI/res-keyguard/values-pl/strings.xml
index 396fa7953f29..4a8907031cbd 100644
--- a/packages/SystemUI/res-keyguard/values-pl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pl/strings.xml
@@ -111,6 +111,9 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Ze względów bezpieczeństwa użyj wzoru"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Ze względów bezpieczeństwa użyj kodu PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Ze względów bezpieczeństwa użyj hasła"</string>
+ <string name="kg_prompt_added_security_pin" msgid="5487992065995475528">"Dla większego bezpieczeństwa musisz podać kod PIN"</string>
+ <string name="kg_prompt_added_security_pattern" msgid="1017068086102168544">"Dla większego bezpieczeństwa musisz narysować wzór"</string>
+ <string name="kg_prompt_added_security_password" msgid="6053156069765029006">"Dla większego bezpieczeństwa musisz podać hasło"</string>
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Urządzenie zablokowane przez administratora"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Urządzenie zostało zablokowane ręcznie"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Nie rozpoznano"</string>
diff --git a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
index 3de54f92cfc6..92cee606d9c2 100644
--- a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Para ter mais segurança, use o padrão"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Para ter mais segurança, use o PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Para ter mais segurança, use a senha"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Dispositivo bloqueado pelo administrador"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"O dispositivo foi bloqueado manualmente"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Não reconhecido"</string>
diff --git a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
index 3d8f7e6ccab1..cc5ccd801dab 100644
--- a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Para uma segurança adicional, use antes o padrão"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Para uma segurança adicional, use antes o PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Para uma segurança adicional, use antes a palavra-passe"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Dispositivo bloqueado pelo gestor"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"O dispositivo foi bloqueado manualmente"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Não reconhecido."</string>
diff --git a/packages/SystemUI/res-keyguard/values-pt/strings.xml b/packages/SystemUI/res-keyguard/values-pt/strings.xml
index 3de54f92cfc6..92cee606d9c2 100644
--- a/packages/SystemUI/res-keyguard/values-pt/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Para ter mais segurança, use o padrão"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Para ter mais segurança, use o PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Para ter mais segurança, use a senha"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Dispositivo bloqueado pelo administrador"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"O dispositivo foi bloqueado manualmente"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Não reconhecido"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ro/strings.xml b/packages/SystemUI/res-keyguard/values-ro/strings.xml
index 053f862f0ba2..7d07480c9812 100644
--- a/packages/SystemUI/res-keyguard/values-ro/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ro/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Pentru mai multă securitate, folosește modelul"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Pentru mai multă securitate, folosește codul PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Pentru mai multă securitate, folosește parola"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Dispozitiv blocat de administrator"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Dispozitivul a fost blocat manual"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Nu este recunoscut"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ru/strings.xml b/packages/SystemUI/res-keyguard/values-ru/strings.xml
index 6be148934f9c..d91cf97ebcac 100644
--- a/packages/SystemUI/res-keyguard/values-ru/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ru/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"В целях дополнительной безопасности используйте графический ключ"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"В целях дополнительной безопасности используйте PIN-код"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"В целях дополнительной безопасности используйте пароль"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Устройство заблокировано администратором"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Устройство было заблокировано вручную"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Не распознано"</string>
diff --git a/packages/SystemUI/res-keyguard/values-si/strings.xml b/packages/SystemUI/res-keyguard/values-si/strings.xml
index 401e147b21a2..a9fc70acc3dc 100644
--- a/packages/SystemUI/res-keyguard/values-si/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-si/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"අතිරේක ආරක්ෂාව සඳහා, ඒ වෙනුවට රටාව භාවිතා කරන්න"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"අතිරේක ආරක්ෂාව සඳහා, ඒ වෙනුවට PIN භාවිතා කරන්න"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"අතිරේක ආරක්ෂාව සඳහා, ඒ වෙනුවට මුරපදය භාවිතා කරන්න"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"ඔබගේ පරිපාලක විසින් උපාංගය අගුළු දමා ඇත"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"උපාංගය හස්තීයව අගුලු දමන ලදී"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"හඳුනා නොගන්නා ලදී"</string>
diff --git a/packages/SystemUI/res-keyguard/values-sk/strings.xml b/packages/SystemUI/res-keyguard/values-sk/strings.xml
index 2b65466f7cb4..e1b83eef22ed 100644
--- a/packages/SystemUI/res-keyguard/values-sk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sk/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"V rámci zvýšenia zabezpečenia použite radšej vzor"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"V rámci zvýšenia zabezpečenia použite radšej PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"V rámci zvýšenia zabezpečenia použite radšej heslo"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Zariadenie zamkol správca"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Zariadenie bolo uzamknuté ručne"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Nerozpoznané"</string>
diff --git a/packages/SystemUI/res-keyguard/values-sl/strings.xml b/packages/SystemUI/res-keyguard/values-sl/strings.xml
index dbb34c953637..383153b42387 100644
--- a/packages/SystemUI/res-keyguard/values-sl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sl/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Za dodatno varnost raje uporabite vzorec."</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Za dodatno varnost raje uporabite kodo PIN."</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Za dodatno varnost raje uporabite geslo."</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Napravo je zaklenil skrbnik"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Naprava je bila ročno zaklenjena"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Ni prepoznano"</string>
diff --git a/packages/SystemUI/res-keyguard/values-sq/strings.xml b/packages/SystemUI/res-keyguard/values-sq/strings.xml
index 00c4999ecef6..9f291f34a1f7 100644
--- a/packages/SystemUI/res-keyguard/values-sq/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sq/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Për më shumë siguri, përdor motivin më mirë"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Për më shumë siguri, përdor kodin PIN më mirë"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Për më shumë siguri, përdor fjalëkalimin më mirë"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Pajisja është e kyçur nga administratori"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Pajisja është kyçur manualisht"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Nuk njihet"</string>
diff --git a/packages/SystemUI/res-keyguard/values-sr/strings.xml b/packages/SystemUI/res-keyguard/values-sr/strings.xml
index feac58330716..404ff9d71b7c 100644
--- a/packages/SystemUI/res-keyguard/values-sr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sr/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"За додатну безбедност користите шаблон"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"За додатну безбедност користите PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"За додатну безбедност користите лозинку"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Администратор је закључао уређај"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Уређај је ручно закључан"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Није препознат"</string>
diff --git a/packages/SystemUI/res-keyguard/values-sv/strings.xml b/packages/SystemUI/res-keyguard/values-sv/strings.xml
index 67fa2f70199b..b891de795f0c 100644
--- a/packages/SystemUI/res-keyguard/values-sv/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sv/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"För ytterligare säkerhet använder du mönstret i stället"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"För ytterligare säkerhet använder du pinkoden i stället"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"För ytterligare säkerhet använder du lösenordet i stället"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Administratören har låst enheten"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Enheten har låsts manuellt"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Identifierades inte"</string>
diff --git a/packages/SystemUI/res-keyguard/values-sw/strings.xml b/packages/SystemUI/res-keyguard/values-sw/strings.xml
index 527e73eeefc0..7dd3180c39b5 100644
--- a/packages/SystemUI/res-keyguard/values-sw/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sw/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Kwa usalama wa ziada, tumia mchoro badala yake"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Kwa usalama wa ziada, tumia PIN badala yake"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Kwa usalama wa ziada, tumia nenosiri badala yake"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Msimamizi amefunga kifaa"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Umefunga kifaa mwenyewe"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Haitambuliwi"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ta/strings.xml b/packages/SystemUI/res-keyguard/values-ta/strings.xml
index 05ac0c0b3bb9..14969d53e849 100644
--- a/packages/SystemUI/res-keyguard/values-ta/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ta/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"கூடுதல் பாதுகாப்பிற்குப் பேட்டர்னைப் பயன்படுத்தவும்"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"கூடுதல் பாதுகாப்பிற்குப் பின்னை (PIN) பயன்படுத்தவும்"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"கூடுதல் பாதுகாப்பிற்குக் கடவுச்சொல்லைப் பயன்படுத்தவும்"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"நிர்வாகி சாதனத்தைப் பூட்டியுள்ளார்"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"பயனர் சாதனத்தைப் பூட்டியுள்ளார்"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"அடையாளங்காணபடவில்லை"</string>
diff --git a/packages/SystemUI/res-keyguard/values-te/strings.xml b/packages/SystemUI/res-keyguard/values-te/strings.xml
index 9d37fc14b80d..a117a5c5d425 100644
--- a/packages/SystemUI/res-keyguard/values-te/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-te/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"అదనపు సెక్యూరిటీ కోసం, బదులుగా ఆకృతిని ఉపయోగించండి"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"అదనపు సెక్యూరిటీ కోసం, బదులుగా PINను ఉపయోగించండి"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"అదనపు సెక్యూరిటీ కోసం, బదులుగా పాస్‌వర్డ్‌ను ఉపయోగించండి"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"పరికరం నిర్వాహకుల ద్వారా లాక్ చేయబడింది"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"పరికరం మాన్యువల్‌గా లాక్ చేయబడింది"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"గుర్తించలేదు"</string>
diff --git a/packages/SystemUI/res-keyguard/values-th/strings.xml b/packages/SystemUI/res-keyguard/values-th/strings.xml
index 57aadea4ab56..d9f8d9928632 100644
--- a/packages/SystemUI/res-keyguard/values-th/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-th/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"ใช้รูปแบบแทนเพื่อเพิ่มความปลอดภัย"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"ใช้ PIN แทนเพื่อเพิ่มความปลอดภัย"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"ใช้รหัสผ่านแทนเพื่อเพิ่มความปลอดภัย"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"ผู้ดูแลระบบล็อกอุปกรณ์"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"มีการล็อกอุปกรณ์ด้วยตัวเอง"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"ไม่รู้จักลายนิ้วมือ"</string>
diff --git a/packages/SystemUI/res-keyguard/values-tl/strings.xml b/packages/SystemUI/res-keyguard/values-tl/strings.xml
index bb7c34467677..bfe5ae09d154 100644
--- a/packages/SystemUI/res-keyguard/values-tl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-tl/strings.xml
@@ -111,6 +111,9 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Para sa karagdagang seguridad, gumamit na lang ng pattern"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Para sa karagdagang seguridad, gumamit na lang ng PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Para sa karagdagang seguridad, gumamit na lang ng password"</string>
+ <string name="kg_prompt_added_security_pin" msgid="5487992065995475528">"Kinakailangan ang PIN para sa karagdagang seguridad"</string>
+ <string name="kg_prompt_added_security_pattern" msgid="1017068086102168544">"Kinakailangan ang pattern para sa karagdagang seguridad"</string>
+ <string name="kg_prompt_added_security_password" msgid="6053156069765029006">"Kinakailangan ang password para sa karagdagang seguridad"</string>
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Na-lock ng admin ang device"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Manual na na-lock ang device"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Hindi nakilala"</string>
diff --git a/packages/SystemUI/res-keyguard/values-tr/strings.xml b/packages/SystemUI/res-keyguard/values-tr/strings.xml
index f4016299fa09..e23d03676440 100644
--- a/packages/SystemUI/res-keyguard/values-tr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-tr/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Ek güvenlik için bunun yerine desen kullanın"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Ek güvenlik için bunun yerine PIN kullanın"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Ek güvenlik için bunun yerine şifre kullanın"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Cihaz, yönetici tarafından kilitlendi"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Cihazın manuel olarak kilitlendi"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Tanınmadı"</string>
diff --git a/packages/SystemUI/res-keyguard/values-uk/strings.xml b/packages/SystemUI/res-keyguard/values-uk/strings.xml
index 4330b32bc005..d519601d3eef 100644
--- a/packages/SystemUI/res-keyguard/values-uk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-uk/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"З міркувань додаткової безпеки скористайтеся ключем"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"З міркувань додаткової безпеки скористайтеся PIN-кодом"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"З міркувань додаткової безпеки скористайтеся паролем"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Адміністратор заблокував пристрій"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Пристрій заблоковано вручну"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Не розпізнано"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ur/strings.xml b/packages/SystemUI/res-keyguard/values-ur/strings.xml
index e466807c6f53..27d422f2f07c 100644
--- a/packages/SystemUI/res-keyguard/values-ur/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ur/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"اضافی سیکیورٹی کے لئے، اس کے بجائے پیٹرن استعمال کریں"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"‏اضافی سیکیورٹی کے لئے، اس کے بجائے PIN استعمال کریں"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"اضافی سیکیورٹی کے لئے، اس کے بجائے پاس ورڈ استعمال کریں"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"آلہ منتظم کی جانب سے مقفل ہے"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"آلہ کو دستی طور پر مقفل کیا گیا تھا"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"تسلیم شدہ نہیں ہے"</string>
diff --git a/packages/SystemUI/res-keyguard/values-uz/strings.xml b/packages/SystemUI/res-keyguard/values-uz/strings.xml
index f3cdf26be5c4..c34619f48387 100644
--- a/packages/SystemUI/res-keyguard/values-uz/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-uz/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Qoʻshimcha xavfsizlik maqsadida oʻrniga grafik kalitdan foydalaning"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Qoʻshimcha xavfsizlik maqsadida oʻrniga PIN koddan foydalaning"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Qoʻshimcha xavfsizlik maqsadida oʻrniga paroldan foydalaning"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Qurilma administrator tomonidan bloklangan"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Qurilma qo‘lda qulflangan"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Aniqlanmadi"</string>
diff --git a/packages/SystemUI/res-keyguard/values-vi/strings.xml b/packages/SystemUI/res-keyguard/values-vi/strings.xml
index 3bad8f1dec4e..52b71a730b0c 100644
--- a/packages/SystemUI/res-keyguard/values-vi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-vi/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Để tăng cường bảo mật, hãy sử dụng hình mở khoá"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Để tăng cường bảo mật, hãy sử dụng mã PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Để tăng cường bảo mật, hãy sử dụng mật khẩu"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Thiết bị đã bị quản trị viên khóa"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Thiết bị đã bị khóa theo cách thủ công"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Không nhận dạng được"</string>
diff --git a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
index 2818ffb18673..70a9117243bd 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"为增强安全性,请改用图案"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"为增强安全性,请改用 PIN 码"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"为增强安全性,请改用密码"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"管理员已锁定设备"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"此设备已手动锁定"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"无法识别"</string>
diff --git a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
index 1b196d4db25d..d1e70f4bed98 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"為提升安全性,請改用圖案"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"為提升安全性,請改用 PIN"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"為提升安全性,請改用密碼"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"裝置已由管理員鎖定"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"使用者已手動將裝置上鎖"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"未能識別"</string>
diff --git a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
index 9b7e4318dc86..bd223d6070a0 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"為強化安全性,請改用解鎖圖案"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"為強化安全性,請改用 PIN 碼"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"為強化安全性,請改用密碼"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"管理員已鎖定裝置"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"裝置已手動鎖定"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"無法識別"</string>
diff --git a/packages/SystemUI/res-keyguard/values-zu/strings.xml b/packages/SystemUI/res-keyguard/values-zu/strings.xml
index cd36f9596e3a..ccc160691c89 100644
--- a/packages/SystemUI/res-keyguard/values-zu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zu/strings.xml
@@ -111,6 +111,12 @@
<string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Ukuze uthole ukuvikeleka okwengeziwe, sebenzisa iphetheni esikhundleni salokho"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Ukuze uthole ukuvikeleka okwengeziwe, sebenzisa i-PIN esikhundleni salokho"</string>
<string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Ukuze uthole ukuvikeleka okwengeziwe, sebenzisa iphasiwedi esikhundleni salokho"</string>
+ <!-- no translation found for kg_prompt_added_security_pin (5487992065995475528) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_pattern (1017068086102168544) -->
+ <skip />
+ <!-- no translation found for kg_prompt_added_security_password (6053156069765029006) -->
+ <skip />
<string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Idivayisi ikhiywe ngumlawuli"</string>
<string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Idivayisi ikhiywe ngokwenza"</string>
<string name="kg_face_not_recognized" msgid="7903950626744419160">"Akwaziwa"</string>
diff --git a/packages/SystemUI/res/layout/super_notification_shade.xml b/packages/SystemUI/res/layout/super_notification_shade.xml
index b792acc8b097..c9985354b11e 100644
--- a/packages/SystemUI/res/layout/super_notification_shade.xml
+++ b/packages/SystemUI/res/layout/super_notification_shade.xml
@@ -69,7 +69,10 @@
<com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificationContainer
android:id="@+id/shared_notification_container"
android:layout_width="match_parent"
- android:layout_height="match_parent" />
+ android:layout_height="match_parent"
+ android:clipChildren="false"
+ android:clipToPadding="false"
+ />
<include layout="@layout/brightness_mirror_container" />
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 2e2d2866e0eb..9bc14453718b 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ontkoppel"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktiveer"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Skakel dit môre outomaties weer aan"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Kenmerke soos Kitsdeel, Kry My Toestel en toestelligging gebruik Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth sal môre om 05:00 aanskakel"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> batterykrag"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Oudio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Kopstuk"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Verwyder"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Voeg legstuk by"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Klaar"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Laat enige legstuk op die sluitskerm toe?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Maak instellings oop"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Hervat werkapps?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Hervat"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Wissel gebruiker"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"aftrekkieslys"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle programme en data in hierdie sessie sal uitgevee word."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Demp"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Saai uit"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Onbeskikbaar omdat luitoon gedemp is"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Tik om te ontdemp."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Tik om op vibreer te stel. Toeganklikheidsdienste kan dalk gedemp wees."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Tik om te demp. Toeganklikheidsdienste kan dalk gedemp wees."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Tik om op vibreer te stel."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Tik om te demp."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Geraasbeheer"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Ruimtelike Oudio"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Af"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Vasgestel"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Kopnasporing"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Tik om luiermodus te verander"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"demp"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"ontdemp"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibreer"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s volumekontroles"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Oproepe en kennisgewings sal lui (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> speel tans op"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Oudio sal speel op"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Stelsel-UI-ontvanger"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera is geblokkeer"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera en mikrofoon is geblokkeer"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofoon is geblokkeer"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioriteitmodus is aan"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Gebruikerteenwoordigheid is bespeur"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Stel versteknotasapp in Instellings"</string>
<string name="install_app" msgid="5066668100199613936">"Installeer app"</string>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 897820cd4636..c333483694ac 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ግንኙነትን አቋርጥ"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ያግብሩ"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"ነገ እንደገና በራስ-ሰር አስጀምር"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"እንደ ፈጣን ማጋራት፣ የእኔን መሣሪያ አግኝ እና የመሣሪያ አካባቢ ያሉ ባህሪያት ብሉቱዝን ይጠቀማሉ"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"ብሉቱዝ ነገ ጠዋቱ 5 ሰዓት ላይ ይበራል"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> ባትሪ"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"ኦዲዮ"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"ማዳመጫ"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"አስወግድ"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"ምግብር አክል"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"ተከናውኗል"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"በማያ ገጽ ቁልፍ ላይ ማንኛውንም ምግብር ይፈቀድ?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"ቅንብሮችን ክፈት"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"የሥራ መተግበሪያዎች ከቆሙበት ይቀጥሉ?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"ከቆመበት ቀጥል"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ተጠቃሚ ቀይር"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ወደታች ተጎታች ምናሌ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"በዚህ ክፍለ-ጊዜ ውስጥ ያሉ ሁሉም መተግበሪያዎች እና ውሂብ ይሰረዛሉ።"</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"ድምጸ-ከል አድርግ"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Cast"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"የጥሪ ድምጽ ስለተዘጋ አይገኝም"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s። ድምጸ-ከል ለማድረግ መታ ያድርጉ"</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s። ወደ ንዝረት ለማቀናበር መታ ያድርጉ። የተደራሽነት አገልግሎቶች ድምጸ-ከል ሊደረግባቸው ይችላል።"</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s። ድምጸ-ከል ለማድረግ መታ ያድርጉ። የተደራሽነት አገልግሎቶች ድምጸ-ከል ሊደረግባቸው ይችላል።"</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s። ወደ ንዝረት ለማቀናበር መታ ያድርጉ።"</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s። ድምጸ-ከል ለማድረግ መታ ያድርጉ።"</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"የጫጫታ መቆጣጠሪያ"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Spatial ኦዲዮ"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"አጥፋ"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"ቋሚ"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"የጭንቅላት ክትትል"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"የደዋይ ሁነታን ለመቀየር መታ ያድርጉ"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"ድምጸ-ከል አድርግ"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"ድምጸ-ከልን አንሳ"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"ንዘር"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s የድምፅ መቆጣጠሪያዎች"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"ጥሪዎች እና ማሳወቂያዎች (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>) ላይ ይደውላሉ"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> እየተጫወተ ያለው በ"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"ኦዲዮ ይጫወታል በ"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"የስርዓት በይነገጽ መቃኛ"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ካሜራ ታግዷል"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"ካሜራ እና ማይክሮፎን ታግደዋል"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"ማይክሮፎን ታግዷል"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"የቅድሚያ ሁነታ በርቷል"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"የተጠቃሚ ተገኝነት ታውቋል"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"በቅንብሮች ውስጥ ነባሪ የማስታወሻዎች መተግበሪያን ያቀናብሩ"</string>
<string name="install_app" msgid="5066668100199613936">"መተግበሪያን ጫን"</string>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 89b4ccf8e382..9a36bcf4f712 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"إلغاء الربط"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"تفعيل"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"تفعيل البلوتوث تلقائيًا مرة أخرى غدًا"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"‏يُستخدَم البلوتوث في ميزات مثل Quick Share و\"العثور على جهازي\" والموقع الجغرافي للجهاز"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"سيتم تفعيل البلوتوث غدًا الساعة 5 صباحًا"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"مستوى طاقة البطارية <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"صوت"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"سماعة الرأس"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"إزالة"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"إضافة تطبيق مصغّر"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"تم"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"هل تريد السماح بعرض أي تطبيق مصغّر على شاشة القفل؟"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"فتح الإعدادات"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"أتريد إعادة تفعيل تطبيقات العمل؟"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"إعادة التفعيل"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"تبديل المستخدم"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"القائمة المنسدلة"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"سيتم حذف كل التطبيقات والبيانات في هذه الجلسة."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"كتم الصوت"</string>
<string name="media_device_cast" msgid="4786241789687569892">"البثّ"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"يتعذّر التغيير بسبب كتم صوت الرنين."</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"‏%1$s. انقر لإلغاء التجاهل."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"‏%1$s. انقر للتعيين على الاهتزاز. قد يتم تجاهل خدمات \"سهولة الاستخدام\"."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"‏%1$s. انقر للتجاهل. قد يتم تجاهل خدمات \"سهولة الاستخدام\"."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"‏%1$s. انقر للتعيين على الاهتزاز."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"‏%1$s. انقر لكتم الصوت."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"التحكُّم في مستوى الضجيج"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"الصوت المكاني"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"إيقاف"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"مفعّل"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"تتبُّع حركة الرأس"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"انقر لتغيير وضع الرنين."</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"كتم الصوت"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"إعادة الصوت"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"اهتزاز"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"‏%s عنصر للتحكم في مستوى الصوت"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"سيصدر الهاتف رنينًا عند تلقي المكالمات والإشعارات (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)."</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"تشغيل <xliff:g id="LABEL">%s</xliff:g> على"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"سيتم تشغيل الصوت على"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"أداة ضبط واجهة مستخدم النظام"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"استخدام الكاميرا محظور."</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"استخدام الكاميرا والميكروفون محظور."</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"استخدام الميكروفون محظور."</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"وضع الأولوية مفعّل."</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"تم رصد تواجد المستخدم."</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"يمكنك ضبط تطبيق تدوين الملاحظات التلقائي في \"الإعدادات\"."</string>
<string name="install_app" msgid="5066668100199613936">"تثبيت التطبيق"</string>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 9a2d744fcbb3..a211d1ea8d10 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"সংযোগ বিচ্ছিন্ন কৰক"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"সক্ৰিয় কৰক"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"কাইলৈ পুনৰ স্বয়ংক্ৰিয়ভাৱে অন কৰক"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Quick Share, Find My Device আৰু ডিভাইচৰ অৱস্থানৰ দৰে সুবিধাই ব্লুটুথ ব্যৱহাৰ কৰে"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"কাইলৈ পুৱা ৫ বজাত ব্লুটুথ অন হ’ব"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"বেটাৰী <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"অডিঅ’"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"হেডছেট"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"আঁতৰাওক"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"ৱিজেট যোগ দিয়ক"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"কৰা হ’ল"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"লক স্ক্ৰীনত যিকোনো ৱিজেটৰ অনুমতি দিবনে?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"ছেটিং খোলক"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"কাম সম্পৰ্কীয় এপ্ আনপজ কৰিবনে?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"আনপজ কৰক"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ব্যৱহাৰকাৰী সলনি কৰক"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"পুল-ডাউনৰ মেনু"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"এই ছেশ্বনৰ আটাইবোৰ এপ্ আৰু ডেটা মচা হ\'ব।"</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"মিউট"</string>
<string name="media_device_cast" msgid="4786241789687569892">"কাষ্ট কৰক"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"ৰিং মিউট কৰি থোৱাৰ বাবে উপলব্ধ নহয়"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s। আনমিউট কৰিবৰ বাবে টিপক।"</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s। কম্পনৰ বাবে টিপক। দিব্য়াংগসকলৰ বাবে থকা সেৱা মিউট হৈ থাকিব পাৰে।"</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s। মিউট কৰিবলৈ টিপক। দিব্য়াংগসকলৰ বাবে থকা সেৱা মিউট হৈ থাকিব পাৰে।"</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s। কম্পন অৱস্থাত ছেট কৰিবলৈ টিপক।"</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s। মিউট কৰিবলৈ টিপক।"</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"কোলাহল নিয়ন্ত্ৰণ"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"স্থানিক অডিঅ’"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"অফ কৰক"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"নিৰ্ধাৰিত"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"হে’ড ট্ৰেকিং"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"ৰিংগাৰ ম’ড সলনি কৰিবলৈ টিপক"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"মিউট কৰক"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"আনমিউট কৰক"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"কম্পন কৰক"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s ধ্বনি নিয়ন্ত্ৰণসমূহ"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"কল আৰু জাননীবোৰ ইমান ভলিউমত বাজিব (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"ইয়াত <xliff:g id="LABEL">%s</xliff:g> প্লে’ হৈ আছে"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"অডিঅ’ ইয়াত প্লে’ হ’ব"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"অধিক ৰিজ’লিউছনৰ বাবে, ফ’নটো লুটিয়াই দিয়ক"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"জপাব পৰা ডিভাইচৰ জাপ খুলি থকা হৈছে"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"জপাব পৰা ডিভাইচৰ ওলোটাই থকা হৈছে"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ফ’ল্ড কৰা"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"আনফ’ল্ড কৰা"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> বেটাৰী বাকী আছে"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"আপোনাৰ ষ্টাইলাছ এটা চাৰ্জাৰৰ সৈতে সংযোগ কৰক"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"ষ্টাইলাছৰ বেটাৰী কম আছে"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"কেমেৰা অৱৰোধ কৰা আছে"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"কেমেৰা আৰু মাইক্ৰ’ফ’ন অৱৰোধ কৰা আছে"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"মাইক্ৰ’ফ’ন অৱৰোধ কৰা আছে"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"অগ্ৰাধিকাৰ দিয়া ম’ড অন আছে"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"ব্যৱহাৰকাৰীৰ উপস্থিতি চিনাক্ত কৰা হৈছে"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ছেটিঙত টোকাৰ ডিফ’ল্ট এপ্ ছেট কৰক"</string>
<string name="install_app" msgid="5066668100199613936">"এপ্‌টো ইনষ্টল কৰক"</string>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index ebd4073155a2..0b0788a56334 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"əlaqəni kəsin"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivləşdirin"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Sabah avtomatik aktiv edin"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Cəld Paylaşım, Cihazın Tapılması və cihaz məkanı kimi funksiyalar Bluetooth istifadə edir"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth sabah 05:00-da aktiv olacaq"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> batareya"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Qulaqlıq"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Silin"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Vidcet əlavə edin"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Hazırdır"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Kilid ekranında istənilən vidcetə icazə verilsin?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Ayarları açın"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"İş tətbiqi üzrə pauza bitsin?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Pauzanı bitirin"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"aşağı çəkilən menyu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Bu sessiyada bütün tətbiqlər və data silinəcək."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Susdurun"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Yayım"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Zəng səssiz edildiyi üçün əlçatan deyil"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Səsli etmək üçün tıklayın."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Vibrasiyanı ayarlamaq üçün tıklayın. Əlçatımlılıq xidmətləri səssiz edilmiş ola bilər."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Səssiz etmək üçün tıklayın. Əlçatımlılıq xidmətləri səssiz edilmiş ola bilər."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Vibrasiyanı ayarlamaq üçün klikləyin."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Səssiz etmək üçün klikləyin."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Səs-küy idarəetməsi"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Məkani səs"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Sönülü"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Sabit"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Baş izləməsi"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Zəng rejimini dəyişmək üçün toxunun"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"susdurun"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"səssiz rejimdən çıxarın"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrasiya"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s səs nəzarətləri"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Çağrı və bildirişlər zəng çalacaq (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> tətbiqində oxudulur"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Audio oxudulacaq"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera bloklanıb"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera və mikrofon bloklanıb"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon bloklanıb"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioritet rejimi aktivdir"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"İstifadəçi mövcudluğu aşkarlandı"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Ayarlarda defolt qeydlər tətbiqi ayarlayın"</string>
<string name="install_app" msgid="5066668100199613936">"Tətbiqi quraşdırı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 17599b2a92a1..48caa06008c7 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"prekinite vezu"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivirajte"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Automatski ponovo uključi sutra"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Funkcije kao što su Quick Share, Pronađi moj uređaj i lokacija uređaja koriste Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth će se uključiti sutra u 5:00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Nivo baterije je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Slušalice"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Ukloni"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Dodaj vidžet"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Gotovo"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Želite da dozvolite sve vidžete na zaključanom ekranu?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Otvori podešavanja"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Uključiti poslovne aplikacije?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Ponovo aktiviraj"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Zameni korisnika"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"padajući meni"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Sve aplikacije i podaci u ovoj sesiji će biti izbrisani."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Isključi zvuk"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Prebacivanje"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Nedostupno jer je zvuk isključen"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Dodirnite da biste uključili zvuk."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Dodirnite da biste podesili na vibraciju. Zvuk usluga pristupačnosti će možda biti isključen."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Dodirnite da biste isključili zvuk. Zvuk usluga pristupačnosti će možda biti isključen."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Dodirnite da biste podesili na vibraciju."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Dodirnite da biste isključili zvuk."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Kontrola šuma"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Prostorni zvuk"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Isključeno"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fiksno"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Praćenje glave"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Dodirnite da biste promenili režim zvona"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"isključite zvuk"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"uključite zvuk"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibracija"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Kontrole za jačinu zvuka za %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Melodija zvona za pozive i obaveštenja je uključena (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> se pušta na"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Zvuk se pušta na"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Tjuner za korisnički interfejs sistema"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera je blokirana"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera i mikrofon su blokirani"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon je blokiran"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioritetni režim je uključen"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Prisustvo korisnika može da se otkrije"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Podesite podrazumevanu aplikaciju za beleške u Podešavanjima"</string>
<string name="install_app" msgid="5066668100199613936">"Instaliraj aplikaciju"</string>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 93921fcde82f..cf35a24900f1 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"адключыць"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"актываваць"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Аўтаматычнае ўключэнне заўтра"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Bluetooth выкарыстоўваецца для вызначэння месцазнаходжання прылады, а таксама такімі функцыямі, як Хуткае абагульванне і Знайсці прыладу"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth будзе ўключаны заўтра ў 5 гадзін раніцы"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Узровень зараду: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Гук"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Гарнітура"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Выдаліць"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Дадаць віджэт"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Гатова"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Дазволіць размяшчаць на экране блакіроўкі любыя віджэты?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Адкрыць налады"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Уключыць працоўныя праграмы?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Уключыць"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Перайсці да іншага карыстальніка"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"высоўнае меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Усе праграмы і даныя гэтага сеанса будуць выдалены."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Гук выключаны"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Трансляцыя"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Недаступна, бо выключаны гук выклікаў"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Дакраніцеся, каб уключыць гук."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Дакраніцеся, каб уключыць вібрацыю. Можа быць адключаны гук службаў спецыяльных магчымасцей."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Дакраніцеся, каб адключыць гук. Можа быць адключаны гук службаў спецыяльных магчымасцей."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Дакраніцеся, каб уключыць вібрацыю."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Дакраніцеся, каб адключыць гук"</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Кантроль шуму"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Прасторавае гучанне"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Выключыць"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Замацавана"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Адсочваць рух галавы"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Націсніце, каб змяніць рэжым званка"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"выключыць гук"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"уключыць гук"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"вібрыраваць"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Рэгулятар гучнасці %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Для выклікаў і апавяшчэнняў уключаны гук (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> прайграецца тут:"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Аўдыявыхад:"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Наладка сістэмнага інтэрфейсу карыстальніка"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Каб зрабіць фота з больш высокай раздзяляльнасцю, павярніце тэлефон"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Складная прылада ў раскладзеным выглядзе"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Перавернутая складная прылада"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"складзена"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"раскладзена"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Засталося зараду: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Падключыце пяро да зараднай прылады"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"Нізкі ўзровень зараду пяра"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Камера заблакіравана"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Камера і мікрафон заблакіраваны"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Мікрафон заблакіраваны"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Прыярытэтны рэжым уключаны"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Выяўлена прысутнасць карыстальніка"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Задайце ў Наладах стандартную праграму для нататак"</string>
<string name="install_app" msgid="5066668100199613936">"Усталяваць праграму"</string>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index f3ae4411f533..c8539e632583 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"прекратяване на връзката"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"активиране"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Автоматично включване отново утре"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Bluetooth се използва от различни функции, като например „Бързо споделяне“, „Намиране на устройството ми“ и местоположението на устройството"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth ще се включи утре в 5:00 ч."</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Батерия: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Аудио"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Слушалки"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Премахване"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Добавяне на приспособление"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Готово"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Да се разреши ли което и да е приспособление на заключения екран?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Отваряне на настройките"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Отмяна на паузата за служ. прил.?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Отмяна на паузата"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Превключване между потребителите"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"падащо меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Всички приложения и данни в тази сесия ще бъдат изтрити."</string>
@@ -581,26 +583,29 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Без звук"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Предаване"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Не е налице, защото звъненето е спряно"</string>
+ <string name="stream_alarm_unavailable" msgid="4059817189292197839">"Не е налице, защото режимът „Не безпокойте“ е вкл."</string>
+ <string name="stream_media_unavailable" msgid="6823020894438959853">"Не е налице, защото режимът „Не безпокойте“ е вкл."</string>
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Докоснете, за да включите отново звука."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Докоснете, за да зададете вибриране. Възможно е звукът на услугите за достъпност да бъде заглушен."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Докоснете, за да заглушите звука. Възможно е звукът на услугите за достъпност да бъде заглушен."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Докоснете, за да зададете вибриране."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Докоснете, за да заглушите звука."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Управление на шума"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Пространствено аудио"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Изкл."</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Фиксирано"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Прослед. на движенията на главата"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Докоснете, за да промените режима на звънене"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"спиране"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"пускане"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"вибриране"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Контроли за силата на звука – %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"При обаждания и известия устройството ще звъни (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <string name="volume_panel_enter_media_output_settings" msgid="8824244246272552669">"Отваряне на изходните настройки"</string>
+ <string name="volume_panel_expanded_sliders" msgid="1885750987768506271">"Плъзгачите за силата на звука са разгънати"</string>
+ <string name="volume_panel_collapsed_sliders" msgid="1413383759434791450">"Плъзгачите за силата на звука са свити"</string>
+ <string name="volume_panel_hint_mute" msgid="6962563028495243738">"спиране на звука на %s"</string>
+ <string name="volume_panel_hint_unmute" msgid="7489063242934477382">"включване на звука на %s"</string>
<string name="media_output_label_title" msgid="872824698593182505">"Възпроизвеждане на <xliff:g id="LABEL">%s</xliff:g> на"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Аудиото ще се възпроизвежда на"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Тунер на системния потребителски интерфейс"</string>
@@ -1254,7 +1259,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Достъпът до камерата е блокиран"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Достъпът до камерата и микрофона е блокиран"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Достъпът до микрофона е блокиран"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Приоритетният режим е включен"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Установено е присъствие на потребител"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Задайте стандартно приложение за бележки от настройките"</string>
<string name="install_app" msgid="5066668100199613936">"Инсталиране на приложението"</string>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index 0e95c2c93b24..dac69cb6b0fa 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ডিসকানেক্ট করুন"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"চালু করুন"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"আগামীকাল অটোমেটিক আবার চালু হবে"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"\'দ্রুত শেয়ার\', \'Find My Device\' ও \'ডিভাইস লোকেশনের\' মতো ফিচার ব্লুটুথ ব্যবহার করে"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"আগামীকাল ভোর ৫টায় ব্লুটুথ চালু হবে"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"চার্জ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"অডিও"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"হেডসেট"</string>
@@ -439,6 +437,12 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"সরান"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"উইজেট যোগ করুন"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"হয়ে গেছে"</string>
+ <!-- no translation found for dialog_title_to_allow_any_widget (1004820948962675644) -->
+ <skip />
+ <!-- no translation found for button_text_to_open_settings (1987729256950941628) -->
+ <skip />
+ <string name="work_mode_off_title" msgid="5794818421357835873">"অফিসের অ্যাপ আনপজ করতে চান?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"আনপজ করুন"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ব্যবহারকারী পাল্টে দিন"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"পুলডাউন মেনু"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"এই সেশনের সব অ্যাপ ও ডেটা মুছে ফেলা হবে।"</string>
@@ -581,26 +585,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"মিউট"</string>
<string name="media_device_cast" msgid="4786241789687569892">"কাস্ট করুন"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"রিং মিউট করা হয়েছে বলে উপলভ্য নেই"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s। সশব্দ করতে আলতো চাপুন।"</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s। কম্পন এ সেট করতে আলতো চাপুন। অ্যাক্সেসযোগ্যতার পরিষেবাগুলিকে মিউট করা হতে পারে।"</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s। মিউট করতে আলতো চাপুন। অ্যাক্সেসযোগ্যতার পরিষেবাগুলিকে মিউট করা হতে পারে।"</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s। ভাইব্রেট করতে ট্যাপ করুন।"</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s। মিউট করতে ট্যাপ করুন।"</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"আশপাশের আওয়াজ কন্ট্রোল করা"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"স্পেশিয়ল অডিও"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"বন্ধ আছে"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"চালু আছে"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"হেড ট্র্যাকিং"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"রিঙ্গার মোড পরিবর্তন করতে ট্যাপ করুন"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"মিউট করুন"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"আনমিউট করুন"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"ভাইব্রেট করান"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s ভলিউম নিয়ন্ত্রণ"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"কল এবং বিজ্ঞপ্তির রিং হবে (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g>-এ প্লে করা হচ্ছে"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"অডিও প্লে করা হবে"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"সিস্টেম UI টিউনার"</string>
@@ -1236,12 +1250,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"আরও বেশি রেজোলিউশনের জন্য, ফোন ফ্লিপ করুন"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ফোল্ড করা যায় এমন ডিভাইস খোলা হচ্ছে"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ফোল্ড করা যায় এমন ডিভাইস উল্টানো হচ্ছে"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ফোল্ড করা রয়েছে"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ফোল্ড করা নেই"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ব্যাটারির চার্জ বাকি আছে"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"কোনও চার্জারের সাথে আপনার স্টাইলাস কানেক্ট করুন"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"স্টাইলাস ব্যাটারিতে চার্জ কম আছে"</string>
@@ -1257,7 +1268,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ক্যামেরার অ্যাক্সেস ব্লক করা আছে"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"ক্যামেরা এবং মাইক্রোফোনের অ্যাক্সেস ব্লক করা আছে"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"মাইক্রোফোনের অ্যাক্সেস ব্লক করা আছে"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"\'প্রায়োরিটি\' মোড চালু করা আছে"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"ব্যবহারকারীর উপস্থিতি শনাক্ত করা হয়েছে"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"\'সেটিংস\' থেকে ডিফল্ট নোট নেওয়ার অ্যাপ সেট করুন"</string>
<string name="install_app" msgid="5066668100199613936">"অ্যাপ ইনস্টল করুন"</string>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index 7abe5ffc5741..dd4fee004f6d 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"prekid veze"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktiviranje"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Automatski uključi ponovo sutra"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Funkcije kao što su Quick Share, Pronađi moj uređaj i lokacija uređaja koriste Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth će se uključiti sutra u 5:00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> baterije"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Zvuk"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Slušalice"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Uklanjanje"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Dodajte vidžet"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Gotovo"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Želite li dopustiti bilo koji widget na zaključanom zaslonu?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Otvori postavke"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Pokrenuti poslovne aplikacije?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Ponovo pokreni"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Zamijeni korisnika"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"padajući meni"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Sve aplikacije i podaci iz ove sesije će se izbrisati."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Isključi zvuk"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Emitiraj"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Nedostupno zbog isključenog zvona"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Dodirnite da uključite zvukove."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Dodirnite za postavljanje vibracije. Zvukovi usluga pristupačnosti mogu biti isključeni."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Dodirnite da isključite zvuk. Zvukovi usluga pristupačnosti mogu biti isključeni."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Dodirnite da postavite vibraciju."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Dodirnite da isključite zvuk."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Upravljanje bukom"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Prostorni zvuk"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Isključi"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fiksno"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Praćenje glave"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Dodirnite da promijenite način rada zvuka zvona"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"isključite zvuk"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"uključite zvuk"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibriranje"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Kontrole glasnoće za %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Pozivi i obavještenja će zvoniti jačinom (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Reproduciranje: <xliff:g id="LABEL">%s</xliff:g>"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Zvuk će se reprod. na:"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Podešavač za korisnički interfejs sistema"</string>
@@ -1236,9 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Za višu rezoluciju obrnite telefon"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Sklopivi uređaj se rasklapa"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Sklopivi uređaj se obrće"</string>
- <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"zatvoreno"</string>
- <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"otvoreno"</string>
- <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"sklopljeno"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"otklopljeno"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Preostalo baterije: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Priključite pisaljku na punjač"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"Baterija pisaljke je slaba"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera je blokirana"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera i mikrofon su blokirani"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon je blokiran"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Način rada Prioriteti je uključen"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Otkriveno je prisustvo korisnika"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Postavite zadanu aplikaciju za bilješke u Postavkama"</string>
<string name="install_app" msgid="5066668100199613936">"Instaliraj aplikaciju"</string>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 29ef2f959d17..bf5e58ce4c18 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"desconnecta"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activa"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Torna\'l a activar automàticament demà"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Funcions com ara Quick Share, Troba el meu dispositiu i la ubicació del dispositiu utilitzen el Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth s\'activarà a les 5:00 h demà"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> de bateria"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Àudio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Auriculars"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Suprimeix"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Afegeix un widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Fet"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Vols permetre qualsevol widget a la pantalla de bloqueig?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Obre la configuració"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Reactivar les apps de treball?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Reactiva"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Canvia d\'usuari"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menú desplegable"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Totes les aplicacions i les dades d\'aquesta sessió se suprimiran."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Silencia"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Emet"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"No disponible perquè el so està silenciat"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Toca per activar el so."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Toca per activar la vibració. Pot ser que els serveis d\'accessibilitat se silenciïn."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Toca per silenciar el so. Pot ser que els serveis d\'accessibilitat se silenciïn."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Toca per activar la vibració."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Toca per silenciar."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Control de soroll"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Àudio espacial"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Desactiva"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fix"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Seguiment del cap"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Toca per canviar el mode de timbre"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"silenciar"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"deixar de silenciar"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrar"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Controls de volum %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Les trucades i les notificacions sonaran (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"S\'està reproduint <xliff:g id="LABEL">%s</xliff:g> a"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Es reproduirà a"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Personalitzador d\'interfície d\'usuari"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Per a una resolució més alta, gira el telèfon"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositiu plegable desplegant-se"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositiu plegable girant"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"plegat"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"desplegat"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Queda un <xliff:g id="PERCENTAGE">%s</xliff:g> de bateria"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Connecta el llapis òptic a un carregador"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"Bateria del llapis òptic baixa"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"La càmera està bloquejada"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"La càmera i el micròfon estan bloquejats"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"El micròfon està bloquejat"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"El mode Prioritat està activat"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"S\'ha detectat la presència d\'usuaris"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Defineix l\'aplicació de notes predeterminada a Configuració"</string>
<string name="install_app" msgid="5066668100199613936">"Instal·la l\'aplicació"</string>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 0bbeb9c998e1..5e8acfa009b0 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"odpojit"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivovat"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Zítra znovu automaticky zapnout"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Funkce jako Quick Share, Najdi moje zařízení a vyhledávání zařízení používají Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth se zapne zítra v 5:00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Baterie: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Zvuk"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Sluchátka"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Odstranit"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Přidat widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Hotovo"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Povolit jakýkoli widget na obrazovce uzamčení?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Otevřít nastavení"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Zrušit pozastavení pracovních aplikací?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Zrušit pozastavení"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Přepnout uživatele"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rozbalovací nabídka"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Veškeré aplikace a data v této relaci budou vymazána."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Ztlumení"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Odesílání"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Nedostupné, protože vyzvánění je ztlumené"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Klepnutím zapnete zvuk."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Klepnutím aktivujete režim vibrací. Služby přístupnosti mohou být ztlumeny."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Klepnutím vypnete zvuk. Služby přístupnosti mohou být ztlumeny."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Klepnutím nastavíte vibrace."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Klepnutím vypnete zvuk."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Omezení hluku"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Prostorový zvuk"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Vypnuto"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Pevné"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Sledování hlavy"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Klepnutím změníte režim vyzvánění"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"vypnout zvuk"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"zapnout zvuk"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrovat"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Ovládací prvky hlasitosti %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Volání a oznámení budou vyzvánět (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Přehrávání <xliff:g id="LABEL">%s</xliff:g> na"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Zvuk se přehraje na"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Nástroj na ladění uživatelského rozhraní systému"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera je blokována"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera a mikrofon jsou blokovány"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon je blokován"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Režim priority je zapnutý"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Je zjištěna přítomnost uživatele"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Výchozí aplikaci pro poznámky nastavíte v Nastavení"</string>
<string name="install_app" msgid="5066668100199613936">"Nainstalovat aplikaci"</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 2ea1e12def5d..8e178e8cf510 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"afbryd forbindelse"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivér"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Aktivér automatisk igen i morgen"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Funktioner som f.eks. Quick Share, Find min enhed og enhedslokation anvender Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth aktiveres i morgen kl. 5.00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> batteri"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Lyd"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Headset"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Fjern"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Tilføj widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Udfør"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Vil du tillade alle widgets på låseskærmen?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Åbn Indstillinger"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Vil du genoptage arbejdsapps?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Genoptag"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Skift bruger"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rullemenu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle apps og data i denne session slettes."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Slå lyden fra"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Cast"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Ikke muligt, da ringetonen er slået fra"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Tryk for at slå lyden til."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Tryk for at konfigurere til at vibrere. Tilgængelighedstjenester kan blive deaktiveret."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Tryk for at slå lyden fra. Lyden i tilgængelighedstjenester kan blive slået fra."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Tryk for at aktivere vibration."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Tryk for at slå lyden fra."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Støjstyring"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Rumlig lyd"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Fra"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fast"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Reg. af hovedbevægelser"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Tryk for at ændre ringetilstand"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"slå lyden fra"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"slå lyden til"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrer"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s lydstyrkeknapper"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Der afspilles lyd ved opkald og notifikationer (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Afspiller <xliff:g id="LABEL">%s</xliff:g> på"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Lyden afspilles på"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -992,7 +1004,7 @@
<string name="controls_removed" msgid="3731789252222856959">"Fjernet"</string>
<string name="controls_panel_authorization_title" msgid="267429338785864842">"Vil du tilføje <xliff:g id="APPNAME">%s</xliff:g>?"</string>
<string name="controls_panel_authorization" msgid="7045551688535104194">"<xliff:g id="APPNAME">%s</xliff:g> kan vælge, hvilke styringselementer og hvilket indhold der skal vises her."</string>
- <string name="controls_panel_remove_app_authorization" msgid="5920442084735364674">"Vil du fjerne styringselementerne for <xliff:g id="APPNAME">%s</xliff:g>?"</string>
+ <string name="controls_panel_remove_app_authorization" msgid="5920442084735364674">"Vil du fjerne sty­rings­ele­men­ter­ne for <xliff:g id="APPNAME">%s</xliff:g>?"</string>
<string name="accessibility_control_favorite" msgid="8694362691985545985">"Angivet som favorit"</string>
<string name="accessibility_control_favorite_position" msgid="54220258048929221">"Angivet som favorit. Position <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="accessibility_control_not_favorite" msgid="1291760269563092359">"Fjernet fra favoritter"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kameraet er blokeret"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Der er blokeret for kameraet og mikrofonen"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofonen er blokeret"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioritetstilstand er aktiveret"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Brugertilstedeværelse er registreret"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Angiv standardapp til noter i Indstillinger"</string>
<string name="install_app" msgid="5066668100199613936">"Installer app"</string>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index edd718fd69fc..a61e80235883 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"Verknüpfung aufheben"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivieren"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Morgen automatisch wieder aktivieren"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Für Funktionen wie Quick Share, „Mein Gerät finden“ und den Gerätestandort wird Bluetooth verwendet"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth wird morgen um 5:00 Uhr aktiviert"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Akkustand: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Headset"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Entfernen"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Widget hinzufügen"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Fertig"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Beliebige Widgets auf Sperrbildschirm zulassen?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Einstellungen öffnen"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Geschäftliche Apps nicht mehr pausieren?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Nicht mehr pausieren"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Nutzer wechseln"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"Pull-down-Menü"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle Apps und Daten in dieser Sitzung werden gelöscht."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Stummschalten"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Stream"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Nicht verfügbar, da Klingelton stumm"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Zum Aufheben der Stummschaltung tippen."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Tippen, um Vibrieren festzulegen. Bedienungshilfen werden unter Umständen stummgeschaltet."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Zum Stummschalten tippen. Bedienungshilfen werden unter Umständen stummgeschaltet."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Zum Aktivieren der Vibration tippen."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Zum Stummschalten tippen."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Geräuschunterdrückung"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Spatial Audio"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Aus"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Statisch"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Erfassung von Kopfbewegungen"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Zum Ändern des Klingeltonmodus tippen"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"Stummschalten"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"Aufheben der Stummschaltung"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"Vibrieren lassen"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Lautstärkeregler von %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Gerät klingelt bei Anrufen und Benachrichtigungen (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Wiedergabe von <xliff:g id="LABEL">%s</xliff:g> über"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Audiowiedergabe über"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Für höhere Auflösung Smartphone umdrehen"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Faltbares Gerät wird geöffnet"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Faltbares Gerät wird umgeklappt"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"zugeklappt"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"aufgeklappt"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Akku bei <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Schließe deinen Eingabestift an ein Ladegerät an"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"Stylus-Akkustand niedrig"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera blockiert"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera und Mikrofon blockiert"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon blockiert"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioritätsmodus an"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Anwesenheit des Nutzers wurde erkannt"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Standard-Notizen-App in den Einstellungen einrichten"</string>
<string name="install_app" msgid="5066668100199613936">"App installieren"</string>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 54303b5e3cc6..3167843826df 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"αποσύνδεση"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ενεργοποίηση"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Αυτόματη ενεργοποίηση ξανά αύριο"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Λειτουργίες όπως το Quick Share, η Εύρεση συσκευής και η τοποθεσία της συσκευής χρησιμοποιούν Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Το Bluetooth θα ενεργοποιηθεί αύριο στις 5 π.μ."</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Μπαταρία <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Ήχος"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Ακουστικά"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Κατάργηση"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Προσθήκη γραφικού στοιχείου"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Τέλος"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Να επιτρέπονται όλα τα γραφικά στοιχεία στην οθόνη κλειδώματος;"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Άνοιγμα ρυθμίσεων"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Αναίρ. παύσης εφαρμ. εργασιών;"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Αναίρεση παύσης"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Εναλλαγή χρήστη"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"αναπτυσσόμενο μενού"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Όλες οι εφαρμογές και τα δεδομένα αυτής της περιόδου σύνδεσης θα διαγραφούν."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Σίγαση"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Μετάδοση"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Μη διαθέσιμο λόγω σίγασης ήχου κλήσης"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Πατήστε για κατάργηση σίγασης."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Πατήστε για ενεργοποιήσετε τη δόνηση. Οι υπηρεσίες προσβασιμότητας ενδέχεται να τεθούν σε σίγαση."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Πατήστε για σίγαση. Οι υπηρεσίες προσβασιμότητας ενδέχεται να τεθούν σε σίγαση."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Πατήστε για να ενεργοποιήσετε τη δόνηση."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Πατήστε για σίγαση."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Έλεγχος θορύβου"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Χωρικός ήχος"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Ανενεργός"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Σταθερός"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Παρακ. κίνησ. κεφαλ."</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Πατήστε για να αλλάξετε τη λειτουργία ειδοποίησης ήχου"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"σίγαση"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"κατάργηση σίγασης"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"δόνηση"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s στοιχεία ελέγχου έντασης ήχου"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Θα υπάρχει ηχητική ειδοποίηση για κλήσεις και ειδοποιήσεις (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Αναπαραγωγή <xliff:g id="LABEL">%s</xliff:g> σε"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Ο ήχος θα παίξει σε"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Για υψηλότερη ανάλυση, αναστρέψτε το τηλέφωνο"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Αναδιπλούμενη συσκευή που ξεδιπλώνει"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Αναδιπλούμενη συσκευή που διπλώνει"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"διπλωμένη"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ξεδιπλωμένη"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Απομένει το <xliff:g id="PERCENTAGE">%s</xliff:g> της μπαταρίας"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Συνδέστε τη γραφίδα σε έναν φορτιστή"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"Χαμηλή στάθμη μπαταρίας γραφίδας"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Η κάμερα έχει αποκλειστεί"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Η κάμερα και το μικρόφωνο έχουν αποκλειστεί"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Το μικρόφωνο έχει αποκλειστεί"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Η λειτουργία προτεραιότητας είναι ενεργοποιημένη"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Εντοπίστηκε παρουσία χρήστη"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Ορίστε την προεπιλεγμένη εφαρμογή σημειώσεων στις Ρυθμίσεις"</string>
<string name="install_app" msgid="5066668100199613936">"Εγκατάσταση εφαρμογής"</string>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index 0fcd2b08d4bb..6d79b47ab601 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"disconnect"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activate"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Automatically turn on again tomorrow"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Features like Quick Share, Find My Device and device location use Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth will turn on tomorrow at 5.00 a.m."</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> battery"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Headset"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Remove"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Add widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Done"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Allow any widget on the lock screen?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Open settings"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Unpause work apps?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Unpause"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"All apps and data in this session will be deleted."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Mute"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Cast"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Unavailable because ring is muted"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Tap to unmute."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Tap to set to vibrate. Accessibility services may be muted."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Tap to mute. Accessibility services may be muted."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Tap to set to vibrate."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Tap to mute."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Noise control"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Spatial audio"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Off"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fixed"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Head tracking"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Tap to change ringer mode"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"mute"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"unmute"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrate"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s volume controls"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Calls and notifications will ring (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Playing <xliff:g id="LABEL">%s</xliff:g> on"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Audio will play on"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Camera is blocked"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Camera and microphone blocked"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microphone is blocked"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Priority mode on"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"User presence is detected"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Set default notes app in Settings"</string>
<string name="install_app" msgid="5066668100199613936">"Install app"</string>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index da1dcd848b3b..62e0e5707367 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"disconnect"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activate"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Automatically turn on again tomorrow"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Features like Quick Share, Find My Device, and device location use Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth will turn on tomorrow at 5 AM"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> battery"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Headset"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Remove"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Add widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Done"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Allow any widget on lock screen?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Open settings"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Unpause work apps?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Unpause"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"All apps and data in this session will be deleted."</string>
@@ -581,6 +583,8 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Mute"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Cast"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Unavailable because ring is muted"</string>
+ <string name="stream_alarm_unavailable" msgid="4059817189292197839">"Unavailable because Do Not Disturb is on"</string>
+ <string name="stream_media_unavailable" msgid="6823020894438959853">"Unavailable because Do Not Disturb is on"</string>
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Tap to unmute."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Tap to set to vibrate. Accessibility services may be muted."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Tap to mute. Accessibility services may be muted."</string>
@@ -597,6 +601,11 @@
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrate"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s volume controls"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Calls and notifications will ring (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <string name="volume_panel_enter_media_output_settings" msgid="8824244246272552669">"Enter output settings"</string>
+ <string name="volume_panel_expanded_sliders" msgid="1885750987768506271">"Volume sliders expanded"</string>
+ <string name="volume_panel_collapsed_sliders" msgid="1413383759434791450">"Volume sliders collapsed"</string>
+ <string name="volume_panel_hint_mute" msgid="6962563028495243738">"mute %s"</string>
+ <string name="volume_panel_hint_unmute" msgid="7489063242934477382">"unmute %s"</string>
<string name="media_output_label_title" msgid="872824698593182505">"Playing <xliff:g id="LABEL">%s</xliff:g> on"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Audio will play on"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1250,7 +1259,7 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Camera blocked"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Camera and microphone blocked"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microphone blocked"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Priority mode on"</string>
+ <string name="priority_mode_dream_overlay_content_description" msgid="3361628029609329182">"Do not disturb"</string>
<string name="assistant_attention_content_description" msgid="4166330881435263596">"User presence is detected"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Set default notes app in Settings"</string>
<string name="install_app" msgid="5066668100199613936">"Install app"</string>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 0fcd2b08d4bb..6d79b47ab601 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"disconnect"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activate"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Automatically turn on again tomorrow"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Features like Quick Share, Find My Device and device location use Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth will turn on tomorrow at 5.00 a.m."</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> battery"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Headset"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Remove"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Add widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Done"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Allow any widget on the lock screen?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Open settings"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Unpause work apps?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Unpause"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"All apps and data in this session will be deleted."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Mute"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Cast"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Unavailable because ring is muted"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Tap to unmute."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Tap to set to vibrate. Accessibility services may be muted."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Tap to mute. Accessibility services may be muted."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Tap to set to vibrate."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Tap to mute."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Noise control"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Spatial audio"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Off"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fixed"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Head tracking"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Tap to change ringer mode"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"mute"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"unmute"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrate"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s volume controls"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Calls and notifications will ring (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Playing <xliff:g id="LABEL">%s</xliff:g> on"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Audio will play on"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Camera is blocked"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Camera and microphone blocked"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microphone is blocked"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Priority mode on"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"User presence is detected"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Set default notes app in Settings"</string>
<string name="install_app" msgid="5066668100199613936">"Install app"</string>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index 0fcd2b08d4bb..6d79b47ab601 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"disconnect"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activate"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Automatically turn on again tomorrow"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Features like Quick Share, Find My Device and device location use Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth will turn on tomorrow at 5.00 a.m."</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> battery"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Headset"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Remove"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Add widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Done"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Allow any widget on the lock screen?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Open settings"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Unpause work apps?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Unpause"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"All apps and data in this session will be deleted."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Mute"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Cast"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Unavailable because ring is muted"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Tap to unmute."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Tap to set to vibrate. Accessibility services may be muted."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Tap to mute. Accessibility services may be muted."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Tap to set to vibrate."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Tap to mute."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Noise control"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Spatial audio"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Off"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fixed"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Head tracking"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Tap to change ringer mode"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"mute"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"unmute"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrate"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s volume controls"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Calls and notifications will ring (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Playing <xliff:g id="LABEL">%s</xliff:g> on"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Audio will play on"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Camera is blocked"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Camera and microphone blocked"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microphone is blocked"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Priority mode on"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"User presence is detected"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Set default notes app in Settings"</string>
<string name="install_app" msgid="5066668100199613936">"Install app"</string>
diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml
index 516c3af2e324..8b3a37f9b770 100644
--- a/packages/SystemUI/res/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res/values-en-rXC/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‏‏‎‎‎‏‎‏‏‏‎‏‏‎‏‏‏‏‏‎‎‏‏‏‏‏‎‎‎‏‎‏‎‎‏‎‎‏‏‏‏‎‏‎‎‏‏‎‏‎‎‏‏‏‏‎‎disconnect‎‏‎‎‏‎"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‏‎‏‎‏‏‏‏‎‏‏‎‎‎‎‎‏‎‏‏‎‏‎‏‏‏‎‏‏‎‏‎‏‏‏‎‏‎‏‏‎‎‎‏‏‎‏‎‎‏‎‏‏‎‏‏‎activate‎‏‎‎‏‎"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‏‏‎‎‎‎‎‏‏‏‎‎‏‎‏‏‎‏‏‏‎‎‎‏‏‎‏‏‎‏‏‏‎‏‎‏‎‏‏‏‎‎‎‎‏‎‎‏‏‎‏‏‎‎‏‎‎Automatically turn on again tomorrow‎‏‎‎‏‎"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‏‎‏‏‏‎‏‎‎‎‏‎‏‏‎‏‏‎‎‎‎‏‏‎‏‎‏‎‎‎‎‎‎‏‎‎‏‏‏‏‎‏‏‏‎‎‎‏‏‏‏‏‎Features like Quick Share, Find My Device, and device location use Bluetooth‎‏‎‎‏‎"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎‏‎‎‏‎‎‎‏‏‎‎‎‏‎‏‎‎‏‏‏‏‎‎‎‎‎‏‏‏‎‏‏‏‎‏‎‏‎‏‎‎‏‎‎‏‏‎‏‎‎‏‎‏‎‎Bluetooth will turn on tomorrow at 5 AM‎‏‎‎‏‎"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‎‎‎‎‏‎‎‏‏‎‎‏‎‎‏‎‏‎‎‏‏‏‏‎‏‎‏‏‏‏‎‏‏‏‏‏‎‎‎‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‎‎‏‎‎‏‏‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>‎‏‎‎‏‏‏‎ battery‎‏‎‎‏‎"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‏‏‎‏‎‏‎‎‎‏‎‎‏‏‎‏‎‎‎‏‎‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‏‎‎‎‏‏‎‏‎‏‎‏‏‎‎‏‎Audio‎‏‎‎‏‎"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‎‏‎‏‏‏‎‏‎‏‎‎‎‎‏‎‎‏‎‎‏‎‎‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‎‏‏‏‎‎‏‏‎‏‏‎‎‏‎‏‎‎‎Headset‎‏‎‎‏‎"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‎‏‎‏‎‏‏‎‏‎‏‏‏‎‏‎‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‎‏‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‎‎Remove‎‏‎‎‏‎"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‏‎‎‎‎‏‏‎‎‏‏‎‎‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‏‏‏‎‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‎‏‎Add widget‎‏‎‎‏‎"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‏‎‏‎‎‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‎‎‏‏‎‏‏‎‏‏‏‎‏‎‎‎‎‏‏‏‎‎‎‏‏‎‎‏‎‎‎‎‏‏‎Done‎‏‎‎‏‎"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‏‏‏‏‎‎‎‏‏‏‎‏‎‏‏‏‎‏‎‏‎‏‎‎‎‏‎‎‏‏‎‏‏‏‎‎‏‎‏‎‏‎‎‎‏‎‏‏‏‎‏‏‏‏‎‎‎Allow any widget on lock screen?‎‏‎‎‏‎"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‏‎‎‏‎‏‎‏‏‏‎‏‎‏‎‏‎‎‏‏‏‎‏‎‎‏‎‎‏‏‏‎‎‎‏‏‎‏‏‎‎‏‎‎‎‏‏‏‏‎‏‏‏‏‎‎‎Open settings‎‏‎‎‏‎"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‏‎‏‎‏‏‎‏‎‏‎‏‎‎‏‎‏‎‎‏‏‎‏‏‏‎‎‏‏‎‏‏‏‎‏‏‎‎‎‏‏‏‎‏‏‎‎‏‏‎‎‎‎‏‎Unpause work apps?‎‏‎‎‏‎"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‏‎‎‏‏‎‎‏‎‎‏‏‎‎‏‏‏‏‎‎‏‎‎‏‏‏‎‏‎‎‎‎‎‏‏‎‏‏‏‏‎‎‎‎‏‏‎‎‎‏‏‎‎‎‏‏‎Unpause‎‏‎‎‏‎"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‏‏‏‎‎‏‏‎‎‎‏‏‏‎‏‎‎‎‎‏‏‎‎‏‎‎‎‎‎‏‏‏‎‏‎‏‏‏‎‏‏‏‎‎‎‎‏‎‏‏‎‏‎‎‎Switch user‎‏‎‎‏‎"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‏‎‏‏‎‏‎‎‏‏‎‎‎‎‎‎‎‏‏‏‏‎‎‏‎‏‎‎‏‏‎‎‎‎‏‏‏‏‏‏‏‎pulldown menu‎‏‎‎‏‎"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‎‏‎‏‎‎‎‎‎‏‎‎‏‎‏‏‎‎‏‏‎‏‎‎‏‏‏‎‏‏‏‏‎‏‎‏‏‏‎‏‎All apps and data in this session will be deleted.‎‏‎‎‏‎"</string>
@@ -581,6 +583,8 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‏‏‏‎‏‎‎‎‏‏‏‎‎‎‎‎‏‏‏‎‎‎‎‎‎‎‎‏‎‏‏‏‎‎‏‎‎‎‎‏‎‏‎‎‎‏‎‎‏‏‎‎‏‏‎Mute‎‏‎‎‏‎"</string>
<string name="media_device_cast" msgid="4786241789687569892">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‏‏‎‏‏‎‎‎‎‏‎‎‏‎‏‏‎‎‎‏‏‎‎‏‎‎‏‎‎‏‏‎‏‏‏‎‏‎‏‎‎‎‏‏‏‎‏‏‏‏‎‎‏‎‎‎Cast‎‏‎‎‏‎"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‎‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‎‏‏‎‏‎‏‏‎‎‏‎‏‏‎‏‎‎‎‏‎‎‏‎‎‏‏‎Unavailable because ring is muted‎‏‎‎‏‎"</string>
+ <string name="stream_alarm_unavailable" msgid="4059817189292197839">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‎‏‏‏‎‏‎‏‏‏‏‎‎‎‏‏‏‎‎‏‎‏‎‎‏‏‎‎‏‏‎‎‏‎‎‏‎‏‎‎‎‏‏‏‏‏‎‎‏‏‏‏‎Unavailable because Do Not Disturb is on‎‏‎‎‏‎"</string>
+ <string name="stream_media_unavailable" msgid="6823020894438959853">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‎‏‏‎‎‎‎‎‎‏‏‏‏‎‏‎‏‎‏‏‎‏‎‏‎‎‎‎‏‎‎‎‎‎‏‏‎‏‎‎‎‏‎‏‎‏‎‏‏‏‎‏‏‎‏‎Unavailable because Do Not Disturb is on‎‏‎‎‏‎"</string>
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‎‏‎‎‏‏‏‏‏‎‎‎‏‏‎‎‎‎‎‏‏‎‏‏‏‎‎‏‏‏‏‏‎‏‎‎‎‏‏‎‏‎‎‏‎‎‎‏‎‎‎‏‎%1$s. Tap to unmute.‎‏‎‎‏‎"</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‏‎‏‏‎‏‎‏‏‎‏‏‏‏‎‏‏‎‎‎‏‏‏‏‎‏‎‎‎‏‏‎‎‎‏‎‏‏‎‎‎‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‏‎%1$s. Tap to set to vibrate. Accessibility services may be muted.‎‏‎‎‏‎"</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‏‏‎‏‏‏‎‏‎‏‏‏‏‎‏‏‏‎‎‎‎‎‏‏‎‏‏‎‏‎‎‏‏‏‎‏‏‎‏‎‏‏‏‎‎‏‏‎‏‏‎‎‎‎%1$s. Tap to mute. Accessibility services may be muted.‎‏‎‎‏‎"</string>
@@ -597,6 +601,11 @@
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‏‎‏‎‎‎‎‎‏‎‎‎‏‏‎‎‎‎‏‎‎‏‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‏‎‏‏‎‎‏‎‎‏‎‏‎vibrate‎‏‎‎‏‎"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‎‏‏‏‏‏‎‎‎‏‏‏‏‏‎‎‏‎‎‏‎‏‎‏‏‏‎‏‏‎‎‎‏‎‏‏‏‎‎‏‎‏‏‏‏‏‎‎‏‎‏‎‏‎‎‎%s volume controls‎‏‎‎‏‎"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‎‎‏‎‎‏‏‎‏‎‏‏‏‏‏‏‎‎‎‎‏‎‏‏‎‏‎‏‎‏‏‏‏‎‏‏‏‎‏‏‎‏‏‎‏‎‏‎‎Calls and notifications will ring (‎‏‎‎‏‏‎<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>‎‏‎‎‏‏‏‎)‎‏‎‎‏‎"</string>
+ <string name="volume_panel_enter_media_output_settings" msgid="8824244246272552669">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‏‎‎‎‎‎‎‎‏‏‎‏‏‎‎‎‏‏‏‎‎‏‏‏‏‎‎‏‎‏‏‏‎‎‎‎‏‎‏‏‏‎‏‏‎‏‏‏‎‏‎Enter output settings‎‏‎‎‏‎"</string>
+ <string name="volume_panel_expanded_sliders" msgid="1885750987768506271">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‎‎‏‎‏‎‏‏‏‎‎‎‏‎‎‎‏‎‎‎‏‎‎‎‎‏‎‎‎‎‎‎‏‏‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‎‎‏‏‏‏‏‎Volume sliders expanded‎‏‎‎‏‎"</string>
+ <string name="volume_panel_collapsed_sliders" msgid="1413383759434791450">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‏‏‏‎‏‎‏‎‏‏‎‎‏‎‎‎‎‏‎‏‎‎‏‏‏‎‎‎‎‎‏‏‎‏‎‏‎‏‎‏‏‏‎‏‎‎‎‎‏‏‎‏‎‎Volume sliders collapsed‎‏‎‎‏‎"</string>
+ <string name="volume_panel_hint_mute" msgid="6962563028495243738">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‏‏‎‏‏‎‎‏‏‏‏‎‏‏‏‎‏‎‎‎‎‏‏‎‎‏‏‏‎‏‏‎‏‎‎mute %s‎‏‎‎‏‎"</string>
+ <string name="volume_panel_hint_unmute" msgid="7489063242934477382">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‎‏‏‎‏‏‏‏‎‎‎‏‎‏‏‎‏‏‎‎‎‏‎‎‏‎‎‎‏‏‎‎unmute %s‎‏‎‎‏‎"</string>
<string name="media_output_label_title" msgid="872824698593182505">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‎‎‏‏‏‎‎‏‏‏‎‎‏‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‏‎‏‏‎‏‎‏‎‏‏‎‎‎‎‎‏‏‎‎‏‎‏‎‎‏‎Playing ‎‏‎‎‏‏‎<xliff:g id="LABEL">%s</xliff:g>‎‏‎‎‏‏‏‎ on‎‏‎‎‏‎"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‏‎‎‎‏‎‏‏‏‎‏‏‏‏‏‎‎‏‏‎‏‏‎‎‏‏‏‎‎‎‎‎‏‎‏‏‎‏‎‏‏‎‏‎‎‎‎‎‏‏‎‏‏‎‏‎‏‎Audio will play on‎‏‎‎‏‎"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‎‏‏‎‏‎‏‏‎‏‎‎‎‏‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‎‎‎‏‏‏‎‎‎‏‏‎‎‎‎‎‎‎‏‏‎‏‎‏‎‎‏‎System UI Tuner‎‏‎‎‏‎"</string>
@@ -1250,7 +1259,7 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‎‏‏‎‎‎‏‏‏‎‏‎‎‎‎‏‎‏‎‏‏‏‎‎‏‏‏‏‎‏‏‎‎‎‎‏‎‎‏‏‏‏‏‎‏‎‎‎‏‎‎‏‎‎Camera blocked‎‏‎‎‏‎"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‎‎‎‏‎‏‎‏‏‏‏‎‏‏‎‏‏‎‏‏‏‏‎‎‏‏‏‎‎‏‏‏‏‎‎‎‏‎‎‏‏‏‎‎‏‏‎‏‎‎‏‎‎‎Camera and microphone blocked‎‏‎‎‏‎"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‎‏‎‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‎‎‎‏‎‏‎‏‎‏‏‏‏‏‏‏‎‎‏‎Microphone blocked‎‏‎‎‏‎"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‎‎‎‏‎‏‎‎‏‏‎‎‎‎‎‏‏‎‏‎‎‎‏‎‎‏‎‏‏‎‏‎‎‎‏‏‏‎‏‎‏‎‏‏‎‎‏‎‎‏‎‎‎‎Priority mode on‎‏‎‎‏‎"</string>
+ <string name="priority_mode_dream_overlay_content_description" msgid="3361628029609329182">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‏‎‏‎‎‏‏‎‏‏‏‎‎‏‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‏‏‏‏‎‏‏‏‎‎‎‏‎‎‎‎‏‎‎‎‎‏‏‏‏‎‎Do not disturb‎‏‎‎‏‎"</string>
<string name="assistant_attention_content_description" msgid="4166330881435263596">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‎‏‎‎‎‏‏‏‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‏‏‎‎‏‎‏‏‎‎‎‎‎‏‏‎‎‎‏‎‎‏‏‎‏‏‎‎‎User presence is detected‎‏‎‎‏‎"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‎‎‎‎‏‏‏‏‎‎‎‏‏‏‏‏‎‎‎‏‏‎‏‎‏‎‏‏‏‏‎‏‏‏‏‎‏‏‏‏‎‎‏‏‏‎‏‎‏‎‎‎‎‎‏‎Set default notes app in Settings‎‏‎‎‏‎"</string>
<string name="install_app" msgid="5066668100199613936">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‎‏‎‎‎‎‎‏‏‎‏‎‏‏‏‏‎‎‏‎‏‎‏‏‏‏‎‎‏‏‎‎‏‏‎‎‏‏‏‎‎‎‎‏‎‏‏‏‏‏‎‎‎‎‎Install app‎‏‎‎‏‎"</string>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 11e31e1c3f2b..ddeae202da03 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"desconectar"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activar"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Volver a activar automáticamente mañana"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Las funciones como Quick Share, Encontrar mi dispositivo y la ubicación del dispositivo usan Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Se activará el Bluetooth mañana a las 5 a.m."</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> de batería"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Auriculares"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Quitar"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Agregar widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Listo"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"¿Quieres permitir cualquier widget en la pantalla de bloqueo?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Abrir configuración"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"¿Reanudar apps de trabajo?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Reanudar"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar usuario"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menú expandible"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Se eliminarán las aplicaciones y los datos de esta sesión."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Silenciar"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Transmisión"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"No disponible por timbre silenciado"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Presiona para dejar de silenciar."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Presiona para establecer el modo vibración. Es posible que los servicios de accesibilidad estén silenciados."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Presiona para silenciar. Es posible que los servicios de accesibilidad estén silenciados."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Presiona para establecer el modo vibración."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Presiona para silenciar."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Control de ruido"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Audio espacial"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Desactivar"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fijar"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Seg. de cabeza"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Presiona para cambiar el modo de timbre"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"silenciar"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"dejar de silenciar"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrar"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Controles de volumen %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Sonarán las llamadas y notificaciones (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Reproduciendo <xliff:g id="LABEL">%s</xliff:g> en"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Se reproducirá en"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Sintonizador de IU del sistema"</string>
@@ -740,7 +752,7 @@
<string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Mostrando combinaciones de teclas para la app actual"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Ver notificaciones"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Tomar captura de pantalla"</string>
- <string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Mostrar accesos directos"</string>
+ <string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Mostrar combinaciones de teclas"</string>
<string name="group_system_go_back" msgid="2730322046244918816">"Atrás"</string>
<string name="group_system_access_home_screen" msgid="4130366993484706483">"Ir a la pantalla principal"</string>
<string name="group_system_overview_open_apps" msgid="5659958952937994104">"Ver apps recientes"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Para obtener una resolución más alta, gira el teléfono"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositivo plegable siendo desplegado"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositivo plegable siendo girado"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"plegado"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"desplegado"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> de batería restante"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Conecta tu pluma stylus a un cargador"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"La pluma stylus tiene poca batería"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"La cámara está bloqueada"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"La cámara y el micrófono están bloqueados"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"El micrófono está bloqueado"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"El modo de prioridad está activado"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Se detectó la presencia del usuario"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Configura la app de notas predeterminada en Configuración"</string>
<string name="install_app" msgid="5066668100199613936">"Instalar app"</string>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index ec03f8dd982c..db65640fb375 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"desconectar"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activar"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Volver a activar automáticamente mañana"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Las funciones como Quick Share y Encontrar mi dispositivo, y la ubicación del dispositivo usan Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"El Bluetooth se activará mañana a las 5:00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> de batería"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Auriculares"</string>
@@ -439,6 +437,12 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Quitar"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Añadir widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Hecho"</string>
+ <!-- no translation found for dialog_title_to_allow_any_widget (1004820948962675644) -->
+ <skip />
+ <!-- no translation found for button_text_to_open_settings (1987729256950941628) -->
+ <skip />
+ <string name="work_mode_off_title" msgid="5794818421357835873">"¿Reactivar apps de trabajo?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Reactivar"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar de usuario"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menú desplegable"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Se eliminarán todas las aplicaciones y datos de esta sesión."</string>
@@ -581,26 +585,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Silenciar"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Enviar"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"No disponible (el tono está silenciado)"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Toca para activar el sonido."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Toca para poner el dispositivo en vibración. Los servicios de accesibilidad pueden silenciarse."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Toca para silenciar. Los servicios de accesibilidad pueden silenciarse."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Toca para activar la vibración."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Toca para silenciar."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Control de ruido"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Audio espacial"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Desactivado"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fijo"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Seguimiento de cabeza"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Toca para cambiar el modo de timbre"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"silenciar"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"dejar de silenciar"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrar"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Controles de volumen %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Las llamadas y las notificaciones sonarán (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Reproduciendo <xliff:g id="LABEL">%s</xliff:g> en"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Se reproducirá en"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Configurador de UI del sistema"</string>
@@ -742,12 +756,12 @@
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Hacer captura de pantalla"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Mostrar accesos directos"</string>
<string name="group_system_go_back" msgid="2730322046244918816">"Volver"</string>
- <string name="group_system_access_home_screen" msgid="4130366993484706483">"Ir a la pantalla de inicio"</string>
+ <string name="group_system_access_home_screen" msgid="4130366993484706483">"Ir a pantalla de inicio"</string>
<string name="group_system_overview_open_apps" msgid="5659958952937994104">"Ver aplicaciones recientes"</string>
- <string name="group_system_cycle_forward" msgid="5478663965957647805">"Desplazarse por las aplicaciones recientes (adelante)"</string>
- <string name="group_system_cycle_back" msgid="8194102916946802902">"Desplazarse por las aplicaciones recientes (atrás)"</string>
+ <string name="group_system_cycle_forward" msgid="5478663965957647805">"Desplazarse por aplicaciones recientes (adelante)"</string>
+ <string name="group_system_cycle_back" msgid="8194102916946802902">"Desplazarse por aplicaciones recientes (atrás)"</string>
<string name="group_system_access_all_apps_search" msgid="1553588630154197469">"Abrir lista de aplicaciones"</string>
- <string name="group_system_hide_reshow_taskbar" msgid="6108733797075862081">"Mostrar la barra de tareas"</string>
+ <string name="group_system_hide_reshow_taskbar" msgid="6108733797075862081">"Mostrar barra de tareas"</string>
<string name="group_system_access_system_settings" msgid="8731721963449070017">"Abrir ajustes"</string>
<string name="group_system_access_google_assistant" msgid="7210074957915968110">"Abrir el Asistente"</string>
<string name="group_system_lock_screen" msgid="7391191300363416543">"Pantalla de bloqueo"</string>
@@ -758,8 +772,8 @@
<string name="system_multitasking_full_screen" msgid="336048080383640562">"Cambiar de pantalla dividida a pantalla completa"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Con pantalla dividida: reemplazar una aplicación por otra"</string>
<string name="keyboard_shortcut_group_input" msgid="6888282716546625610">"Entrada"</string>
- <string name="input_switch_input_language_next" msgid="3782155659868227855">"Cambiar al siguiente idioma"</string>
- <string name="input_switch_input_language_previous" msgid="6043341362202336623">"Cambiar al idioma anterior"</string>
+ <string name="input_switch_input_language_next" msgid="3782155659868227855">"Cambiar a siguiente idioma"</string>
+ <string name="input_switch_input_language_previous" msgid="6043341362202336623">"Cambiar a idioma anterior"</string>
<string name="input_access_emoji" msgid="8105642858900406351">"Acceder a los emojis"</string>
<string name="input_access_voice_typing" msgid="7291201476395326141">"Acceder a Escribir por voz"</string>
<string name="keyboard_shortcut_group_applications" msgid="7386239431100651266">"Aplicaciones"</string>
@@ -1254,7 +1268,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Cámara bloqueada"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Cámara y micrófono bloqueados"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Micrófono bloqueado"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Modo Prioridad activado"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Se ha detectado la presencia de usuarios"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Configura la aplicación de notas predeterminada en Ajustes"</string>
<string name="install_app" msgid="5066668100199613936">"Instalar aplicación"</string>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index dfbb1ee562d1..04a2a9c95881 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"katkesta ühendus"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktiveeri"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Lülita automaatselt homme uuesti sisse"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Funktsioonid, nagu Kiirjagamine, Leia mu seade ja seadme asukoht, kasutavad Bluetoothi"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth lülitatakse sisse homme kell viis hommikul"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> akut"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Heli"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Peakomplekt"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Eemalda"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Lisa vidin"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Valmis"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Kas lubada lukustuskuval kõik vidinad?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Ava seaded"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Kas lõpetada töörakenduste peatamine?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Lõpeta peatamine"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Kasutaja vahetamine"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rippmenüü"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Seansi kõik rakendused ja andmed kustutatakse."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Vaigistatud"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Ülekandmine"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Pole saadaval, kuna helin on vaigistatud"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Puudutage vaigistuse tühistamiseks."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Puudutage värinarežiimi määramiseks. Juurdepääsetavuse teenused võidakse vaigistada."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Puudutage vaigistamiseks. Juurdepääsetavuse teenused võidakse vaigistada."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Puudutage vibreerimise määramiseks."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Puudutage vaigistamiseks."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Mürasummutus"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Ruumiline heli"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Väljas"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fikseeritud"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Pea jälgimine"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Puudutage telefonihelina režiimi muutmiseks"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"vaigistamine"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"vaigistuse tühistamine"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibreerimine"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Helitugevuse juhtnupud: %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Kõnede ja märguannete puhul telefon heliseb (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Esitamine jätkub seadmes <xliff:g id="LABEL">%s</xliff:g>"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Heli esitamine jätkub"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Süsteemi kasutajaliidese tuuner"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Suurema eraldusvõime saavutamiseks pöörake telefon ümber"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Volditava seadme lahtivoltimine"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Volditava seadme ümberpööramine"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"kokku volditud"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"lahti volditud"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Akutase on <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Ühendage elektronpliiats laadijaga"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"Elektronpliiatsi akutase on madal"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kaamera on blokeeritud"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kaamera ja mikrofon on blokeeritud"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon on blokeeritud"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioriteetne režiim on sisse lülitatud"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Tuvastati kasutaja kohalolu"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Määrake seadetes märkmete vaikerakendus."</string>
<string name="install_app" msgid="5066668100199613936">"Installi rakendus"</string>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index e41333c1baab..faffa937734a 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"deskonektatu"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktibatu"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Aktibatu automatikoki berriro bihar"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Quick Share, Bilatu nire gailua, gailuaren kokapena eta beste eginbide batzuek Bluetootha darabilte"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetootha bihar 05:00etan aktibatuko da"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audioa"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Entzungailua"</string>
@@ -439,6 +437,12 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Kendu"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Gehitu widget bat"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Eginda"</string>
+ <!-- no translation found for dialog_title_to_allow_any_widget (1004820948962675644) -->
+ <skip />
+ <!-- no translation found for button_text_to_open_settings (1987729256950941628) -->
+ <skip />
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Laneko aplikazioak berraktibatu?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Berraktibatu"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Aldatu erabiltzailea"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"zabaldu menua"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Saioko aplikazio eta datu guztiak ezabatuko dira."</string>
@@ -581,26 +585,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Ez jo tonua"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Igorri"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Ez dago erabilgarri, tonua desaktibatuta dagoelako"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Sakatu audioa aktibatzeko."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Sakatu dardara ezartzeko. Baliteke erabilerraztasun-eginbideen audioa desaktibatzea."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Sakatu audioa desaktibatzeko. Baliteke erabilerraztasun-eginbideen audioa desaktibatzea."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Sakatu hau dardara ezartzeko."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Sakatu hau audioa desaktibatzeko."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Zarata-murrizketa"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Audio espaziala"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Desaktibatuta"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Finkoa"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Buruaren jarraipena"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Sakatu tonu-jotzailearen modua aldatzeko"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"desaktibatu audioa"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"aktibatu audioa"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"dardara"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s gailuaren bolumena kontrolatzeko aukerak"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Tonuak jo egingo du deiak eta jakinarazpenak jasotzean (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> hemen erreproduzitzen:"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Audioa erreproduzitzen jarraituko du"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Sistemaren erabiltzaile-interfazearen konfiguratzailea"</string>
@@ -1254,7 +1268,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera blokeatuta dago"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera eta mikrofonoa blokeatuta daude"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofonoa blokeatuta dago"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Lehentasun modua aktibatuta dago"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Erabiltzailearen presentzia hauteman da"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Ezarri oharren aplikazio lehenetsia ezarpenetan"</string>
<string name="install_app" msgid="5066668100199613936">"Instalatu aplikazioa"</string>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 6b5c4ccaefe6..1e24158c671f 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"قطع اتصال"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"فعال کردن"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"فردا دوباره به‌طور خودکار روشن شود"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"ویژگی‌هایی مثل «هم‌رسانی سریع»، «پیدا کردن دستگاهم»، و مکان دستگاه از بلوتوث استفاده می‌کنند"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"بلوتوث فردا ۵ ق.ظ. روشن خواهد شد"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"شارژ باتری <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"صوت"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"هدست"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"برداشتن"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"افزودن ابزارک"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"تمام"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"هر نوع ابزارکی در صفحه قفل مجاز شود؟"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"باز کردن تنظیمات"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"مکث برنامه‌های کاری لغو شود؟"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"لغو مکث"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"تغییر کاربر"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"منوی پایین‌پر"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"همه برنامه‌ها و داده‌های این جلسه حذف خواهد شد."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"صامت"</string>
<string name="media_device_cast" msgid="4786241789687569892">"ارسال محتوا"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"دردسترس نیست، چون زنگ بی‌صدا شده است"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"‏%1$s. برای باصدا کردن ضربه بزنید."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"‏%1$s. برای تنظیم روی لرزش ضربه بزنید. ممکن است سرویس‌های دسترس‌پذیری بی‌صدا شوند."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"‏%1$s. برای صامت کردن ضربه بزنید. ممکن است سرویس‌های دسترس‌پذیری صامت شود."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"‏%1$s. برای تنظیم روی لرزش، ضربه بزنید."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"‏%1$s. برای صامت کردن ضربه بزنید."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"کنترل صدای محیط"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"صدای فضایی"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"خاموش"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"ثابت"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"ردیابی سر"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"برای تغییر حالت زنگ، ضربه بزنید"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"صامت کردن"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"باصدا کردن"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"لرزش"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"‏%s کنترل‌های میزان صدا"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"تماس‌ها و اعلان‌ها زنگ می‌خورند (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"درحال پخش <xliff:g id="LABEL">%s</xliff:g> در"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"صدا پخش می‌شود در"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"تنظیم‌کننده واسط کاربری سیستم"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"برای وضوح بیشتر، تلفن را بچرخانید"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"دستگاه تاشو درحال باز شدن"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"دستگاه تاشو درحال چرخش به اطراف"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"تاشده"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"تانشده"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> باتری باقی مانده است"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"قلم را به شارژر وصل کنید"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"باتری قلم ضعیف است"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"دوربین مسدود شده است"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"دوربین و میکروفون مسدود شده‌اند"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"میکروفون مسدود شده است"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"حالت اولویت روشن است"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"حضور کاربر شناسایی می‌شود"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"برنامه پیش‌فرض یادداشت را در «تنظیمات» تنظیم کنید"</string>
<string name="install_app" msgid="5066668100199613936">"نصب برنامه"</string>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 78f401fd9277..26d7bcb20f0d 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"katkaise yhteys"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivoi"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Laita automaattisesti päälle taas huomenna"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Ominaisuudet (esim. Quick Share ja Paikanna laite) ja laitteen sijainti käyttävät Bluetoothia"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth käynnistetään huomenna klo 5.00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Akun taso <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Ääni"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Headset"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Poista"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Lisää widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Valmis"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Sallitaanko kaikki widgetit lukitusnäytöllä?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Avaa asetukset"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Laita työsovellukset päälle?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Laita päälle"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Vaihda käyttäjää"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"alasvetovalikko"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Kaikki sovellukset ja tämän istunnon tiedot poistetaan."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Äänetön"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Striimaa"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Ei käytettävissä, soittoääni mykistetty"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Poista mykistys koskettamalla."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Siirry värinätilaan koskettamalla. Myös esteettömyyspalvelut saattavat mykistyä."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Mykistä koskettamalla. Myös esteettömyyspalvelut saattavat mykistyä."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Siirry värinätilaan napauttamalla."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Mykistä napauttamalla."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Melunvaimennus"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Tila-audio"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Pois päältä"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Kiinteä"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Pään seuranta"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Vaihda soittoäänen tilaa napauttamalla"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"mykistä"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"poista mykistys"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"värinä"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Äänenvoimakkuuden säädin: %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Puhelut ja ilmoitukset soivat (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Toistetaan: <xliff:g id="LABEL">%s</xliff:g>"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Audiota toistetaan laitteella"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Resoluutio on parempi, kun käännät puhelimen"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Taitettava laite taitetaan"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Taitettava laite käännetään ympäri"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"taitettu"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"taittamaton"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Akkua jäljellä <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Yhdistä näyttökynä laturiin"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"Näyttökynän akku vähissä"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera estetty"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera ja mikrofoni estetty"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofoni estetty"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Tärkeät-tila on päällä"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Käyttäjän läsnäolo havaittu"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Aseta oletusmuistiinpanosovellus Asetuksista"</string>
<string name="install_app" msgid="5066668100199613936">"Asenna sovellus"</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index 4c4913e4a959..d6aaf084080c 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"Déconnecter"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"Activer"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Activer le Bluetooth automatiquement demain"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Les fonctionnalités comme le Partage rapide, Localiser mon appareil et la position de l\'appareil utilisent le Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Le Bluetooth s\'activera demain à 5 h"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Pile : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Écouteurs"</string>
@@ -439,6 +437,12 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Retirer"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Ajouter un widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Terminé"</string>
+ <!-- no translation found for dialog_title_to_allow_any_widget (1004820948962675644) -->
+ <skip />
+ <!-- no translation found for button_text_to_open_settings (1987729256950941628) -->
+ <skip />
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Réactiver les applis pros?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Réactiver"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Changer d\'utilisateur"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu déroulant"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Toutes les applications et les données de cette session seront supprimées."</string>
@@ -581,26 +585,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Sonnerie désactivée"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Diffuser"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Inaccessible : sonnerie en sourdine"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Touchez pour réactiver le son."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Touchez pour activer les vibrations. Il est possible de couper le son des services d\'accessibilité."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Touchez pour couper le son. Il est possible de couper le son des services d\'accessibilité."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Touchez pour activer les vibrations."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Touchez pour couper le son."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Contrôle du bruit"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Son spatial"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Désactivé"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fixé"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Suivi de la tête"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Touchez pour modifier le mode de sonnerie"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"désactiver le son"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"réactiver le son"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibration"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Commandes de volume de %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Les appels et les notifications seront annoncés par une sonnerie (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Lecture de <xliff:g id="LABEL">%s</xliff:g> sur"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Lecture audio sur"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1254,7 +1268,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Appareil photo bloqué"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Appareil photo et microphone bloqués"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microphone bloqué"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Mode Priorité activé"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"La présence d\'un utilisateur est détectée"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Définir l\'application de prise de notes par défaut dans les Paramètres"</string>
<string name="install_app" msgid="5066668100199613936">"Installer l\'application"</string>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 5bd34d78eec6..7f6bddaa70a7 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"dissocier"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activer"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Réactiver automatiquement demain"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Certaines fonctionnalités telles que Quick Share, Localiser mon appareil ou encore la position de l\'appareil utilisent le Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Le Bluetooth sera activé demain à 5h00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> de batterie"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Casque"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Supprimer"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Ajouter un widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"OK"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Autoriser n\'importe quel widget sur l\'écran de verrouillage ?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Ouvrir les paramètres"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Réactiver les applis pro ?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Réactiver"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Changer d\'utilisateur"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu déroulant"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Toutes les applications et les données de cette session seront supprimées."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Couper le son"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Caster"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Indisponible, car la sonnerie est coupée"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Appuyez pour ne plus ignorer."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Appuyez pour mettre en mode vibreur. Vous pouvez ignorer les services d\'accessibilité."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Appuyez pour ignorer. Vous pouvez ignorer les services d\'accessibilité."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Appuyez pour mettre en mode vibreur."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Appuyez pour ignorer."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Contrôle du bruit"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Son spatial"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Désactivé"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Activé"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Suivi des mouvements de la tête"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Appuyez pour changer le mode de la sonnerie"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"couper le son"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"réactiver le son"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"activer le vibreur"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Commandes de volume %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Les appels et les notifications sonneront (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Diffusion de <xliff:g id="LABEL">%s</xliff:g> sur"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"L\'audio se mettra en marche"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -744,7 +756,7 @@
<string name="group_system_go_back" msgid="2730322046244918816">"Retour"</string>
<string name="group_system_access_home_screen" msgid="4130366993484706483">"Accéder à l\'écran d\'accueil"</string>
<string name="group_system_overview_open_apps" msgid="5659958952937994104">"Afficher les applis récentes"</string>
- <string name="group_system_cycle_forward" msgid="5478663965957647805">"Aller vers les applications récentes"</string>
+ <string name="group_system_cycle_forward" msgid="5478663965957647805">"Avancer dans les applications récentes"</string>
<string name="group_system_cycle_back" msgid="8194102916946802902">"Revenir sur les applications récentes"</string>
<string name="group_system_access_all_apps_search" msgid="1553588630154197469">"Ouvrir la liste d\'applications"</string>
<string name="group_system_hide_reshow_taskbar" msgid="6108733797075862081">"Afficher la barre des tâches"</string>
@@ -759,7 +771,7 @@
<string name="system_multitasking_replace" msgid="7410071959803642125">"En mode écran partagé : Remplacer une appli par une autre"</string>
<string name="keyboard_shortcut_group_input" msgid="6888282716546625610">"Saisie"</string>
<string name="input_switch_input_language_next" msgid="3782155659868227855">"Passer à la langue suivante"</string>
- <string name="input_switch_input_language_previous" msgid="6043341362202336623">"Passer à la langue précédente"</string>
+ <string name="input_switch_input_language_previous" msgid="6043341362202336623">"Revenir à la langue précédente"</string>
<string name="input_access_emoji" msgid="8105642858900406351">"Accéder aux emoji"</string>
<string name="input_access_voice_typing" msgid="7291201476395326141">"Accéder à la saisie vocale"</string>
<string name="keyboard_shortcut_group_applications" msgid="7386239431100651266">"Applications"</string>
@@ -900,7 +912,7 @@
<string name="mobile_data_disable_message" msgid="8604966027899770415">"Vous n\'aurez pas accès aux données mobiles ni à Internet via <xliff:g id="CARRIER">%s</xliff:g>. Vous ne pourrez accéder à Internet que par Wi-Fi."</string>
<string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"votre opérateur"</string>
<string name="auto_data_switch_disable_title" msgid="5146527155665190652">"Rebasculer sur <xliff:g id="CARRIER">%s</xliff:g> ?"</string>
- <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"Il n\'y aura pas de basculement automatique entre les données mobile selon la disponibilité"</string>
+ <string name="auto_data_switch_disable_message" msgid="5885533647399535852">"Il n\'y aura pas de basculement automatique entre les données mobiles selon la disponibilité"</string>
<string name="auto_data_switch_dialog_negative_button" msgid="2370876875999891444">"Non, merci"</string>
<string name="auto_data_switch_dialog_positive_button" msgid="8531782041263087564">"Oui, rebasculer"</string>
<string name="touch_filtered_warning" msgid="8119511393338714836">"L\'application Paramètres ne peut pas valider votre réponse, car une application masque la demande d\'autorisation."</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Caméra bloquée"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Caméra et micro bloqués"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Micro bloqué"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Mode Prioritaire activé"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"La présence de l\'utilisateur est détectée"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Définir une appli de notes par défaut dans les paramètres"</string>
<string name="install_app" msgid="5066668100199613936">"Installer l\'appli"</string>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index e694d14086a2..97980e5fb052 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"desconectar"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activar"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Volver activar automaticamente mañá"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"As funcións como Quick Share, Localizar o meu dispositivo ou a de localización do dispositivo utilizan o Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"O Bluetooth activarase mañá ás 05:00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> de batería"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Auriculares"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Quitar"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Engadir widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Feito"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Queres permitir calquera widget na pantalla de bloqueo?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Abrir configuración"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Reactivar apps do traballo?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Reactivar"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar usuario"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menú despregable"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Eliminaranse todas as aplicacións e datos desta sesión."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Silenciar"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Emitir"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Non dispoñible (o son está silenciado)"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Toca para activar o son."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Toca para establecer a vibración. Pódense silenciar os servizos de accesibilidade."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Toca para silenciar. Pódense silenciar os servizos de accesibilidade."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Toca para establecer a vibración."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Toca para silenciar."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Control de ruído"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Audio espacial"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Desactivar"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fixo"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Seguimento da cabeza"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Toca para cambiar o modo de timbre"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"silenciar"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"activar o son"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrar"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Controis de volume de %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"As chamadas e as notificacións soarán (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Reproducindo <xliff:g id="LABEL">%s</xliff:g> en"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Audio reproducido en"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Configurador da IU do sistema"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"A cámara está bloqueada"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"A cámara e o micrófono están bloqueados"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"O micrófono está bloqueado"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"O modo de prioridade está activado"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Detectouse a presenza de usuarios"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Establece a aplicación de notas predeterminada en Configuración"</string>
<string name="install_app" msgid="5066668100199613936">"Instalar aplicación"</string>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index 5099773c360a..e47b3243ee4b 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ડિસ્કનેક્ટ કરો"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"સક્રિય કરો"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"આવતીકાલે ફરીથી ઑટોમૅટિક રીતે ચાલુ કરો"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"ક્વિક શેર, Find My Device અને ડિવાઇસના લોકેશન જેવી સુવિધાઓ બ્લૂટૂથનો ઉપયોગ કરે છે"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"બ્લૂટૂથ આવતીકાલે સવારે 5 વાગ્યે ચાલુ થશે"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> બૅટરી"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"ઑડિયો"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"હૅડસેટ"</string>
@@ -439,6 +437,12 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"કાઢી નાખો"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"વિજેટ ઉમેરો"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"થઈ ગયું"</string>
+ <!-- no translation found for dialog_title_to_allow_any_widget (1004820948962675644) -->
+ <skip />
+ <!-- no translation found for button_text_to_open_settings (1987729256950941628) -->
+ <skip />
+ <string name="work_mode_off_title" msgid="5794818421357835873">"ઑફિસની થોભાવેલી ઍપ ચાલુ કરીએ?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"ફરી ચાલુ કરો"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"વપરાશકર્તા સ્વિચ કરો"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"પુલડાઉન મેનૂ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"આ સત્રમાંની તમામ ઍપ અને ડેટા કાઢી નાખવામાં આવશે."</string>
@@ -581,26 +585,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"મ્યૂટ કરો"</string>
<string name="media_device_cast" msgid="4786241789687569892">"કાસ્ટ કરો"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"રિંગ મ્યૂટ કરી હોવાના કારણે અનુપલબ્ધ છે"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. અનમ્યૂટ કરવા માટે ટૅપ કરો."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. વાઇબ્રેટ પર સેટ કરવા માટે ટૅપ કરો. ઍક્સેસિબિલિટી સેવાઓ મ્યૂટ કરવામાં આવી શકે છે."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. મ્યૂટ કરવા માટે ટૅપ કરો. ઍક્સેસિબિલિટી સેવાઓ મ્યૂટ કરવામાં આવી શકે છે."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. કંપન પર સેટ કરવા માટે ટૅપ કરો."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. મ્યૂટ કરવા માટે ટૅપ કરો."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"અવાજનું નિયંત્રણ"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"સ્પેશલ ઑડિયો"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"બંધ કરો"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"ફિક્સ્ડ"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"હેડ ટ્રૅકિંગ"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"રિંગર મોડ બદલવા માટે ટૅપ કરો"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"મ્યૂટ કરો"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"અનમ્યૂટ કરો"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"વાઇબ્રેટ"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s વૉલ્યૂમ નિયંત્રણો"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"કૉલ અને નોટિફિકેશનની રિંગ (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>) પર વાગશે"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> વગાડી રહ્યાં છીએ"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"ઑડિયો આની પર વાગશે"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"સિસ્ટમ UI ટ્યૂનર"</string>
@@ -1236,12 +1250,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"વધુ રિઝોલ્યુશન માટે, ફોનને ફ્લિપ કરો"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ફોલ્ડ કરી શકાય એવું ડિવાઇસ અનફોલ્ડ કરવામાં આવી રહ્યું છે"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ફોલ્ડ કરી શકાય એવું ડિવાઇસ ફ્લિપ કરવામાં આવી રહ્યું છે"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ફોલ્ડ કરેલું"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"અનફોલ્ડ કરેલું"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> બૅટરી બાકી છે"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"તમારા સ્ટાઇલસને ચાર્જર સાથે કનેક્ટ કરો"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"સ્ટાઇલસની બૅટરીમાં ચાર્જ ઓછો છે"</string>
@@ -1257,7 +1268,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"કૅમેરા બ્લૉક કરેલો છે"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"કૅમેરા અને માઇક્રોફોન બ્લૉક કરેલા છે"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"માઇક્રોફોન બ્લૉક કરેલો છે"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"પ્રાધાન્યતા મોડ ચાલુ છે"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"વપરાશકર્તાની હાજરીની ભાળ મળી છે"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"સેટિંગમાં નોંધની ડિફૉલ્ટ ઍપ સેટ કરો"</string>
<string name="install_app" msgid="5066668100199613936">"ઍપ ઇન્સ્ટૉલ કરો"</string>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index ea4ccc02a947..c36b6f913de4 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -31,7 +31,7 @@
<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="standard_battery_saver_text" msgid="6855876746552374119">"स्टैंडर्ड मोड"</string>
+ <string name="standard_battery_saver_text" msgid="6855876746552374119">"स्टैंडर्ड"</string>
<string name="extreme_battery_saver_text" msgid="8455810156739865335">"एक्सट्रीम"</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>
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"डिसकनेक्ट करें"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"चालू करें"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"कल फिर से अपने-आप चालू हो जाएगा"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"क्विक शेयर, Find My Device, और डिवाइस की जगह की जानकारी का पता लगाने जैसी सुविधाएं, ब्लूटूथ का इस्तेमाल करती हैं"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"कल सुबह 5 बजे ब्लूटूथ चालू हो जाएगा"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> बैटरी"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"ऑडियो"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"हेडसेट"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"हटाएं"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"विजेट जोड़ें"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"हो गया"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"लॉक स्क्रीन पर किसी भी विजेट को अनुमति देनी है?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"सेटिंग खोलें"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"वर्क ऐप्लिकेशन चालू करने हैं?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"चालू करें"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"उपयोगकर्ता बदलें"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"पुलडाउन मेन्यू"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"इस सेशन के सभी ऐप्लिकेशन और डेटा को हटा दिया जाएगा."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"आवाज़ बंद है"</string>
<string name="media_device_cast" msgid="4786241789687569892">"कास्ट करें"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"रिंग म्यूट होने से आवाज़ नहीं सुनाई दी"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. अनम्यूट करने के लिए टैप करें."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. कंपन पर सेट करने के लिए टैप करें. सुलभता सेवाएं म्यूट हो सकती हैं."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. म्यूट करने के लिए टैप करें. सुलभता सेवाएं म्यूट हो सकती हैं."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. कंपन (वाइब्रेशन) पर सेट करने के लिए छूएं."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. म्यूट करने के लिए टैप करें."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"शोर को कंट्रोल करने की सुविधा"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"स्पेशल ऑडियो"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"बंद करें"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"चालू करें"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"सिर हिलना ट्रैक करें"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"रिंगर मोड बदलने के लिए टैप करें"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"म्यूट करें"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"अनम्यूट करें"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"वाइब्रेशन की सुविधा चालू करें"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s की आवाज़ कम या ज़्यादा करने की सुविधा"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"कॉल और सूचनाएं आने पर घंटी बजेगी (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> को चलाया जा रहा है"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"ऑडियो इसमें चलेगा"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"सिस्टम यूज़र इंटरफ़ेस (यूआई) ट्यूनर"</string>
@@ -738,28 +750,28 @@
<string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"इनपुट के लिए शॉर्टकट दिखाए जा रहे हैं"</string>
<string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"ऐसे शॉर्टकट दिखाए जा रहे हैं जिनसे ऐप्लिकेशन खोले जा सकें"</string>
<string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"मौजूदा ऐप्लिकेशन के लिए शॉर्टकट दिखाए जा रहे हैं"</string>
- <string name="group_system_access_notification_shade" msgid="1619028907006553677">"सूचनाएं देखें"</string>
- <string name="group_system_full_screenshot" msgid="5742204844232667785">"स्क्रीनशॉट लें"</string>
- <string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"शॉर्टकट दिखाएं"</string>
- <string name="group_system_go_back" msgid="2730322046244918816">"वापस जाएं"</string>
- <string name="group_system_access_home_screen" msgid="4130366993484706483">"होम स्क्रीन पर जाएं"</string>
- <string name="group_system_overview_open_apps" msgid="5659958952937994104">"हाल ही में इस्तेमाल किए गए ऐप्लिकेशन देखें"</string>
- <string name="group_system_cycle_forward" msgid="5478663965957647805">"हाल ही में इस्तेमाल किए गए ऐप्लिकेशन के अगले पेज पर जाएं"</string>
- <string name="group_system_cycle_back" msgid="8194102916946802902">"हाल ही में इस्तेमाल किए गए ऐप्लिकेशन के पिछले पेज पर जाएं"</string>
- <string name="group_system_access_all_apps_search" msgid="1553588630154197469">"ऐप्लिकेशन की सूची खोलें"</string>
- <string name="group_system_hide_reshow_taskbar" msgid="6108733797075862081">"टास्कबार दिखाएं"</string>
- <string name="group_system_access_system_settings" msgid="8731721963449070017">"सेटिंग खोलें"</string>
- <string name="group_system_access_google_assistant" msgid="7210074957915968110">"Google Assistant खोलें"</string>
+ <string name="group_system_access_notification_shade" msgid="1619028907006553677">"सूचनाएं देखने के लिए"</string>
+ <string name="group_system_full_screenshot" msgid="5742204844232667785">"स्क्रीनशॉट लेने के लिए"</string>
+ <string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"शॉर्टकट दिखाने के लिए"</string>
+ <string name="group_system_go_back" msgid="2730322046244918816">"वापस पीछे जाने के लिए"</string>
+ <string name="group_system_access_home_screen" msgid="4130366993484706483">"होम स्क्रीन पर जाने के लिए"</string>
+ <string name="group_system_overview_open_apps" msgid="5659958952937994104">"हाल ही में इस्तेमाल किए गए ऐप्लिकेशन देखने के लिए"</string>
+ <string name="group_system_cycle_forward" msgid="5478663965957647805">"हाल ही में इस्तेमाल किए गए ऐप्लिकेशन के अगले पेज पर जाने के लिए"</string>
+ <string name="group_system_cycle_back" msgid="8194102916946802902">"हाल ही में इस्तेमाल किए गए ऐप्लिकेशन के पिछले पेज पर जाने के लिए"</string>
+ <string name="group_system_access_all_apps_search" msgid="1553588630154197469">"ऐप्लिकेशन की सूची खोलने के लिए"</string>
+ <string name="group_system_hide_reshow_taskbar" msgid="6108733797075862081">"टास्कबार दिखाने के लिए"</string>
+ <string name="group_system_access_system_settings" msgid="8731721963449070017">"सेटिंग खोलने के लिए"</string>
+ <string name="group_system_access_google_assistant" msgid="7210074957915968110">"Google Assistant खोलने के लिए"</string>
<string name="group_system_lock_screen" msgid="7391191300363416543">"लॉक स्क्रीन"</string>
<string name="group_system_quick_memo" msgid="3764560265935722903">"नोट करें"</string>
<string name="keyboard_shortcut_group_system_multitasking" msgid="1065232949510862593">"सिस्टम मल्टीटास्किंग"</string>
<string name="system_multitasking_rhs" msgid="2454557648974553729">"स्प्लिट स्क्रीन का इस्तेमाल करके, मौजूदा ऐप्लिकेशन को दाईं ओर ले जाएं"</string>
<string name="system_multitasking_lhs" msgid="3516599774920979402">"स्प्लिट स्क्रीन का इस्तेमाल करके, मौजूदा ऐप्लिकेशन को बाईं ओर ले जाएं"</string>
- <string name="system_multitasking_full_screen" msgid="336048080383640562">"स्प्लिट स्क्रीन से फ़ुल स्क्रीन मोड पर स्विच करें"</string>
+ <string name="system_multitasking_full_screen" msgid="336048080383640562">"स्प्लिट स्क्रीन से फ़ुल स्क्रीन मोड पर स्विच करने के लिए"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"स्प्लिट स्क्रीन के दौरान: एक ऐप्लिकेशन को दूसरे ऐप्लिकेशन से बदलें"</string>
<string name="keyboard_shortcut_group_input" msgid="6888282716546625610">"इनपुट"</string>
- <string name="input_switch_input_language_next" msgid="3782155659868227855">"अगली भाषा पर स्विच करें"</string>
- <string name="input_switch_input_language_previous" msgid="6043341362202336623">"इस्तेमाल की गई पिछली भाषा पर स्विच करें"</string>
+ <string name="input_switch_input_language_next" msgid="3782155659868227855">"अगली भाषा पर स्विच करने के लिए"</string>
+ <string name="input_switch_input_language_previous" msgid="6043341362202336623">"पिछली भाषा पर स्विच करने के लिए"</string>
<string name="input_access_emoji" msgid="8105642858900406351">"इमोजी ऐक्सेस करें"</string>
<string name="input_access_voice_typing" msgid="7291201476395326141">"बोली को लिखाई में बदलने की सुविधा ऐक्सेस करें"</string>
<string name="keyboard_shortcut_group_applications" msgid="7386239431100651266">"ऐप्लिकेशन"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"कैमरे का ऐक्सेस नहीं है"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"कैमरे और माइक्रोफ़ोन का ऐक्सेस नहीं है"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"माइक्रोफ़ोन का ऐक्सेस नहीं है"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"प्राथमिकता मोड चालू है"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"उपयोगकर्ता की मौजूदगी का पता लगाया गया"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"सेटिंग में जाकर, नोट लेने की सुविधा देने वाले ऐप्लिकेशन को डिफ़ॉल्ट के तौर पर सेट करें"</string>
<string name="install_app" msgid="5066668100199613936">"ऐप्लिकेशन इंस्टॉल करें"</string>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index a6cfeb9f8d0a..2d44e1c828b9 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -76,7 +76,7 @@
<string name="remote_input_image_insertion_text" msgid="4850791636452521123">"šalje sliku"</string>
<string name="screenshot_saving_title" msgid="2298349784913287333">"Spremanje snimke zaslona..."</string>
<string name="screenshot_saving_work_profile_title" msgid="5332829607308450880">"Spremanje snimke zaslona na poslovni profil…"</string>
- <string name="screenshot_saved_title" msgid="8893267638659083153">"Snimka zaslona spremljena"</string>
+ <string name="screenshot_saved_title" msgid="8893267638659083153">"Snimka zaslona je spremljena"</string>
<string name="screenshot_failed_title" msgid="3259148215671936891">"Snimka zaslona nije spremljena"</string>
<string name="screenshot_failed_external_display_indication" msgid="6555673132061101936">"Vanjski prikaz"</string>
<string name="screenshot_failed_to_save_user_locked_text" msgid="6156607948256936920">"Uređaj mora biti otključan da bi se snimka zaslona mogla spremiti"</string>
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"prekini vezu"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktiviraj"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Automatski ponovo uključi sutra"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Značajke kao što su brzo dijeljenje, Pronađi moj uređaj i lokacija uređaja upotrebljavaju Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth će se uključiti sutra u 5:00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> baterije"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Slušalice"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Ukloni"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Dodaj widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Gotovo"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Želite li dopustiti bilo koji widget na zaključanom zaslonu?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Otvori postavke"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Pokrenuti poslovne aplikacije?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Ponovno pokreni"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Promjena korisnika"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"padajući izbornik"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Izbrisat će se sve aplikacije i podaci u ovoj sesiji."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Zvuk je isključen"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Emitiraj"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Nedostupno jer je zvono utišano"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Dodirnite da biste uključili zvuk."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Dodirnite da biste postavili na vibraciju. Usluge pristupačnosti možda neće imati zvuk."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Dodirnite da biste isključili zvuk. Usluge pristupačnosti možda neće imati zvuk."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Dodirnite da biste postavili na vibraciju."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Dodirnite da biste isključili zvuk."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Kontrola buke"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Prostorni zvuk"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Isključeno"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Otklonjeno"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Praćenje glave"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Dodirnite da biste promijenili način softvera zvona"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"isključivanje zvuka"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"uključivanje zvuka"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibriranje"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Kontrole glasnoće – %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Telefon će zvoniti za pozive i obavijesti (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Reproducira se – <xliff:g id="LABEL">%s</xliff:g>"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Zvuk će se reproducirati"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Ugađanje korisničkog sučelja sustava"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera je blokirana"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Blokirani su kamera i mikrofon"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon je blokiran"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Uključen je prioritetni način rada"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Otkrivena je prisutnost korisnika"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Postavite zadanu aplikaciju za bilješke u postavkama"</string>
<string name="install_app" msgid="5066668100199613936">"Instalacija"</string>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 7a3af4fb3da4..98565c0cd99a 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"leválasztás"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktiválás"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Automatikus visszakapcsolás holnap"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Az olyan funkciók, mint a Quick Share, a Készülékkereső és az eszköz helyadatai Bluetootht használnak"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"A Bluetooth bekapcsol holnap reggel 5-kor"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Akkumulátor: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Hang"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Headset"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Eltávolítás"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Modul hozzáadása"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Kész"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Minden modult engedélyez a lezárási képernyőn?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Beállítások megnyitása"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Feloldja a munkahelyi appokat?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Szüneteltetés feloldása"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Felhasználóváltás"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"lehúzható menü"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"A munkamenetben található összes alkalmazás és adat törlődni fog."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Néma"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Átküldés"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Nem lehetséges, a csörgés le van némítva"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Koppintson a némítás megszüntetéséhez."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Koppintson a rezgés beállításához. Előfordulhat, hogy a kisegítő lehetőségek szolgáltatásai le vannak némítva."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Koppintson a némításhoz. Előfordulhat, hogy a kisegítő lehetőségek szolgáltatásai le vannak némítva."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Koppintson a rezgés beállításához."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Koppintson a némításhoz."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Zajszabályozás"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Térbeli hangzás"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Ki"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Rögzített"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Fejkövetés"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Koppintson a csengés módjának módosításához"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"némítás"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"némítás feloldása"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"rezgés"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s hangerőszabályzók"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"A hívásoknál és értesítéseknél csörög a telefon (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> lejátszása itt:"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Hang lejátszása itt:"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Kezelőfelület-hangoló"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera letiltva"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera és mikrofon letiltva"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon letiltva"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioritás mód bekapcsolva"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Felhasználói jelenlét észlelve"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Állítson be alapértelmezett jegyzetkészítő alkalmazást a Beállításokban"</string>
<string name="install_app" msgid="5066668100199613936">"Alkalmazás telepítése"</string>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index d3b50d708032..5d88e0d1a731 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"անջատել"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ակտիվացնել"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Վաղը նորից ավտոմատ միացնել"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Գործառույթները, ինչպիսիք են Quick Share-ը, «Գտնել իմ սարքը» գործառույթը և սարքի տեղորոշումը, օգտագործում են Bluetooth-ը"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth-ը կմիանա վաղը՝ ժամը 05։00-ին"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Մարտկոցի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Աուդիո"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Ականջակալ"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Հեռացնել"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Ավելացնել վիջեթ"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Պատրաստ է"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Թույլատրե՞լ վիջեթների ցուցադրումը կողպէկրանին"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Բացել կարգավորումները"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Վերսկսե՞լ աշխ. հավելվածները"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Վերսկսել"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Անջատել օգտվողին"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"իջնող ընտրացանկ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Այս աշխատաշրջանի բոլոր հավելվածներն ու տվյալները կջնջվեն:"</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Անձայն"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Հեռարձակում"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Հասանելի չէ, երբ զանգի ձայնն անջատված է"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s: Հպեք՝ ձայնը միացնելու համար:"</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s: Հպեք՝ թրթռումը միացնելու համար: Մատչելիության ծառայությունների ձայնը կարող է անջատվել:"</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s: Հպեք՝ ձայնն անջատելու համար: Մատչելիության ծառայությունների ձայնը կարող է անջատվել:"</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s։ Հպեք՝ թրթռոցը միացնելու համար։"</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s։ Հպեք՝ ձայնը անջատելու համար։"</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Աղմուկի կառավարում"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Տարածական հնչողություն"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Անջատել"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Ֆիքսված"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Գլխի շարժումների հետագծում"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Հպեք՝ զանգակի ռեժիմը փոխելու համար"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"անջատել ձայնը"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"միացնել ձայնը"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"միացնել թրթռոցը"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Ձայնի ուժգնության կառավարներ` %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Զանգերի և ծանուցումների համար հեռախոսի ձայնը միացված է (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g>. նվագարկվում է"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Աուդիոն կնվագարկվի"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Համակարգի ՕՄ-ի կարգավորիչ"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Ավելի մեծ լուծաչափի համար շրջեք հեռախոսը"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Ծալովի սարք՝ բացված վիճակում"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Ծալովի սարք՝ շրջված վիճակում"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ծալված"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"բացված"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Մարտկոցի լիցքը՝ <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Ձեր ստիլուսը միացրեք լիցքավորիչի"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"Ստիլուսի մարտկոցի լիցքի ցածր մակարդակ"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Տեսախցիկն արգելափակված է"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Տեսախցիկն ու խոսափողը արգելափակված են"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Խոսափողն արգելափակված է"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Առաջնահերթության ռեժիմը միացված է"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Հայտնաբերվել է օգտատեր"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Կարգավորեք նշումների կանխադրված հավելված Կարգավորումներում"</string>
<string name="install_app" msgid="5066668100199613936">"Տեղադրել հավելվածը"</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 3e34e5f642e4..5c3eb5313e1e 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -32,7 +32,7 @@
<string name="battery_saver_start_action" msgid="8353766979886287140">"Aktifkan"</string>
<string name="battery_saver_dismiss_action" msgid="7199342621040014738">"Lain kali"</string>
<string name="standard_battery_saver_text" msgid="6855876746552374119">"Standar"</string>
- <string name="extreme_battery_saver_text" msgid="8455810156739865335">"Ekstrem"</string>
+ <string name="extreme_battery_saver_text" msgid="8455810156739865335">"Super"</string>
<string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"Putar layar otomatis"</string>
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"Izinkan <xliff:g id="APPLICATION">%1$s</xliff:g> mengakses <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"Izinkan <xliff:g id="APPLICATION">%1$s</xliff:g> mengakses <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nAplikasi ini belum diberi izin merekam, tetapi dapat merekam audio melalui perangkat USB ini."</string>
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"putuskan koneksi"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktifkan"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Otomatis aktifkan lagi besok"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Fitur seperti Quick Share, Temukan Perangkat Saya, dan lokasi perangkat menggunakan Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth akan diaktifkan besok pada pukul 05.00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Baterai <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Headset"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Hapus"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Tambahkan widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Selesai"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Izinkan widget di layar kunci?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Buka setelan"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Batalkan jeda aplikasi kerja?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Batalkan jeda"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Beralih pengguna"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu pulldown"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Semua aplikasi dan data dalam sesi ini akan dihapus."</string>
@@ -544,7 +546,7 @@
<string name="volume_odi_captions_content_description" msgid="4172765742046013630">"Overlay teks"</string>
<string name="volume_odi_captions_hint_enable" msgid="2073091194012843195">"aktifkan"</string>
<string name="volume_odi_captions_hint_disable" msgid="2518846326748183407">"nonaktifkan"</string>
- <string name="sound_settings" msgid="8874581353127418308">"Suara &amp; getaran"</string>
+ <string name="sound_settings" msgid="8874581353127418308">"Suara dan getaran"</string>
<string name="volume_panel_dialog_settings_button" msgid="2513228491513390310">"Setelan"</string>
<string name="volume_panel_captioning_title" msgid="5984936949147684357">"Teks Otomatis"</string>
<string name="csd_lowered_title" product="default" msgid="2464112924151691129">"Volume diturunkan ke level yang lebih aman"</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Nonaktifkan"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Transmisi"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Tidak tersedia karena volume dering dibisukan"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Ketuk untuk menyuarakan."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Ketuk untuk menyetel agar bergetar. Layanan aksesibilitas mungkin dibisukan."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Ketuk untuk membisukan. Layanan aksesibilitas mungkin dibisukan."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Ketuk untuk menyetel agar bergetar."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Ketuk untuk menonaktifkan."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Kontrol Bising"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Audio Spasial"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Nonaktif"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Tetap"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Pelacakan Gerak Kepala"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Ketuk untuk mengubah mode pendering"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"Tanpa suara"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"aktifkan"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"getar"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s kontrol volume"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Panggilan telepon dan notifikasi akan berdering (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Memutar <xliff:g id="LABEL">%s</xliff:g> di"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Audio akan diputar di"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Penyetel Antarmuka Pengguna Sistem"</string>
@@ -995,9 +1007,9 @@
<string name="controls_panel_remove_app_authorization" msgid="5920442084735364674">"Hapus kontrol untuk <xliff:g id="APPNAME">%s</xliff:g>?"</string>
<string name="accessibility_control_favorite" msgid="8694362691985545985">"Difavoritkan"</string>
<string name="accessibility_control_favorite_position" msgid="54220258048929221">"Difavoritkan, posisi <xliff:g id="NUMBER">%d</xliff:g>"</string>
- <string name="accessibility_control_not_favorite" msgid="1291760269563092359">"Batal difavoritkan"</string>
+ <string name="accessibility_control_not_favorite" msgid="1291760269563092359">"Tidak difavoritkan"</string>
<string name="accessibility_control_change_favorite" msgid="2943178027582253261">"favorit"</string>
- <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"batal favoritkan"</string>
+ <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"tidak memfavoritkan"</string>
<string name="accessibility_control_move" msgid="8980344493796647792">"Pindah ke posisi <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrol"</string>
<string name="controls_favorite_subtitle" msgid="5818709315630850796">"Pilih kontrol perangkat untuk mengakses dengan cepat"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera diblokir"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera dan mikrofon diblokir"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon diblokir"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Mode prioritas diaktifkan"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Kehadiran pengguna terdeteksi"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Setel aplikasi catatan default di Setelan"</string>
<string name="install_app" msgid="5066668100199613936">"Instal aplikasi"</string>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index a707d364ee43..ea0726b21f0b 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"aftengja"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"virkja"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Kveikja sjálfkrafa aftur á morgun"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Eiginleikar á borð við flýtideilingu, „Finna tækið mitt“ og staðsetningu tækis nota Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Kveikt verður á Bluetooth á morgun kl. 05:00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> rafhlöðuhleðsla"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Hljóð"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Höfuðtól"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Fjarlægja"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Bæta græju við"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Lokið"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Leyfa allar græjur á lásskjá?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Opna stillingar"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Ljúka hléi vinnuforrita?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Ljúka hléi"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Skipta um notanda"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"Fellivalmynd"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Öllum forritum og gögnum í þessari lotu verður eytt."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Hljóð af"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Senda út"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Ekki í boði þar sem hringing er þögguð"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Ýttu til að hætta að þagga."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Ýttu til að stilla á titring. Hugsanlega verður slökkt á hljóði aðgengisþjónustu."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Ýttu til að þagga. Hugsanlega verður slökkt á hljóði aðgengisþjónustu."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Ýttu til að stilla á titring."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Ýttu til að þagga."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Hávaðavörn"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Rýmishljóð"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Slökkt"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fast"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Rakning höfuðhreyfinga"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Ýta til að skipta um hringjarastillingu"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"þagga"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"hætta að þagga"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"titringur"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s stýringar á hljóstyrk"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Símhringingar og tilkynningar heyrast (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Í spilun í <xliff:g id="LABEL">%s</xliff:g>"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Hljóð heldur áfram að spilast"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Fínstillingar kerfisviðmóts"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Lokað fyrir myndavél"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Lokað fyrir myndavél og hljóðnema"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Lokað fyrir hljóðnema"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Kveikt er á forgangsstillingu"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Viðvera notanda greindist"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Stilltu sjálfgefið glósuforrit í stillingunum"</string>
<string name="install_app" msgid="5066668100199613936">"Setja upp forrit"</string>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index dc957175e749..b2eb5f9771d8 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"disconnetti"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"attiva"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Riattiva automaticamente domani"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Funzionalità come Quick Share, Trova il mio dispositivo e la posizione del dispositivo usano il Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Il Bluetooth verrà attivato domani alle 05:00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Batteria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Auricolare"</string>
@@ -285,7 +283,7 @@
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rotazione automatica dello schermo"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Geolocalizzazione"</string>
<string name="quick_settings_screensaver_label" msgid="1495003469366524120">"Salvaschermo"</string>
- <string name="quick_settings_camera_label" msgid="5612076679385269339">"Accesso alla videocamera"</string>
+ <string name="quick_settings_camera_label" msgid="5612076679385269339">"Accesso alla fotocamera"</string>
<string name="quick_settings_mic_label" msgid="8392773746295266375">"Accesso al microfono"</string>
<string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"Disponibile"</string>
<string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"Bloccato"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Rimuovi"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Aggiungi widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Fine"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Consentire tutti i widget nella schermata di blocco?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Apri impostazioni"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Riattivare le app di lavoro?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Riattiva"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambio utente"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu a discesa"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Tutte le app e i dati di questa sessione verranno eliminati."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Silenzia"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Trasmissione"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Non disponibile con l\'audio disattivato"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Tocca per riattivare l\'audio."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Tocca per attivare la vibrazione. L\'audio dei servizi di accessibilità può essere disattivato."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Tocca per disattivare l\'audio. L\'audio dei servizi di accessibilità può essere disattivato."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Tocca per attivare la vibrazione."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Tocca per disattivare l\'audio."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Controllo del rumore"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Audio spaziale"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Off"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fisso"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Rilev. movim. testa"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Tocca per cambiare la modalità della suoneria"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"silenzia"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"riattiva l\'audio"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrazione"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Controlli del volume %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"La suoneria sarà attiva per chiamate e notifiche (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> in riproduzione su"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Audio riprodotto su:"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Ottimizzatore UI di sistema"</string>
@@ -758,7 +770,7 @@
<string name="system_multitasking_full_screen" msgid="336048080383640562">"Passa da schermo diviso a schermo intero"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Con lo schermo diviso: sostituisci un\'app con un\'altra"</string>
<string name="keyboard_shortcut_group_input" msgid="6888282716546625610">"Inserimento"</string>
- <string name="input_switch_input_language_next" msgid="3782155659868227855">"Passa alla prossima lingua"</string>
+ <string name="input_switch_input_language_next" msgid="3782155659868227855">"Passa alla lingua successiva"</string>
<string name="input_switch_input_language_previous" msgid="6043341362202336623">"Passa alla lingua precedente"</string>
<string name="input_access_emoji" msgid="8105642858900406351">"Accedi all\'emoji"</string>
<string name="input_access_voice_typing" msgid="7291201476395326141">"Accedi alla digitazione vocale"</string>
@@ -961,7 +973,7 @@
<string name="accessibility_magnification_right_handle" msgid="9055988237319397605">"Punto di manipolazione destro"</string>
<string name="accessibility_magnification_bottom_handle" msgid="6531646968813821258">"Punto di manipolazione inferiore"</string>
<string name="accessibility_magnification_settings_panel_description" msgid="8174187340747846953">"Impostazioni di ingrandimento"</string>
- <string name="accessibility_magnifier_size" msgid="3038755600030422334">"Dimensione dell\'ingrandimento"</string>
+ <string name="accessibility_magnifier_size" msgid="3038755600030422334">"Dimensione ingrandimento"</string>
<string name="accessibility_magnification_zoom" msgid="4222088982642063979">"Zoom"</string>
<string name="accessibility_magnification_medium" msgid="6994632616884562625">"Medio"</string>
<string name="accessibility_magnification_small" msgid="8144502090651099970">"Piccolo"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Videocamera bloccata"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Videocamera e microfono bloccati"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microfono bloccato"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Modalità priorità attivata"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Viene rilevata la presenza dell\'utente"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Imposta l\'app per le note predefinita nelle Impostazioni"</string>
<string name="install_app" msgid="5066668100199613936">"Installa app"</string>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index f88b1049798d..2881bad63e5a 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ניתוק"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"הפעלה"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"החיבור יופעל שוב אוטומטית מחר"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"‏תכונות כמו \'שיתוף מהיר\', \'איפה המכשיר שלי\' ומיקום המכשיר משתמשות בחיבור Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"‏‫Bluetooth יופעל מחר בשעה 5 בבוקר"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> סוללה"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"אודיו"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"אוזניות"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"הסרה"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"הוספת ווידג\'ט"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"סיום"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"לאפשר להציג כל ווידג\'ט במסך הנעילה?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"לפתיחת ההגדרות"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"להפעיל את האפליקציות לעבודה?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"ביטול ההשהיה"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"החלפת משתמש"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"תפריט במשיכה למטה"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"כל האפליקציות והנתונים בסשן הזה יימחקו."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"השתקה"</string>
<string name="media_device_cast" msgid="4786241789687569892">"‏הפעלת Cast"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"לא זמין כי הצלצול מושתק"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"‏%1$s. יש להקיש כדי לבטל את ההשתקה."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"‏%1$s. צריך להקיש כדי להגדיר רטט. ייתכן ששירותי הנגישות מושתקים."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"‏%1$s. יש להקיש כדי להשתיק. ייתכן ששירותי הנגישות יושתקו."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"‏%1$s. יש להקיש כדי להעביר למצב רטט."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"‏%1$s. יש להקיש כדי להשתיק."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"בקרת הרעש"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"אודיו מרחבי"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"השבתה"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"מצב קבוע"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"מעקב אחר תנועות הראש"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"יש להקיש כדי לשנות את מצב תוכנת הצלצול"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"השתקה"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"ביטול ההשתקה"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"רטט"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"‏בקרי עוצמת קול של %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"הטלפון יצלצל כשמתקבלות שיחות והתראות (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"הפעלה של <xliff:g id="LABEL">%s</xliff:g> במכשיר"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"האודיו יופעל במכשיר"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"המצלמה חסומה"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"המצלמה והמיקרופון חסומים"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"המיקרופון חסום"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"מצב \'עדיפות\' מופעל"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"נוכחות המשתמש זוהתה"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"צריך להגדיר את אפליקציית ברירת המחדל לפתקים ב\'הגדרות\'"</string>
<string name="install_app" msgid="5066668100199613936">"התקנת האפליקציה"</string>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 36fc26f84cfc..070713a32ca3 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"接続を解除"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"有効化"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"明日自動的に ON に戻す"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"クイック共有、デバイスを探す、デバイスの位置情報などの機能は Bluetooth を使用します"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"午前 5 時に Bluetooth が ON になります"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"バッテリー <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"オーディオ"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"ヘッドセット"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"削除"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"ウィジェットを追加"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"完了"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"ロック画面でのウィジェットを許可しますか?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"設定を開く"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"仕事用アプリの停止解除"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"停止解除"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ユーザーを切り替える"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"プルダウン メニュー"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"このセッションでのアプリとデータはすべて削除されます。"</string>
@@ -581,26 +583,29 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"ミュート"</string>
<string name="media_device_cast" msgid="4786241789687569892">"キャスト"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"着信音がミュートされているため利用できません"</string>
+ <string name="stream_alarm_unavailable" msgid="4059817189292197839">"サイレント モードが ON のため利用できません"</string>
+ <string name="stream_media_unavailable" msgid="6823020894438959853">"サイレント モードが ON のため利用できません"</string>
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s。タップしてミュートを解除します。"</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s。タップしてバイブレーションに設定します。ユーザー補助機能サービスがミュートされる場合があります。"</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s。タップしてミュートします。ユーザー補助機能サービスがミュートされる場合があります。"</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s。タップしてバイブレーションに設定します。"</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s。タップしてミュートします。"</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"ノイズ コントロール"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"空間オーディオ"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"OFF"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"固定"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"ヘッド トラッキング"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"タップすると、着信音のモードを変更できます"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"ミュート"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"ミュートを解除"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"バイブレーション"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s の音量調節"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"着信音と通知音が鳴ります(<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <string name="volume_panel_enter_media_output_settings" msgid="8824244246272552669">"出力の設定を入力してください"</string>
+ <string name="volume_panel_expanded_sliders" msgid="1885750987768506271">"音量スライダーを開きました"</string>
+ <string name="volume_panel_collapsed_sliders" msgid="1413383759434791450">"音量スライダーを閉じました"</string>
+ <string name="volume_panel_hint_mute" msgid="6962563028495243738">"%s をミュート"</string>
+ <string name="volume_panel_hint_unmute" msgid="7489063242934477382">"%s のミュートを解除"</string>
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> を再生:"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"音声の再生形式:"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"システムUI調整ツール"</string>
@@ -1254,7 +1259,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"カメラはブロックされています"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"カメラとマイクはブロックされています"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"マイクはブロックされています"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"優先モードは ON です"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"会話を始められます"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"[設定] でデフォルトのメモアプリを設定してください"</string>
<string name="install_app" msgid="5066668100199613936">"アプリをインストール"</string>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index e77d13705369..5a11a75141fb 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"კავშირის გაწყვეტა"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"გააქტიურება"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"ხელახლა ავტომატურად ჩართვა ხვალ"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"ფუნქციები, როგორებიცაა „სწრაფი გაზიარება“, „ჩემი მოწყობილობის პოვნა“ და „მოწყობილობის მდებარეობა“ იყენებს Bluetooth-ს"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth ჩაირთვება ხვალ დილის 5 საათზე"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> ბატარეა"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"აუდიო"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"ყურსაცვამი"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"ამოშლა"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"ვიჯეტის დამატება"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"მზადაა"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"ნებისმიერი ვიჯეტის დაშვება ჩაკეტილ ეკრანზე"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"პარამეტრების გახსნა"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"კვლავ გააქტიურდეს სამსახურის აპები?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"გააქტიურება"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"მომხმარებლის გადართვა"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ჩამოშლადი მენიუ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ამ სესიის ყველა აპი და მონაცემი წაიშლება."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"დადუმება"</string>
<string name="media_device_cast" msgid="4786241789687569892">"ტრანსლირება"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"ზარის დადუმების გამო ხელმისაწვდომი არაა"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. შეეხეთ დადუმების გასაუქმებლად."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. შეეხეთ ვიბრაციაზე დასაყენებლად. შეიძლება დადუმდეს მარტივი წვდომის სერვისებიც."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. შეეხეთ დასადუმებლად. შეიძლება დადუმდეს მარტივი წვდომის სერვისებიც."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. შეეხეთ ვიბრაციაზე დასაყენებლად."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. შეეხეთ დასადუმებლად."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"ხმაურის კონტროლი"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"სივრცითი აუდიო"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"გამორთული"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"ფიქსირებული"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"თავის მოძრ. თვალყურის დევნა"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"შეეხეთ მრეკავის რეჟიმის შესაცვლელად"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"დადუმება"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"დადუმების მოხსნა"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"ვიბრაცია"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s-ის ხმის მართვის საშუალებები"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"ზარებისა და შეტყობინებების მიღებისას დაირეკება (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"უკრავს <xliff:g id="LABEL">%s</xliff:g>:"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"აუდიო დაიკვრება"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"სისტემის UI ტუნერი"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"კამერა დაბლოკილია"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"კამერა და მიკროფონი დაბლოკილია"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"მიკროფონი დაბლოკილია"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"პრიორიტეტული რეჟიმი ჩართულია"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"აღმოჩენილია მომხმარებლის ყოფნა"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"დააყენეთ ნაგულისხმევი შენიშვნების აპი პარამეტრებში"</string>
<string name="install_app" msgid="5066668100199613936">"აპის ინსტალაცია"</string>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index 6daba135cd65..781dbbff642e 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ажырату"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"іске қосу"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Ертең автоматты түрде қосылсын"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Quick Share, Find My Device сияқты функциялар мен құрылғы локациясы Bluetooth пайдаланады."</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth ертең таңғы сағат 5-те қосылады."</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Батарея деңгейі: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Aудио"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Гарнитура"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Өшіру"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Виджет қосу"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Дайын"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Құлыптаулы экранда кез келген виджетке рұқсат беру керек пе?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Параметрлерді ашу"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Жұмыс қолданбаларын қайта қосасыз ба?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Қайта қосу"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Пайдаланушыны ауыстыру"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ашылмалы мәзір"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Осы сеанстағы барлық қолданба мен дерек жойылады."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Дыбысын өшіру"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Трансляциялау"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Қолжетімді емес, шылдырлату өшірулі."</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Дыбысын қосу үшін түртіңіз."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Діріл режимін орнату үшін түртіңіз. Арнайы мүмкіндік қызметтерінің дыбысы өшуі мүмкін."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Дыбысын өшіру үшін түртіңіз. Арнайы мүмкіндік қызметтерінің дыбысы өшуі мүмкін."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Діріл режимін орнату үшін түртіңіз."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Дыбысын өшіру үшін түртіңіз."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Шуды реттеу"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Кеңістіктік дыбыс"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Өшіру"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Бекітілген"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Бас қимылын қадағалау"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Қоңырау режимін өзгерту үшін түртіңіз."</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"дыбысын өшіру"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"дыбысын қосу"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"дірілдету"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Дыбысты басқару элементтері: %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Қоңыраулар мен хабарландырулар дыбысы қосулы (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> ойнатылатын құрылғы:"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Аудио ойнатылатын құрылғы:"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Жүйелік пайдаланушылық интерфейс тюнері"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Камера блокталған."</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Камера мен микрофон блокталған."</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Микрофон блокталған."</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"\"Маңызды\" режимі қосулы."</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Пайдаланушы анықталды."</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Параметрлерден әдепкі жазба қолданбасын орнатыңыз."</string>
<string name="install_app" msgid="5066668100199613936">"Қолданбаны орнату"</string>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index 69adb22d810e..60a1970eb78c 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ផ្ដាច់"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"បើកដំណើរការ"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"បើកដោយស្វ័យប្រវត្តិម្ដងទៀតនៅថ្ងៃស្អែក"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"មុខងារដូចជា Quick Share, រកឧបករណ៍របស់ខ្ញុំ និងប៊្លូធូសប្រើប្រាស់ទីតាំងឧបករណ៍"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"ប៊្លូធូសនឹងបើកនៅថ្ងៃស្អែកនៅម៉ោង 5 ព្រឹក"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"សំឡេង"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"កាស"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"ដកចេញ"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"បញ្ចូលធាតុ​ក្រាហ្វិក"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"រួចរាល់"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"អនុញ្ញាត​ធាតុក្រាហ្វិក​នៅលើ​អេក្រង់ចាក់សោឬ?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"បើកការកំណត់"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"ឈប់ផ្អាកកម្មវិធីការងារឬ?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"ឈប់ផ្អាក"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ប្ដូរ​អ្នក​ប្រើ"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ម៉ឺនុយ​ទាញចុះ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"កម្មវិធី និងទិន្នន័យ​ទាំងអស់​ក្នុង​វគ្គ​នេះ​នឹង​ត្រូវ​លុប។"</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"បិទសំឡេង"</string>
<string name="media_device_cast" msgid="4786241789687569892">"បញ្ជូន"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"មិន​អាច​ប្រើ​បាន​ទេ​ ព្រោះ​សំឡេង​រោទ៍​ត្រូវ​បាន​បិទ"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s។ ប៉ះដើម្បីបើកសំឡេង។"</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s។ ប៉ះដើម្បីកំណត់ឲ្យញ័រ។ សេវាកម្មលទ្ធភាពប្រើប្រាស់អាចនឹងត្រូវបានបិទសំឡេង។"</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s។ ប៉ះដើម្បីបិទសំឡេង។ សេវាកម្មលទ្ធភាពប្រើប្រាស់អាចនឹងត្រូវបានបិទសំឡេង។"</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s ។ ចុច​ដើម្បី​កំណត់​ឲ្យ​ញ័រ។"</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s ។ ចុច​ដើម្បី​បិទ​សំឡេង។"</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"ការគ្រប់គ្រង​សំឡេងរំខាន"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"សំឡេងលំហ"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"បិទ"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"ថេរ"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"ការតាមដានក្បាល"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"ចុច​ដើម្បីប្ដូរ​មុខងារ​រោទ៍"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"បិទ​សំឡេង"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"បើក​សំឡេង"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"ញ័រ"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s របារ​បញ្ជា​កម្រិត​សំឡេង"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"ការ​ហៅ​ទូរសព្ទ និង​ការជូន​ដំណឹង​នឹង​រោទ៍ (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"កំពុងចាក់​​ <xliff:g id="LABEL">%s</xliff:g> នៅ​លើ"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"សំឡេងនឹងលេងនៅលើ"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"កម្មវិធីសម្រួល UI ប្រព័ន្ធ"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"សម្រាប់កម្រិតគុណភាពកាន់តែខ្ពស់ សូមត្រឡប់ទូរសព្ទ"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ឧបករណ៍អាច​បត់បានកំពុងត្រូវបានលា"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ឧបករណ៍អាច​បត់បានកំពុងត្រូវបានលា"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"បត់"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"លា"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"ថ្មនៅសល់ <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"ភ្ជាប់ប៊ិករបស់អ្នកជាមួយឆ្នាំងសាក"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"ថ្មប៊ិកនៅសល់តិច"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"បាន​ទប់ស្កាត់​កាមេរ៉ា"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"បានទប់ស្កាត់​កាមេរ៉ា និង​មីក្រូហ្វូន"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"បាន​ទប់ស្កាត់​មីក្រូហ្វូន"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"មុខងារ​អាទិភាពត្រូវបានបើក"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"វត្តមានអ្នកប្រើប្រាស់ត្រូវបានចាប់ដឹង"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"កំណត់កម្មវិធីកំណត់ចំណាំលំនាំដើមនៅក្នុងការកំណត់"</string>
<string name="install_app" msgid="5066668100199613936">"ដំឡើង​កម្មវិធី"</string>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index f62c2a6daf5c..e498ca4957e2 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ಡಿಸ್‌ಕನೆಕ್ಟ್ ಮಾಡಿ"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"ನಾಳೆ ಪುನಃ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆನ್ ಮಾಡಿ"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"ಕ್ವಿಕ್ ಶೇರ್, Find My Device ನಂತಹ ಫೀಚರ್‌ಗಳು ಹಾಗೂ ಸಾಧನದ ಸ್ಥಳವು ಬ್ಲೂಟೂತ್ ಅನ್ನು ಬಳಸುತ್ತವೆ"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"ಬ್ಲೂಟೂತ್ ನಾಳೆ ಬೆಳಗ್ಗೆ 5 ಗಂಟೆಗೆ ಆನ್ ಆಗುತ್ತದೆ"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> ಬ್ಯಾಟರಿ"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"ಆಡಿಯೋ"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"ಹೆಡ್‌ಸೆಟ್"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"ತೆಗೆದುಹಾಕಿ"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"ವಿಜೆಟ್ ಅನ್ನು ಸೇರಿಸಿ"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"ಮುಗಿದಿದೆ"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"ಲಾಕ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಯಾವುದೇ ವಿಜೆಟ್ ಅನ್ನು ಅನುಮತಿಸಬೇಕೇ?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಿರಿ"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"ಕೆಲಸದ ಆ್ಯಪ್ ವಿರಾಮ ರದ್ದುಮಾಡಬೇಕೇ"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"ವಿರಾಮವನ್ನು ರದ್ದುಗೊಳಿಸಿ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ಬಳಕೆದಾರರನ್ನು ಬದಲಿಸಿ"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ಪುಲ್‌ಡೌನ್ ಮೆನು"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ಈ ಸೆಷನ್‌ನಲ್ಲಿನ ಎಲ್ಲ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ."</string>
@@ -523,7 +525,7 @@
<string name="monitoring_description_management" msgid="4308879039175729014">"ಈ ಸಾಧನವು ನಿಮ್ಮ ಸಂಸ್ಥೆಗೆ ಸೇರಿದೆ.\n\nಸೆಟ್ಟಿಂಗ್‌ಗಳು, ಕಾರ್ಪೊರೇಟ್ ಆ್ಯಕ್ಸೆಸ್, ಆ್ಯಪ್‌ಗಳು, ನಿಮ್ಮ ಸಾಧನಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಡೇಟಾ ಮತ್ತು ನಿಮ್ಮ ಸಾಧನದ ಸ್ಥಳದ ಮಾಹಿತಿಯನ್ನು ನಿಮ್ಮ IT ನಿರ್ವಾಹಕರು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬಹುದು ಮತ್ತು ನಿರ್ವಹಿಸಬಹುದು.\n\nಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ ನಿಮ್ಮ IT ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ."</string>
<string name="monitoring_description_management_ca_certificate" msgid="7785013130658110130">"ನಿಮ್ಮ ಸಂಸ್ಥೆಯು ಈ ಸಾಧನದಲ್ಲಿ ಪ್ರಮಾಣಪತ್ರ ಅಂಗೀಕಾರವನ್ನು ಸ್ಥಾಪಿಸಿದೆ. ನಿಮ್ಮ ಸುರಕ್ಷಿತ ನೆಟ್‌ವರ್ಕ್ ಟ್ರಾಫಿಕ್ ಅನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬಹುದು ಅಥವಾ ಮಾರ್ಪಡಿಸಬಹುದು."</string>
<string name="monitoring_description_managed_profile_ca_certificate" msgid="7904323416598435647">"ನಿಮ್ಮ ಸಂಸ್ಥೆಯು ನಿಮ್ಮ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್‌ನಲ್ಲಿ ಪ್ರಮಾಣಪತ್ರ ಅಂಗೀಕಾರವನ್ನು ಸ್ಥಾಪಿಸಿದೆ. ನಿಮ್ಮ ಸುರಕ್ಷಿತ ನೆಟ್‌ವರ್ಕ್ ಟ್ರಾಫಿಕ್ ಅನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬಹುದು ಅಥವಾ ಮಾರ್ಪಡಿಸಬಹುದು."</string>
- <string name="monitoring_description_ca_certificate" msgid="448923057059097497">"ಈ ಸಾಧನದಲ್ಲಿ ಪ್ರಮಾಣಪತ್ರ ಅಂಗೀಕಾರವನ್ನು ಸ್ಥಾಪಿಸಲಾಗಿದೆ. ನಿಮ್ಮ ಸುರಕ್ಷಿತ ನೆಟ್‌ವರ್ಕ್ ಟ್ರಾಫಿಕ್ ಅನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬಹುದು ಅಥವಾ ಮಾರ್ಪಡಿಸಬಹುದು."</string>
+ <string name="monitoring_description_ca_certificate" msgid="448923057059097497">"ಈ ಸಾಧನದಲ್ಲಿ ಪ್ರಮಾಣಪತ್ರ ಅಂಗೀಕಾರವನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲಾಗಿದೆ. ನಿಮ್ಮ ಸುರಕ್ಷಿತ ನೆಟ್‌ವರ್ಕ್ ಟ್ರಾಫಿಕ್ ಅನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬಹುದು ಅಥವಾ ಮಾರ್ಪಡಿಸಬಹುದು."</string>
<string name="monitoring_description_management_network_logging" msgid="216983105036994771">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ನೆಟ್‌ವರ್ಕ್ ಲಾಗಿಂಗ್ ಆನ್ ಮಾಡಿದ್ದಾರೆ. ಇದು ನಿಮ್ಮ ಸಾಧನದ ಟ್ರಾಫಿಕ್ ಅನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುತ್ತದೆ."</string>
<string name="monitoring_description_managed_profile_network_logging" msgid="6932303843097006037">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ನೆಟ್‌ವರ್ಕ್‌ ಲಾಗಿಂಗ್ ಆನ್ ಮಾಡಿದ್ದಾರೆ, ಅದು ನಿಮ್ಮ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್‌ ನಲ್ಲಿ ಇರುವ ಟ್ರಾಫಿಕ್ ಮೇಲೆ ನಿಗಾ ಇರಿಸುತ್ತದೆ ಆದರೆ ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ಪ್ರೊಫೈಲ್‌ನಲ್ಲಿ ಇರುವ ಟ್ರಾಫಿಕ್ ಮೇಲೆ ಅಲ್ಲ."</string>
<string name="monitoring_description_named_vpn" msgid="8220190039787149671">"ಈ ಸಾಧನವನ್ನು <xliff:g id="VPN_APP">%1$s</xliff:g> ಮೂಲಕ ಇಂಟರ್ನೆಟ್‌ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ. ಇಮೇಲ್‌ಗಳು ಮತ್ತು ಬ್ರೌಸಿಂಗ್ ಡೇಟಾ ಸೇರಿದಂತೆ, ನಿಮ್ಮ ನೆಟ್‌ವರ್ಕ್ ಚಟುವಟಿಕೆಯು VPN ಪೂರೈಕೆದಾರರಿಗೆ ಕಾಣಿಸುತ್ತದೆ."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"ಮ್ಯೂಟ್"</string>
<string name="media_device_cast" msgid="4786241789687569892">"ಬಿತ್ತರಿಸಿ"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"ರಿಂಗ್ ಮ್ಯೂಟ್ ಆಗಿರುವ ಕಾರಣ ಲಭ್ಯವಿಲ್ಲ"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. ಅನ್‌ಮ್ಯೂಟ್‌ ಮಾಡುವುದಕ್ಕಾಗಿ ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. ಕಂಪನಕ್ಕೆ ಹೊಂದಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ. ಆ್ಯಕ್ಸೆಸಿಬಿಲಿಟಿ ಸೇವೆಗಳನ್ನು ಮ್ಯೂಟ್‌ ಮಾಡಬಹುದು."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. ಮ್ಯೂಟ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ. ಆ್ಯಕ್ಸೆಸಿಬಿಲಿಟಿ ಸೇವೆಗಳನ್ನು ಮ್ಯೂಟ್‌ ಮಾಡಬಹುದು."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. ವೈಬ್ರೇಟ್ ಮಾಡಲು ಹೊಂದಿಸುವುದಕ್ಕಾಗಿ ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. ಮ್ಯೂಟ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"ಗದ್ದಲ ನಿಯಂತ್ರಣ"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"ಸ್ಪೇಷಿಯಲ್ ಆಡಿಯೋ"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"ಆಫ್ ಮಾಡಿ"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"ಫಿಕ್ಸಡ್"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"ಹೆಡ್ ಟ್ರ್ಯಾಕಿಂಗ್"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"ರಿಂಗರ್ ಮೋಡ್ ಬದಲಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"ಮ್ಯೂಟ್ ಮಾಡಿ"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"ಅನ್‌ಮ್ಯೂಟ್ ಮಾಡಿ"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"ವೈಬ್ರೇಟ್‌"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s ವಾಲ್ಯೂಮ್ ನಿಯಂತ್ರಕಗಳು"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"(<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>) ನಲ್ಲಿ ಕರೆಗಳು ಮತ್ತು ಅಧಿಸೂಚನೆಗಳು ರಿಂಗ್ ಆಗುತ್ತವೆ"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> ನಲ್ಲಿ ಪ್ಲೇ ಆಗು..."</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"ಇಲ್ಲಿ ಆಡಿಯೋ ಪ್ಲೇ..."</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"ಸಿಸ್ಟಂ UI ಟ್ಯೂನರ್"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"ಅಧಿಕ ರೆಸಲ್ಯೂಷನ್‌ಗಾಗಿ, ಫೋನ್ ಅನ್ನು ಫ್ಲಿಪ್ ಮಾಡಿ"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ಫೋಲ್ಡ್ ಮಾಡಬಹುದಾದ ಸಾಧನವನ್ನು ಅನ್‌ಫೋಲ್ಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ಫೋಲ್ಡ್ ಮಾಡಬಹುದಾದ ಸಾಧನವನ್ನು ಸುತ್ತಲೂ ತಿರುಗಿಸಲಾಗುತ್ತಿದೆ"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ಫೋಲ್ಡ್ ಮಾಡಿರುವುದು"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ಅನ್‌ಫೋಲ್ಡ್ ಮಾಡಿರುವುದು"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ಬ್ಯಾಟರಿ ಉಳಿದಿದೆ"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"ನಿಮ್ಮ ಸ್ಟೈಲಸ್ ಅನ್ನು ಚಾರ್ಜರ್‌ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಿ"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"ಸ್ಟೈಲಸ್ ಬ್ಯಾಟರಿ ಕಡಿಮೆಯಿದೆ"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ಕ್ಯಾಮರಾವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"ಕ್ಯಾಮರಾ ಮತ್ತು ಮೈಕ್ರೊಫೋನ್‌ ಅನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"ಮೈಕ್ರೋಫೋನ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ಆದ್ಯತೆಯ ಮೋಡ್‌ ಆನ್‌ ಆಗಿದೆ"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"ಬಳಕೆದಾರರ ಉಪಸ್ಥಿತಿಯನ್ನು ಪತ್ತೆಹಚ್ಚಲಾಗಿದೆ"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಡೀಫಾಲ್ಟ್ ಟಿಪ್ಪಣಿಗಳ ಆ್ಯಪ್ ಅನ್ನು ಸೆಟ್ ಮಾಡಿ"</string>
<string name="install_app" msgid="5066668100199613936">"ಆ್ಯಪ್ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ"</string>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 40fb618795b5..75a6808a64d4 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -32,7 +32,7 @@
<string name="battery_saver_start_action" msgid="8353766979886287140">"사용"</string>
<string name="battery_saver_dismiss_action" msgid="7199342621040014738">"사용 안함"</string>
<string name="standard_battery_saver_text" msgid="6855876746552374119">"표준"</string>
- <string name="extreme_battery_saver_text" msgid="8455810156739865335">"긴급"</string>
+ <string name="extreme_battery_saver_text" msgid="8455810156739865335">"최대"</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_warn" msgid="2309129784984063656">"<xliff:g id="APPLICATION">%1$s</xliff:g>에서 <xliff:g id="USB_DEVICE">%2$s</xliff:g>에 액세스하도록 허용하시겠습니까?\n이 앱에는 녹음 권한이 부여되지 않았지만, 이 USB 기기를 통해 오디오를 녹음할 수 있습니다."</string>
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"연결 해제"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"실행"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"내일 다시 자동으로 사용 설정"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Quick Share, 내 기기 찾기, 기기 위치 등의 기능에서 블루투스를 사용합니다."</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"블루투스가 내일 오전 5시에 켜집니다."</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"배터리 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"오디오"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"헤드셋"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"삭제"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"위젯 추가"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"완료"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"잠금 화면에서 위젯 사용을 허용하시겠습니까?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"설정 열기"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"직장 앱 일시중지를 해제하시겠습니까?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"일시중지 해제"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"사용자 전환"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"풀다운 메뉴"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"이 세션에 있는 모든 앱과 데이터가 삭제됩니다."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"음소거"</string>
<string name="media_device_cast" msgid="4786241789687569892">"전송"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"벨소리가 음소거되어 있으므로 사용할 수 없음"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. 탭하여 음소거를 해제하세요."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. 탭하여 진동으로 설정하세요. 접근성 서비스가 음소거될 수 있습니다."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. 탭하여 음소거로 설정하세요. 접근성 서비스가 음소거될 수 있습니다."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. 탭하여 진동으로 설정하세요."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. 탭하여 음소거로 설정하세요."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"소음 제어"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"공간 음향"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"사용 안함"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"수정됨"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"머리 추적"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"탭하여 벨소리 장치 모드 변경"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"음소거"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"음소거 해제"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"진동"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s 볼륨 컨트롤"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"전화 및 알림이 오면 벨소리가 울림(<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> 재생 위치:"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"오디오 재생 위치:"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"시스템 UI 튜너"</string>
@@ -731,7 +743,7 @@
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"단축키 없음"</string>
<string name="keyboard_shortcut_search_category_system" msgid="1151182120757052669">"시스템"</string>
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"입력"</string>
- <string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"열린 앱"</string>
+ <string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"앱 열기"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"현재 앱"</string>
<string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"검색 결과 표시"</string>
<string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"시스템 바로가기 표시"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"카메라 차단됨"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"카메라 및 마이크 차단됨"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"마이크 차단됨"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"우선순위 모드 설정됨"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"사용자 정보가 감지되었습니다."</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"설정에서 기본 메모 앱 설정"</string>
<string name="install_app" msgid="5066668100199613936">"앱 설치"</string>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index ef213caec594..74bc943c50e7 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ажыратуу"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"иштетүү"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Эртең автоматтык түрдө кайра күйгүзүү"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Тез Бөлүшүү, \"Түзмөгүм кайда?\" жана түзмөктүн турган жерин аныктоо сыяктуу функциялар Bluetooth\'ду колдонот"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth эртең саат 05:00 күйөт"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Батареянын деңгээли <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Аудио"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Гарнитура"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Өчүрүү"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Виджет кошуу"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Бүттү"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Бардык виджеттер кулпуланган экранда көрсөтүлсүнбү?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Параметрлерди ачуу"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Жумуш колдонмолорун иштетесизби?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Иштетүү"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Колдонуучуну которуу"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ылдый түшүүчү меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Бул сеанстагы бардык колдонмолор жана аларга байланыштуу нерселер өчүрүлөт."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Үнсүз"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Тышкы экранга чыгруу"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Үнсүз режимде жеткиликсиз"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Үнүн чыгаруу үчүн таптап коюңуз."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Дирилдөөгө коюу үчүн таптап коюңуз. Атайын мүмкүнчүлүктөр кызматынын үнүн өчүрүп койсо болот."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Үнүн өчүрүү үчүн таптап коюңуз. Атайын мүмкүнчүлүктөр кызматынын үнүн өчүрүп койсо болот."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Дирилдөөгө коюу үчүн басыңыз."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Үнүн өчүрүү үчүн басыңыз."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Ызы-чууну көзөмөлдөө"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Мейкиндиктүү үн"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Өчүк"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Туруктуу"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Баштын кыймылына көз салуу"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Коңгуроо режимин өзгөртүү үчүн басыңыз"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"үнсүз"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"үнүн чыгаруу"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"дирилдөө"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s үндү башкаруу элементтери"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Чалуулар менен эскертмелердин үнү чыгарылат (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> аркылуу ойнотулууда"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Аудио төмөнкүдө ойнотулат:"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Камера бөгөттөлдү"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Камера менен микрофон бөгөттөлдү"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Микрофон бөгөттөлдү"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Маанилүү сүйлөшүүлөр режими күйүк"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Колдонуучу аныкталды"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Параметрлерден демейки кыска жазуулар колдонмосун тууралаңыз"</string>
<string name="install_app" msgid="5066668100199613936">"Колдонмону орнотуу"</string>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index 94685028f9a3..6652200e4982 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ຕັດການເຊື່ອມຕໍ່"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ເປີດນຳໃຊ້"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"ເປີດໃຊ້ໂດຍອັດຕະໂນມັດອີກຄັ້ງມື້ອື່ນ"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"ຄຸນສົມບັດຕ່າງໆ ເຊັ່ນ: ການແຊຣ໌ດ່ວນ, ຊອກຫາອຸປະກອນຂອງຂ້ອຍ ແລະ ສະຖານທີ່ຂອງອຸປະກອນແມ່ນໃຊ້ Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth ຈະເປີດມື້ອື່ນເວລາ 05:00 ໂມງ"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"ສຽງ"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"ຊຸດຫູຟັງ"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"ລຶບອອກ"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"ເພີ່ມວິດເຈັດ"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"ແລ້ວໆ"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"ອະນຸຍາດວິດເຈັດໃດກໍຕາມຢູ່ໜ້າຈໍລັອກບໍ?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"ເປີດການຕັ້ງຄ່າ"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"ຍົກເລີກການຢຸດຊົ່ວຄາວແອັບບ່ອນເຮັດວຽກບໍ?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"ຍົກເລີກການຢຸດຊົ່ວຄາວ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ສະຫຼັບຜູ້ໃຊ້"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ເມນູແບບດຶງລົງ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ແອັບຯ​ແລະ​ຂໍ້​ມູນ​ທັງ​ໝົດ​ໃນ​ເຊດ​ຊັນ​ນີ້​ຈະ​ຖືກ​ລຶບ​ອອກ."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"ປິດ"</string>
<string name="media_device_cast" msgid="4786241789687569892">"ສົ່ງສັນຍານ"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"ບໍ່ມີໃຫ້ໃຊ້ເນື່ອງຈາກມີການປິດສຽງໂທເຂົ້າ"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. ແຕະເພື່ອເຊົາປິດສຽງ."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. ແຕະເພື່ອຕັ້ງເປັນສັ່ນ. ບໍລິການຊ່ວຍເຂົ້າເຖິງອາດຖືກປິດສຽງໄວ້."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. ແຕະເພື່ອປິດສຽງ. ບໍລິການຊ່ວຍເຂົ້າເຖິງອາດຖືກປິດສຽງໄວ້."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. ແຕະເພື່ອຕັ້ງເປັນສັ່ນເຕືອນ."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. ແຕະເພື່ອປິດສຽງ."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"ການຄວບຄຸມສຽງລົບກວນ"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"ສຽງຮອບທິດທາງ"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"ປິດ"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"ຄົງທີ່"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"ການຕິດຕາມການເຄື່ອນໄຫວຂອງຫົວ"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"ແຕະເພື່ອປ່ຽນໂໝດຣິງເກີ"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"ປິດສຽງ"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"ເຊົາປິດສຽງ"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"ສັ່ນເຕືອນ"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"ການຄວບຄຸມສຽງ %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"ການໂທ ແລະ ການແຈ້ງເຕືອນຈະມີສຽງດັງ (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"ກຳລັງຫຼິ້ນ <xliff:g id="LABEL">%s</xliff:g> ໃນ"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"ສຽງຈະຫຼິ້ນຕໍ່ໄປ"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ກ້ອງຖ່າຍຮູບຖືກບລັອກຢູ່"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"ກ້ອງຖ່າຍຮູບ ແລະ ໄມໂຄຣໂຟນຖືກບລັອກຢູ່"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"ໄມໂຄຣໂຟນຖືກບລັອກຢູ່"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ໂໝດຄວາມສຳຄັນເປີດຢູ່"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"ກວດພົບຕົວຕົນຜູ້ໃຊ້"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ຕັ້ງຄ່າແອັບຈົດບັນທຶກເລີ່ມຕົ້ນໃນການຕັ້ງຄ່າ"</string>
<string name="install_app" msgid="5066668100199613936">"ຕິດຕັ້ງແອັບ"</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 3fc0dcb36750..aae13c97e8cc 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"atjungti"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"suaktyvinti"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Automatiškai vėl įjungti rytoj"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Tokioms funkcijoms kaip „Spartusis bendrinimas“, „Rasti įrenginį“ ir įrenginio vietovė naudojamas „Bluetooth“ ryšys"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"„Bluetooth“ bus įjungtas rytoj, 5 val."</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Akumuliatorius: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Garsas"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Virtualiosios realybės įrenginys"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Pašalinti"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Pridėti valdiklį"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Atlikta"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Leisti visus valdiklius užrakinimo ekrane?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Atidaryti nustatymus"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Atš. darbo progr. pristabd.?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Atšaukti pristabdymą"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Perjungti naudotoją"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"išplečiamasis meniu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Bus ištrintos visos šios sesijos programos ir duomenys."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Nutildyti"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Perdavimas"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Nepasiekiama, nes skambutis nutildytas"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Palieskite, kad įjungtumėte garsą."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Palieskite, kad nustatytumėte vibravimą. Gali būti nutildytos pritaikymo neįgaliesiems paslaugos."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Palieskite, kad nutildytumėte. Gali būti nutildytos pritaikymo neįgaliesiems paslaugos."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Palieskite, kad nustatytumėte vibravimą."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Palieskite, kad nutildytumėte."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Triukšmo valdymas"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Erdvinis garsas"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Išjungti"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fiksuotas"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Galvos stebėjimas"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Palieskite, kad pakeistumėte skambučio režimą"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"nutildyti"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"įjungti garsą"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibruoti"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Garsumo valdikliai: %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Skambučiai ir pranešimai skambės (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Leidžiama „<xliff:g id="LABEL">%s</xliff:g>“"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Garsas bus leidžiamas"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Sistemos naudotojo sąsajos derinimo priemonė"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Fotoaparatas užblokuotas"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Fotoaparatas ir mikrofonas užblokuoti"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofonas užblokuotas"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioriteto režimas įjungtas"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Aptikta naudotojo veikla"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Nustatykite numatytąją užrašų programą Nustatymuose"</string>
<string name="install_app" msgid="5066668100199613936">"Įdiegti programą"</string>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 1a2f8ba98996..abe280da443e 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"atvienot"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivizēt"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Automātiski atkal ieslēgt rīt"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Tādas funkcijas kā “Ātrā kopīgošana”, “Atrast ierīci” un ierīces atrašanās vietas noteikšana izmanto tehnoloģiju Bluetooth."</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth tiks ieslēgts rīt plkst. 5:00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Akumulators: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Austiņas"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Noņemt"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Pievienot logrīku"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Gatavs"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Vai atļaut jebkāda veida logrīkus bloķēšanas ekrānā?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Atvērt iestatījumus"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Vai aktivizēt darba lietotnes?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Aktivizēt"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Mainīt lietotāju"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"novelkamā izvēlne"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Tiks dzēstas visas šīs sesijas lietotnes un dati."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Izslēgt skaņu"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Apraide"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Nevar mainīt, jo izslēgts skaņas signāls"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Pieskarieties, lai ieslēgtu skaņu."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Pieskarieties, lai iestatītu uz vibrozvanu. Var tikt izslēgti pieejamības pakalpojumu signāli."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Pieskarieties, lai izslēgtu skaņu. Var tikt izslēgti pieejamības pakalpojumu signāli."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Pieskarieties, lai iestatītu vibrozvanu."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Pieskarieties, lai izslēgtu skaņu."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Trokšņu kontrole"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Telpiskais audio"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Izslēgts"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fiksēts"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Galvas kustību reģistrēšana"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Pieskarieties, lai mainītu zvanītāja režīmu."</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"izslēgt skaņu"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"ieslēgt skaņu"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrēt"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s skaļuma vadīklas"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Zvani un paziņojumi aktivizēs zvana signālu (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> — atskaņošana šeit:"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Audio tiks atskaņots šeit:"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Sistēmas saskarnes regulators"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Lai izmantotu augstāku izšķirtspēju, apvērsiet tālruni"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Salokāma ierīce tiek atlocīta"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Salokāma ierīce tiek apgriezta"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"aizvērta"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"atvērta"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Atlikušais uzlādes līmenis: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Pievienojiet skārienekrāna pildspalvu lādētājam"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"Zems skārienekrāna pildspalvas akumulatora līmenis"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera ir bloķēta"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kameras un mikrofona lietošana ir bloķēta"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofons ir bloķēts"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioritātes režīms ir ieslēgts"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Konstatēta lietotāja klātbūtne"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Iestatījumos iestatiet noklusējuma piezīmju lietotni."</string>
<string name="install_app" msgid="5066668100199613936">"Instalēt lietotni"</string>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index b6651ad78510..c3690efd790b 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"прекини врска"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"активирај"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Автоматски вклучи повторно утре"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Функциите како „Брзо споделување“, „Најди го мојот уред“ и локација на уредот користат Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth ќе се вклучи утре во 5:00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> батерија"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Аудио"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Слушалки"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Отстранува"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Додајте виџет"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Готово"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Да се дозволи каков било виџет на заклучен екран?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Отвори ги поставките"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Да се актив. работните аплик.?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Прекини ја паузата"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Промени го корисникот"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"паѓачко мени"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Сите апликации и податоци во сесијата ќе се избришат."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Исклучи звук"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Емитување"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Недостапно бидејќи ѕвонењето е исклучено"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Допрете за да вклучите звук."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Допрете за да поставите на вибрации. Можеби ќе се исклучи звукот на услугите за достапност."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Допрете за да исклучите звук. Можеби ќе се исклучи звукот на услугите за достапност."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Допрете за да се постави на вибрации."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Допрете за да се исклучи звукот."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Контрола на бучавата"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Просторен звук"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Исклучено"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Фиксно"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Следење на главата"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Допрете за да го промените режимот на ѕвончето"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"исклучен звук"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"вклучен звук"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"вибрации"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Контроли на јачината на звукот за %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Повиците и известувањата ќе ѕвонат (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g>: пуштено на"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Аудиото ќе се пушти на"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Адаптер на УИ на системот"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Отворете го телефонот за да добиете повисока резолуција"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Преклопувачки уред се отклопува"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Преклопувачки уред се врти"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"затворен"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"отворен"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Преостаната батерија: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Поврзете го пенкалото со полнач"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"Слаба батерија на пенкало"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Камерата е блокирана"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Камерата и микрофонот се блокирани"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Микрофонот е блокиран"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Приоритетниот режим е вклучен"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Откриено е присуство на корисник"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Поставете стандардна апликација за белешки во „Поставки“"</string>
<string name="install_app" msgid="5066668100199613936">"Инсталирајте ја апликацијата"</string>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index a48d530374af..363795350160 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"വിച്ഛേദിക്കുക"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"സജീവമാക്കുക"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"നാളെ വീണ്ടും സ്വയമേവ ഓണാക്കുക"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"ക്വിക്ക് ഷെയർ, Find My Device, ഉപകരണ ലൊക്കേഷൻ എന്നിവ പോലുള്ള ഫീച്ചറുകൾ Bluetooth ഉപയോഗിക്കുന്നു"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth നാളെ 5 AM-ന് ഓണാക്കും"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> ബാറ്ററി"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"ഓഡിയോ"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"ഹെഡ്‌സെറ്റ്"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"നീക്കം ചെയ്യുക"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"വിജറ്റ് ചേർക്കുക"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"പൂർത്തിയായി"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"ലോക്ക് സ്ക്രീനിൽ ഏതെങ്കിലും വിജറ്റ് അനുവദിക്കണോ?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"ക്രമീകരണം തുറക്കുക"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"വർക്ക് ആപ്പുകൾ പുനരാരംഭിക്കണോ?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"പുനരാരംഭിക്കുക"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ഉപയോക്താവ് മാറുക"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"പുൾഡൗൺ മെനു"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ഈ സെഷനിലെ എല്ലാ ആപ്പുകളും ഡാറ്റയും ഇല്ലാതാക്കും."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"മ്യൂട്ട് ചെയ്യുക"</string>
<string name="media_device_cast" msgid="4786241789687569892">"കാസ്റ്റ് ചെയ്യുക"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"റിംഗ് മ്യൂട്ട് ചെയ്തതിനാൽ ലഭ്യമല്ല"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. അൺമ്യൂട്ടുചെയ്യുന്നതിന് ടാപ്പുചെയ്യുക."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. വൈബ്രേറ്റിലേക്ക് സജ്ജമാക്കുന്നതിന് ടാപ്പുചെയ്യുക. ഉപയോഗസഹായി സേവനങ്ങൾ മ്യൂട്ടുചെയ്യപ്പെട്ടേക്കാം."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. മ്യൂട്ടുചെയ്യുന്നതിന് ടാപ്പുചെയ്യുക. ഉപയോഗസഹായി സേവനങ്ങൾ മ്യൂട്ടുചെയ്യപ്പെട്ടേക്കാം."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s വൈബ്രേറ്റിലേക്ക് സജ്ജമാക്കുന്നതിന് ടാപ്പുചെയ്യുക."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s മ്യൂട്ടുചെയ്യുന്നതിന് ടാപ്പുചെയ്യുക."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"നോയ്‌സ് നിയന്ത്രണം"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"സ്പേഷ്യൽ ഓഡിയോ"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"ഓഫാക്കുക"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"ഓൺ ചെയ്തിരിക്കുന്നു"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"ഹെഡ് ട്രാക്കിംഗ്"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"റിംഗർ മോഡ് മാറ്റാൻ ടാപ്പ് ചെയ്യുക"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"മ്യൂട്ട് ചെയ്യുക"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"അൺമ്യൂട്ട് ചെയ്യുക"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"വൈബ്രേറ്റ് ചെയ്യുക"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s ശബ്‌ദ നിയന്ത്രണങ്ങൾ"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"കോളുകളും അറിയിപ്പുകളും ലഭിക്കുമ്പോൾ റിംഗ് ചെയ്യും (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> എന്നതിൽ പ്ലേ ചെയ്യുന്നു"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"ഓഡിയോ പ്ലേ ചെയ്യും"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"സിസ്റ്റം UI ട്യൂണർ"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ക്യാമറ ബ്ലോക്ക് ചെയ്തിരിക്കുന്നു"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"ക്യാമറയും മൈക്രോഫോണും ബ്ലോക്ക് ചെയ്തിരിക്കുന്നു"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"മൈക്രോഫോൺ ബ്ലോക്ക് ചെയ്തിരിക്കുന്നു"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"മുൻഗണനാ മോഡ് ഓണാണ്"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"ഉപയോക്താവിന്റെ സാന്നിധ്യം കണ്ടെത്തി"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ക്രമീകരണത്തിൽ കുറിപ്പുകൾക്കുള്ള ഡിഫോൾട്ട് ആപ്പ് സജ്ജീകരിക്കുക"</string>
<string name="install_app" msgid="5066668100199613936">"ആപ്പ് ഇൻസ്റ്റാൾ ചെയ്യൂ"</string>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index 625b8b7d3a8f..26c502788eb1 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"салгах"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"идэвхжүүлэх"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Маргааш автоматаар дахин асаах"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Түргэн хуваалцах, Миний төхөөрөмжийг олох зэрэг онцлогууд болон төхөөрөмжийн байршил Bluetooth-г ашигладаг"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth маргааш ҮӨ 5 цагт асна"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> батарей"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Аудио"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Чихэвч"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Хасах"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Виджет нэмэх"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Болсон"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Түгжээтэй дэлгэц дээр дурын виджетийг зөвшөөрөх үү?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Тохиргоог нээх"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Ажлын аппыг үргэлжлүүлэх үү?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Үргэлжлүүлэх"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Хэрэглэгчийг сэлгэх"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"эвхмэл цэс"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Энэ харилцан үйлдлийн бүх апп болон дата устах болно."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Хаах"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Дамжуулах"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Хонхны дууг хаасан тул боломжгүй"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Дууг нь нээхийн тулд товшино уу."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Чичиргээнд тохируулахын тулд товшино уу. Хүртээмжийн үйлчилгээний дууг хаасан."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Дууг нь хаахын тулд товшино уу. Хүртээмжийн үйлчилгээний дууг хаасан."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Чичиргээнд тохируулахын тулд товшино уу."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Дууг хаахын тулд товшино уу."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Шуугианы хяналт"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Орчны аудио"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Унтраах"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Зассан"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Толгой хянах"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Хонхны горимыг өөрчлөхийн тулд товшино уу"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"дууг хаах"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"дууг нээх"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"чичрэх"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s түвшний хяналт"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Дуудлага болон мэдэгдлийн хонх дуугарна (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> дээр тоглуулж байна"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Аудиог дараахад тоглуулна"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Системийн UI Тохируулагч"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Камерыг блоклосон"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Камер болон микрофоныг блоклосон"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Микрофоныг блоклосон"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Чухал горим асаалттай байна"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Хэрэглэгч байгааг илрүүлсэн"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Тохиргоонд тэмдэглэлийн өгөгдмөл апп тохируулна уу"</string>
<string name="install_app" msgid="5066668100199613936">"Аппыг суулгах"</string>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index b5c0dc76b8dd..11f42afdad51 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"डिस्कनेक्ट करा"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ॲक्टिव्हेट करा"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"उद्या पुन्हा आपोआप सुरू करा"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"क्विक शेअर, Find My Device आणि डिव्हाइसचे स्थान यांसारखी वैशिष्ट्ये ब्लूटूथ वापरतात"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"ब्लूटूथ उद्या सकाळी ५ वाजता सुरू होईल"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> बॅटरी"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"ऑडिओ"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"हेडसेट"</string>
@@ -439,6 +437,12 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"काढून टाका"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"विजेट जोडा"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"पूर्ण झाले"</string>
+ <!-- no translation found for dialog_title_to_allow_any_widget (1004820948962675644) -->
+ <skip />
+ <!-- no translation found for button_text_to_open_settings (1987729256950941628) -->
+ <skip />
+ <string name="work_mode_off_title" msgid="5794818421357835873">"वर्क ॲप्स पुन्हा सुरू करायची?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"पुन्हा सुरू करा"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"वापरकर्ता स्विच करा"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"पुलडाउन मेनू"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"या सत्रातील सर्व अ‍ॅप्स आणि डेटा हटवला जाईल."</string>
@@ -581,26 +585,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"म्यूट करा"</string>
<string name="media_device_cast" msgid="4786241789687569892">"कास्ट करा"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"रिंग म्यूट केल्यामुळे उपलब्ध नाही"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. अनम्यूट करण्यासाठी टॅप करा."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. व्हायब्रेट सेट करण्यासाठी टॅप करा. प्रवेशयोग्यता सेवा म्यूट केल्या जाऊ शकतात."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. म्यूट करण्यासाठी टॅप करा. प्रवेशक्षमता सेवा म्यूट केल्या जाऊ शकतात."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. व्हायब्रेट सेट करण्यासाठी टॅप करा."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. म्यूट करण्यासाठी टॅप करा."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"नॉइझ कंट्रोल"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"स्पेशियल ऑडिओ"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"बंद करा"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"निश्चित केला आहे"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"हेड ट्रॅकिंग"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"रिंगर मोड बदलण्यासाठी टॅप करा"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"म्यूट करा"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"म्यूट काढून टाका"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"व्हायब्रेट करा"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s व्हॉल्यूम नियंत्रण"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"कॉल आणि सूचना वाजतील (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> वर प्ले करत आहे"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"यावर ऑडिओ प्ले होईल"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"सिस्टम UI ट्युनर"</string>
@@ -1236,12 +1250,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"उच्च रेझोल्यूशनसाठी, फोन फ्लिप करा"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"फोल्ड करता येण्यासारखे डिव्हाइस अनफोल्ड केले जात आहे"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"फोल्ड करता येण्यासारखे डिव्हाइस आजूबाजूला फ्लिप केले जात आहे"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"फोल्ड केलेले"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"फोल्ड न केलेले"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> बॅटरी शिल्लक आहे"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"तुमचे स्टायलस चार्जरशी कनेक्ट करा"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"स्टायलस बॅटरी कमी आहे"</string>
@@ -1257,7 +1268,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"कॅमेरा ब्लॉक केला"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"कॅमेरा आणि मायक्रोफोन ब्लॉक केले आहेत"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"मायक्रोफोन ब्लॉक केला"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"प्राधान्य मोड सुरू आहे"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"वापरकर्त्याची उपस्थिती डिटेक्ट केली"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"सेटिंग्ज मध्ये डीफॉल्ट टिपा अ‍ॅप सेट करा"</string>
<string name="install_app" msgid="5066668100199613936">"अ‍ॅप इंस्टॉल करा"</string>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 3419e6307a96..e7e30573bf5c 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"putuskan sambungan"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktifkan"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Dihidupkan sekali lagi esok secara automatik"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Ciri seperti Quick Share, Find My Device dan lokasi peranti menggunakan Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth akan dihidupkan esok pada pukul 5 PG"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> bateri"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Set Kepala"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Alih keluar"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Tambahkan widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Selesai"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Benarkan sebarang widget pada skrin kunci?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Buka tetapan"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Nyahjeda apl kerja?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Nyahjeda"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Tukar pengguna"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu tarik turun"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Semua apl dan data dalam sesi ini akan dipadam."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Redam"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Hantar"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Tidak tersedia kerana deringan diredam"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Ketik untuk menyahredam."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Ketik untuk menetapkan pada getar. Perkhidmatan kebolehaksesan mungkin diredamkan."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Ketik untuk meredam. Perkhidmatan kebolehaksesan mungkin diredamkan."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Ketik untuk menetapkan pada getar."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Ketik untuk meredam."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Kawalan Hingar"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Audio Ruang"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Mati"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Tetap"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Penjejakan Kepala"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Ketik untuk menukar mod pendering"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"redam"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"nyahredam"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"getar"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s kawalan kelantangan"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Panggilan dan pemberitahuan akan berdering (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Memainkan <xliff:g id="LABEL">%s</xliff:g> pada"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Audio dimainkan pada"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Penala UI Sistem"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera disekat"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera dan mikrofon disekat"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon disekat"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Mod keutamaan dihidupkan"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Kehadiran pengguna dikesan"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Tetapkan apl nota lalai dalam Tetapan"</string>
<string name="install_app" msgid="5066668100199613936">"Pasang apl"</string>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index 36984fc5e4c6..109d67401210 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ချိတ်ဆက်မှုဖြုတ်ရန်"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"စသုံးရန်"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"မနက်ဖြန် အလိုအလျောက် ထပ်ဖွင့်ရန်"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"‘အမြန် မျှဝေပါ’၊ Find My Device နှင့် စက်ပစ္စည်းတည်နေရာကဲ့သို့ တူးလ်များသည် ဘလူးတုသ်သုံးသည်"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"မနက်ဖြန် မနက် ၅ နာရီတွင် ဘလူးတုသ်ကို ဖွင့်ပါမည်"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> ဘက်ထရီ"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"အသံ"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"မိုက်ခွက်ပါနားကြပ်"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"ဖယ်ရှားရန်"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"ဝိဂျက်ထည့်ရန်"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"ပြီးပြီ"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"လော့ခ်မျက်နှာပြင်ရှိ ဝိဂျက်အားလုံးကို ခွင့်ပြုမလား။"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"ဆက်တင်များ ဖွင့်ရန်"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"အလုပ်သုံးအက်ပ် ပြန်ဖွင့်မလား။"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"ပြန်ဖွင့်ရန်"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"အသုံးပြုသူကို ပြောင်းလဲရန်"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ဆွဲချမီနူး"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ဒီချိတ်ဆက်မှု ထဲက အက်ပ်များ အားလုံး နှင့် ဒေတာကို ဖျက်ပစ်မည်။"</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"အသံတိတ်သည်"</string>
<string name="media_device_cast" msgid="4786241789687569892">"ကာစ်လုပ်ရန်"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"ဖုန်းမြည်သံပိတ်ထားသဖြင့် မရနိုင်ပါ"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s။ အသံပြန်ဖွင့်ရန် တို့ပါ။"</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s။ တုန်ခါမှုကို သတ်မှတ်ရန် တို့ပါ။ အများသုံးနိုင်မှု ဝန်ဆောင်မှုများကို အသံပိတ်ထားနိုင်ပါသည်။"</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s။ အသံပိတ်ရန် တို့ပါ။ အများသုံးနိုင်မှု ဝန်ဆောင်မှုများကို အသံပိတ်ထားနိုင်ပါသည်။"</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s။ တုန်ခါခြင်းသို့ သတ်မှတ်ရန်တို့ပါ။"</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s။ အသံပိတ်ရန် တို့ပါ။"</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"ဆူညံသံ ထိန်းချုပ်ရန်"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"ထောင့်စုံအော်ဒီယို"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"ပိတ်"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"ဖွင့်ပြီးပြီ"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"ဦးခေါင်းလှုပ်ရှားမှု စောင့်ကြည့်ခြင်း"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"ဖုန်းခေါ်သံမုဒ်သို့ ပြောင်းရန် တို့ပါ"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"အသံပိတ်ရန်"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"အသံဖွင့်ရန်"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"တုန်ခါမှု"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s အသံအတိုးအလျှော့ ခလုတ်များ"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"ခေါ်ဆိုမှုများနှင့် အကြောင်းကြားချက်များအတွက် အသံမြည်နှုန်း (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>) ဖြစ်သည်"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> ကို ဖွင့်နေသည်"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"အောက်တွင်အသံဖွင့်မည်"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"စနစ် UI ဖမ်းစက်"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ကင်မရာကို ပိတ်ထားသည်"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"ကင်မရာနှင့် မိုက်ခရိုဖုန်းကို ပိတ်ထားသည်"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"မိုက်ခရိုဖုန်းကို ပိတ်ထားသည်"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ဦးစားပေးမုဒ် ဖွင့်ထားသည်"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"အသုံးပြုသူရှိကြောင်း တွေ့ရသည်"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ဆက်တင်များတွင် မူရင်းမှတ်စုများအက်ပ် သတ်မှတ်ပါ"</string>
<string name="install_app" msgid="5066668100199613936">"အက်ပ် ထည့်သွင်းရန်"</string>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index e126deaaa38f..57b40b9d1899 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"koble fra"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktiver"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Slå på igjen i morgen automatisk"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Funksjoner som Quick Share, Finn enheten min og enhetsposisjon bruker Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth slås på i morgen kl. 05.00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> batteri"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Lyd"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Hodetelefoner"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Fjern"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Legg til modul"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Ferdig"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Vil du tillate alle moduler på låseskjermen?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Åpne innstillingene"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Vil du slå på jobbapper igjen?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Slå på"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Bytt bruker"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rullegardinmeny"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle apper og data i denne økten blir slettet."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Ignorer"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Cast"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Utilgjengelig fordi ringelyden er kuttet"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Trykk for å slå på lyden."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Trykk for å angi vibrasjon. Lyden kan bli slått av for tilgjengelighetstjenestene."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Trykk for å slå av lyden. Lyden kan bli slått av for tilgjengelighetstjenestene."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Trykk for å angi vibrasjon."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Trykk for å slå av lyden."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Støykontroll"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Romlig lyd"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Av"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fast"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Hodesporing"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Trykk for å endre ringemodus"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"kutt lyden"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"slå på lyden"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrer"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s volumkontroller"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Anrop og varsler ringer (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Spiller av <xliff:g id="LABEL">%s</xliff:g> på"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Lyden spilles av på"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -701,7 +713,7 @@
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Mellomrom"</string>
<string name="keyboard_key_enter" msgid="8633362970109751646">"Enter"</string>
- <string name="keyboard_key_backspace" msgid="4095278312039628074">"Tilbaketasten"</string>
+ <string name="keyboard_key_backspace" msgid="4095278312039628074">"Tilbake"</string>
<string name="keyboard_key_media_play_pause" msgid="8389984232732277478">"Spill av / sett på pause"</string>
<string name="keyboard_key_media_stop" msgid="1509943745250377699">"Stopp"</string>
<string name="keyboard_key_media_next" msgid="8502476691227914952">"Neste"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kameraet er blokkert"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kameraet og mikrofonen er blokkert"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofonen er blokkert"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioriteringsmodus er på"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Det er registrert at brukeren er til stede"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Du kan velge en standardapp for notater i Innstillinger"</string>
<string name="install_app" msgid="5066668100199613936">"Installer appen"</string>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index a06c1607342c..b682e4404049 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"डिस्कनेक्ट गर्नुहोस्"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"एक्टिभेट गर्नुहोस्"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"भोलि फेरि स्वतः अन गरियोस्"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"क्विक सेयर, Find My Device र डिभाइसको लोकेसन जस्ता सुविधाहरूले ब्लुटुथ प्रयोग गर्छन्"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"ब्लुटुथ भोलि बिहान ५ बजे अन हुने छ"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> ब्याट्री"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"अडियो"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"हेडसेट"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"हटाउनुहोस्"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"विजेट हाल्नुहोस्"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"पूरा भयो"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"लक स्क्रिनमा कुनै विजेट देखाउने हो?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"सेटिङ खोल्नुहोस्"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"कामसम्बन्धी एपहरू अनपज गर्ने हो?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"अनपज गर्नुहोस्"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"प्रयोगकर्ता फेर्नुहोस्"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"पुलडाउन मेनु"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"यो सत्रमा भएका सबै एपहरू र डेटा मेटाइने छ।"</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"म्युट गर्नुहोस्"</string>
<string name="media_device_cast" msgid="4786241789687569892">"कास्ट गर्नुहोस्"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"डिभाइस म्युट गरिएकाले यो सुविधा उपलब्ध छैन"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s। अनम्यूट गर्नाका लागि ट्याप गर्नुहोस्।"</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s। कम्पनमा सेट गर्नाका लागि ट्याप गर्नुहोस्। पहुँच सम्बन्धी सेवाहरू म्यूट हुन सक्छन्।"</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s। म्यूट गर्नाका लागि ट्याप गर्नुहोस्। पहुँच सम्बन्धी सेवाहरू म्यूट हुन सक्छन्।"</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s। कम्पन मोडमा सेट गर्न ट्याप गर्नुहोस्।"</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s। म्यूट गर्न ट्याप गर्नुहोस्।"</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"नोइज कन्ट्रोल"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"स्पेसियल अडियो"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"अफ छ"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"निश्चित"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"हेड ट्र्याकिङ"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"रिङ्गर मोड बदल्न ट्याप गर्नुहोस्"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"म्युट गर्नुहोस्"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"अनम्युट गर्नुहोस्"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"कम्पन गर्नुहोस्"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s भोल्युमका नियन्त्रणहरू"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"कल तथा सूचनाहरू आउँदा घन्टी बज्ने छ (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> प्ले गरिँदै छ"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"अडियो प्ले भइरहने छ"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"सिस्टम UI ट्युनर"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"उच्च रिजोल्युसनको सेल्फी खिच्न फोन फ्लिप गर्नुहोस्"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"फोल्ड गर्न मिल्ने डिभाइस अनफोल्ड गरेको देखाइएको एनिमेसन"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"फोल्ड गर्न मिल्ने डिभाइस यताउता पल्टाएर देखाइएको एनिमेसन"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"फोल्ड गरिएको"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"अनफोल्ड गरिएको"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ब्याट्री बाँकी छ"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"आफ्नो स्टाइलस चार्जरमा कनेक्ट गर्नुहोस्"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"स्टाइलसको ब्याट्री लो छ"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"क्यामेरा ब्लक गरिएको छ"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"क्यामेरा र माइक्रोफोन ब्लक गरिएको छ"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"माइक्रोफोन ब्लक गरिएको छ"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"प्राथमिकता मोड अन छ"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"प्रयोगकर्ता उपस्थित भएको कुरा पत्ता लागेको छ"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"सेटिङमा गई नोट बनाउने डिफल्ट एप तोक्नुहोस्"</string>
<string name="install_app" msgid="5066668100199613936">"एप इन्स्टल गर्नुहोस्"</string>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 86b2ebe460a0..dd56a2ed6467 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"loskoppelen"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activeren"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Morgen weer automatisch aanzetten"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Functies zoals Quick Share, Vind mijn apparaat en apparaatlocatie maken gebruik van bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth gaat morgen om 05:00 uur aan"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> batterijniveau"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Headset"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Verwijderen"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Widget toevoegen"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Klaar"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Elke widget toestaan op het vergrendelscherm?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Instellingen openen"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Werk-apps hervatten?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Hervatten"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Gebruiker wijzigen"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pull-downmenu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle apps en gegevens in deze sessie worden verwijderd."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Geluid staat uit"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Casten"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Niet beschikbaar, belgeluid staat uit"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Tik om dempen op te heffen."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Tik om in te stellen op trillen. Het geluid van toegankelijkheidsservices kan hierdoor uitgaan."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Tik om te dempen. Het geluid van toegankelijkheidsservices kan hierdoor uitgaan."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Tik om in te stellen op trillen."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Tik om geluid uit te zetten."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Ruisonderdrukking"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Ruimtelijke audio"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Uit"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Vast"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Hoofdbeweging volgen"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Tik om de beltoonmodus te wijzigen"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"geluid uit"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"geluid aanzetten"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"trillen"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s-volumeknoppen"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Geluid bij gesprekken en meldingen (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> wordt afgespeeld op"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Audio wordt afgespeeld op"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Systeem-UI-tuner"</string>
@@ -618,7 +630,7 @@
<string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Ontgrendelen om te gebruiken"</string>
<string name="wallet_error_generic" msgid="257704570182963611">"Er is een probleem opgetreden bij het ophalen van je kaarten. Probeer het later opnieuw."</string>
<string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Instellingen voor vergrendelscherm"</string>
- <string name="qr_code_scanner_title" msgid="1938155688725760702">"QR-codescanner"</string>
+ <string name="qr_code_scanner_title" msgid="1938155688725760702">"QR-code-scanner"</string>
<string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"Updaten"</string>
<string name="status_bar_work" msgid="5238641949837091056">"Werkprofiel"</string>
<string name="status_bar_airplane" msgid="4848702508684541009">"Vliegtuig­modus"</string>
@@ -740,7 +752,7 @@
<string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Snelkoppelingen voor de huidige app tonen"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Meldingen bekijken"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Screenshot maken"</string>
- <string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Snelkoppelingen tonen"</string>
+ <string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Sneltoetsen tonen"</string>
<string name="group_system_go_back" msgid="2730322046244918816">"Terug"</string>
<string name="group_system_access_home_screen" msgid="4130366993484706483">"Naar het startscherm gaan"</string>
<string name="group_system_overview_open_apps" msgid="5659958952937994104">"Recente apps bekijken"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Camera geblokkeerd"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Camera en microfoon geblokkeerd"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microfoon geblokkeerd"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioriteitsmodus aan"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Gebruikersaanwezigheid is waargenomen"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Standaard notitie-app instellen in Instellingen"</string>
<string name="install_app" msgid="5066668100199613936">"App installeren"</string>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index afe1e662f94d..40683a7746c3 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ଡିସକନେକ୍ଟ କରନ୍ତୁ"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ଚାଲୁ କରନ୍ତୁ"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"ଆସନ୍ତାକାଲି ସ୍ୱତଃ ପୁଣି ଚାଲୁ ହେବ"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Quick Share, Find My Device ଏବଂ ଡିଭାଇସ ଲୋକେସନ ପରି ଫିଚରଗୁଡ଼ିକ ବ୍ଲୁଟୁଥ ବ୍ୟବହାର କରେ"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"ବ୍ଲୁଟୁଥ ଆସନ୍ତାକାଲି 5 AMରେ ଚାଲୁ ହେବ"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> ବ୍ୟାଟେରୀ"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"ଅଡିଓ"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"ହେଡସେଟ୍‍"</string>
@@ -439,6 +437,12 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"କାଢ଼ି ଦିଅନ୍ତୁ"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"ୱିଜେଟ ଯୋଗ କରନ୍ତୁ"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"ହୋଇଗଲା"</string>
+ <!-- no translation found for dialog_title_to_allow_any_widget (1004820948962675644) -->
+ <skip />
+ <!-- no translation found for button_text_to_open_settings (1987729256950941628) -->
+ <skip />
+ <string name="work_mode_off_title" msgid="5794818421357835873">"ୱାର୍କ ଆପ୍ସକୁ ପୁଣି ଚାଲୁ କରିବେ?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"ପୁଣି ଚାଲୁ କରନ୍ତୁ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ୟୁଜର୍‍ ବଦଳାନ୍ତୁ"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ପୁଲଡାଉନ ମେନୁ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ଏହି ସେସନର ସମସ୍ତ ଆପ୍‌ ଓ ଡାଟା ଡିଲିଟ୍‌ ହୋଇଯିବ।"</string>
@@ -581,26 +585,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"ମ୍ୟୁଟ"</string>
<string name="media_device_cast" msgid="4786241789687569892">"କାଷ୍ଟ କରନ୍ତୁ"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"ରିଂକୁ ମ୍ୟୁଟ କରାଯାଇଥିବା ଯୋଗୁଁ ଉପଲବ୍ଧ ନାହିଁ"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s। ଅନମ୍ୟୁଟ୍‍ କରିବା ପାଇଁ ଟାପ୍‍ କରନ୍ତୁ।"</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s। ଭାଇବ୍ରେଟ୍‍ ସେଟ୍‍ କରିବାକୁ ଟାପ୍‍ କରନ୍ତୁ। ଆକ୍ସେସିବିଲିଟୀ ସର୍ଭିସ୍‌ ମ୍ୟୁଟ୍‍ କରାଯାଇପାରେ।"</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s। ମ୍ୟୁଟ୍‍ କରିବାକୁ ଟାପ୍‍ କରନ୍ତୁ। ଆକ୍ସେସିବିଲିଟୀ ସର୍ଭିସ୍‌ ମ୍ୟୁଟ୍‍ କରାଯାଇପାରେ।"</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s। ଭାଇବ୍ରେଟରେ ସେଟ୍‍ କରିବାକୁ ଟାପ୍‍ କରନ୍ତୁ।"</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s। ମ୍ୟୁଟ୍‍ କରିବାକୁ ଟାପ୍‍ କରନ୍ତୁ।"</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"ନଏଜ କଣ୍ଟ୍ରୋଲ"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"ସ୍ପାସିଅଲ ଅଡିଓ"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"ବନ୍ଦ ଅଛି"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"ନିର୍ଦ୍ଦିଷ୍ଟ"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"ହେଡ ଟ୍ରାକିଂ"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"ରିଙ୍ଗର୍ ମୋଡ୍ ବଦଳାଇବାକୁ ଟାପ୍ କରନ୍ତୁ"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"ମ୍ୟୁଟ"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"ଅନ୍‍-ମ୍ୟୁଟ୍ କରନ୍ତୁ"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"ଭାଇବ୍ରେଟ୍"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s ଭଲ୍ୟୁମ୍ ନିୟନ୍ତ୍ରଣ"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"କଲ୍ ଓ ବିଜ୍ଞପ୍ତି ପାଇଁ (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)ରେ ରିଙ୍ଗ ହେବ"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g>ରେ ପ୍ଲେ କରାଯାଉଛି"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"ଅଡିଓ ପ୍ଲେ ହେବ"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"ସିଷ୍ଟମ୍ UI ଟ୍ୟୁନର୍‍"</string>
@@ -1236,12 +1250,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"ଉଚ୍ଚ ରିଜୋଲ୍ୟୁସନ ପାଇଁ ଫୋନକୁ ଫ୍ଲିପ କରନ୍ତୁ"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ଫୋଲ୍ଡ କରାଯାଇପାରୁଥିବା ଡିଭାଇସକୁ ଅନଫୋଲ୍ଡ କରାଯାଉଛି"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ଫୋଲ୍ଡ କରାଯାଇପାରୁଥିବା ଡିଭାଇସକୁ ଫ୍ଲିପ କରାଯାଉଛି"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ଫୋଲ୍ଡେଡ"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ଅନଫୋଲ୍ଡେଡ"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ବେଟେରୀ ଚାର୍ଜ ବାକି ଅଛି"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"ଏକ ଚାର୍ଜର ସହ ଆପଣଙ୍କ ଷ୍ଟାଇଲସକୁ କନେକ୍ଟ କରନ୍ତୁ"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"ଷ୍ଟାଇଲସ ବେଟେରୀର ଚାର୍ଜ କମ ଅଛି"</string>
@@ -1257,7 +1268,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"କେମେରାକୁ ବ୍ଲକ କରାଯାଇଛି"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"କେମେରା ଏବଂ ମାଇକ୍ରୋଫୋନକୁ ବ୍ଲକ କରାଯାଇଛି"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"ମାଇକ୍ରୋଫୋନକୁ ବ୍ଲକ କରାଯାଇଛି"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ପ୍ରାୟୋରିଟି ମୋଡ ଚାଲୁ ଅଛି"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"ୟୁଜରଙ୍କ ଉପସ୍ଥିତି ଚିହ୍ନଟ କରାଯାଇଛି"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ସେଟିଂସରେ ଡିଫଲ୍ଟ ନୋଟ୍ସ ଆପ ସେଟ କରନ୍ତୁ"</string>
<string name="install_app" msgid="5066668100199613936">"ଆପ ଇନଷ୍ଟଲ କରନ୍ତୁ"</string>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index 8fda667fa95c..b2296b227681 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ਡਿਸਕਨੈਕਟ ਕਰੋ"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ਕਿਰਿਆਸ਼ੀਲ ਕਰੋ"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"ਕੱਲ੍ਹ ਨੂੰ ਆਪਣੇ ਆਪ ਚਾਲੂ ਹੋ ਜਾਵੇਗਾ"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"ਕਵਿੱਕ ਸ਼ੇਅਰ, Find My Device ਅਤੇ ਡੀਵਾਈਸ ਦਾ ਟਿਕਾਣਾ ਵਰਗੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਬਲੂਟੁੱਥ ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਹਨ"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"ਬਲੂਟੁੱਥ ਕੱਲ੍ਹ ਸਵੇਰੇ 5 ਵਜੇ ਚਾਲੂ ਹੋਵੇਗਾ"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> ਬੈਟਰੀ"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"ਆਡੀਓ"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"ਹੈੱਡਸੈੱਟ"</string>
@@ -439,6 +437,12 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"ਹਟਾਓ"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"ਵਿਜੇਟ ਸ਼ਾਮਲ ਕਰੋ"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"ਹੋ ਗਿਆ"</string>
+ <!-- no translation found for dialog_title_to_allow_any_widget (1004820948962675644) -->
+ <skip />
+ <!-- no translation found for button_text_to_open_settings (1987729256950941628) -->
+ <skip />
+ <string name="work_mode_off_title" msgid="5794818421357835873">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਤੋਂ ਰੋਕ ਹਟਾਈਏ?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"ਰੋਕ ਹਟਾਓ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ਵਰਤੋਂਕਾਰ ਸਵਿੱਚ ਕਰੋ"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ਪੁੱਲਡਾਊਨ ਮੀਨੂ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ਇਸ ਸੈਸ਼ਨ ਵਿਚਲੀਆਂ ਸਾਰੀਆਂ ਐਪਾਂ ਅਤੇ ਡਾਟਾ ਨੂੰ ਮਿਟਾ ਦਿੱਤਾ ਜਾਏਗਾ।"</string>
@@ -581,26 +585,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"ਮਿਊਟ"</string>
<string name="media_device_cast" msgid="4786241789687569892">"ਕਾਸਟ ਕਰੋ"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"ਉਪਲਬਧ ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ ਘੰਟੀ ਮਿਊਟ ਕੀਤੀ ਹੋਈ ਹੈ"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s। ਅਣਮਿਊਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s। ਥਰਥਰਾਹਟ ਸੈੱਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ। ਪਹੁੰਚਯੋਗਤਾ ਸੇਵਾਵਾਂ ਮਿਊਟ ਹੋ ਸਕਦੀਆਂ ਹਨ।"</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s। ਮਿਊਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ। ਪਹੁੰਚਯੋਗਤਾ ਸੇਵਾਵਾਂ ਮਿਊਟ ਹੋ ਸਕਦੀਆਂ ਹਨ।"</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s। ਥਰਥਰਾਹਟ \'ਤੇ ਸੈੱਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s। ਮਿਊਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"ਸ਼ੋਰ ਨੂੰ ਕੰਟਰੋਲ ਕਰੋ"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"ਸਪੇਸ਼ਿਅਲ ਆਡੀਓ"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"ਬੰਦ"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"ਸਥਿਰ"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"ਹੈੱਡ ਟਰੈਕਿੰਗ"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"ਰਿੰਗਰ ਮੋਡ ਨੂੰ ਬਦਲਣ ਲਈ ਟੈਪ ਕਰੋ"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"ਮਿਊਟ ਕਰੋ"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"ਅਣਮਿਊਟ ਕਰੋ"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"ਥਰਥਰਾਹਟ"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s ਵੌਲਿਊਮ ਕੰਟਰੋਲ"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"ਕਾਲਾਂ ਆਉਣ ਅਤੇ ਸੂਚਨਾਵਾਂ ਮਿਲਣ \'ਤੇ ਘੰਟੀ ਵਜੇਗੀ (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> ਚਲਾਇਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"ਆਡੀਓ ਇਸ \'ਤੇ ਚੱਲੇਗੀ"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI ਟਿਊਨਰ"</string>
@@ -1236,12 +1250,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"ਉੱਚ ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਲਈ, ਫ਼ੋਨ ਨੂੰ ਫਲਿੱਪ ਕਰੋ"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ਮੋੜਨਯੋਗ ਡੀਵਾਈਸ ਨੂੰ ਖੋਲ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ਮੋੜਨਯੋਗ ਡੀਵਾਈਸ ਨੂੰ ਆਲੇ-ਦੁਆਲੇ ਫਲਿੱਪ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"ਫੋਲਡਯੋਗ ਡੀਵਾਈਸ"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"ਅਣਫੋਲਡਯੋਗ ਡੀਵਾਈਸ"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ਬੈਟਰੀ ਬਾਕੀ"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"ਆਪਣੇ ਸਟਾਈਲਸ ਨੂੰ ਚਾਰਜਰ ਨਾਲ ਕਨੈਕਟ ਕਰੋ"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"ਸਟਾਈਲਸ ਦੀ ਬੈਟਰੀ ਘੱਟ ਹੈ"</string>
@@ -1257,7 +1268,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"ਕੈਮਰਾ ਬਲਾਕ ਕੀਤਾ ਗਿਆ"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"ਕੈਮਰਾ ਅਤੇ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਬਲਾਕ ਕੀਤੇ ਗਏ"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਬਲਾਕ ਕੀਤਾ ਗਿਆ"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ਤਰਜੀਹ ਮੋਡ ਚਾਲੂ ਹੈ"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"ਵਰਤੋਂਕਾਰ ਦੀ ਮੌਜੂਦਗੀ ਦਾ ਪਤਾ ਲਗਾਇਆ ਜਾਂਦਾ ਹੈ"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਜਾ ਕੇ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਨੋਟ ਐਪ ਨੂੰ ਸੈੱਟ ਕਰੋ"</string>
<string name="install_app" msgid="5066668100199613936">"ਐਪ ਸਥਾਪਤ ਕਰੋ"</string>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index cfbfa8a3fee0..a08e47334c70 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"rozłącz"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktywuj"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Automatycznie włącz ponownie jutro"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Funkcje takie jak szybkie udostępnianie, Znajdź moje urządzenie czy lokalizacja urządzenia używają Bluetootha"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth włączy się jutro o 5 rano"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> naładowania baterii"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Dźwięk"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Zestaw słuchawkowy"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Usuń"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Dodaj widżet"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Gotowe"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Zezwolić na dowolny widżet na ekranie blokady?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Otwórz ustawienia"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Cofnąć wstrzymanie aplikacji służbowych?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Cofnij wstrzymanie"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Przełącz użytkownika"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Wszystkie aplikacje i dane w tej sesji zostaną usunięte."</string>
@@ -581,26 +583,29 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Wyciszenie"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Przesyłanie"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Niedostępne, bo dzwonek jest wyciszony"</string>
+ <string name="stream_alarm_unavailable" msgid="4059817189292197839">"Niedostępne, bo włączone jest „Nie przeszkadzać”"</string>
+ <string name="stream_media_unavailable" msgid="6823020894438959853">"Niedostępne, bo włączone jest „Nie przeszkadzać”"</string>
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Kliknij, by wyłączyć wyciszenie."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Kliknij, by włączyć wibracje. Ułatwienia dostępu mogą być wyciszone."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Kliknij, by wyciszyć. Ułatwienia dostępu mogą być wyciszone."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Kliknij, by włączyć wibracje."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Kliknij, by wyciszyć."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Tłumienie szumów"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Dźwięk przestrzenny"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Wyłączony"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Stały"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Monitorowanie głowy"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Kliknij, aby zmienić tryb dzwonka"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"wycisz"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"wyłącz wyciszenie"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"włącz wibracje"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Sterowanie głośnością: %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Połączenia i powiadomienia będą uruchamiały dzwonek (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <string name="volume_panel_enter_media_output_settings" msgid="8824244246272552669">"Otwórz ustawienia sygnału wyjściowego"</string>
+ <string name="volume_panel_expanded_sliders" msgid="1885750987768506271">"Suwaki głośności są rozwinięte"</string>
+ <string name="volume_panel_collapsed_sliders" msgid="1413383759434791450">"Suwaki głośności są zwinięte"</string>
+ <string name="volume_panel_hint_mute" msgid="6962563028495243738">"wycisz: %s"</string>
+ <string name="volume_panel_hint_unmute" msgid="7489063242934477382">"wyłącz wyciszenie: %s"</string>
<string name="media_output_label_title" msgid="872824698593182505">"Odtwarzam <xliff:g id="LABEL">%s</xliff:g> na"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Wyjścia dźwięku:"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Kalibrator System UI"</string>
@@ -1254,7 +1259,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera jest zablokowana"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera i mikrofon są zablokowane"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon jest zablokowany"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Tryb priorytetowy jest włączony"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Wykryto obecność użytkownika"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Ustaw domyślną aplikację do obsługi notatek w Ustawieniach"</string>
<string name="install_app" msgid="5066668100199613936">"Zainstaluj aplikację"</string>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index 381c3bdc9cb3..83d523a3d04b 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"desconectar"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ativar"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Ativar automaticamente de novo amanhã"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Recursos como o Quick Share, o Encontre Meu Dispositivo e a localização do dispositivo usam o Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"O Bluetooth será ativado amanhã às 5h"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Áudio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Fone de ouvido"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Remover"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Adicionar widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Concluído"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Permitir qualquer widget na tela de bloqueio?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Abrir as configurações"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Reativar apps de trabalho?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Reativar"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Trocar usuário"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu suspenso"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Todos os apps e dados nesta sessão serão excluídos."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Desativar som"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Transmitir"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Indisponível com o toque foi silenciado"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Toque para ativar o som."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Toque para configurar para vibrar. É possível que os serviços de acessibilidade sejam silenciados."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Toque para silenciar. É possível que os serviços de acessibilidade sejam silenciados."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Toque para configurar para vibrar."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Toque para silenciar."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Controle de ruído"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Áudio espacial"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Desativado"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fixo"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Rastreamento de cabeça"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Toque para mudar o modo da campainha"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"desativar o som"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"ativar o som"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrar"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Controles de volume %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Chamadas e notificações farão o smartphone tocar (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Tocando <xliff:g id="LABEL">%s</xliff:g> em"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"O áudio vai tocar em"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Sintonizador System UI"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Câmara bloqueada"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Câmera e microfone bloqueados"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microfone bloqueado"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Modo de prioridade ativado"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Presença do usuário detectada"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Defina o app de notas padrão nas Configurações"</string>
<string name="install_app" msgid="5066668100199613936">"Instalar o app"</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 607a4aa1e760..44637a37e027 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"desassociar"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ativar"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Reativar amanhã automaticamente"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"As funcionalidades como Partilha rápida, Localizar o meu dispositivo e localização do dispositivo usam o Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"O Bluetooth vai ser ativado amanhã às 05:00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> de bateria"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Áudio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Ausc. c/ mic. integ."</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Remover"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Adicionar widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Concluir"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Permitir qualquer widget no ecrã de bloqueio?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Abrir definições"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Retomar apps de trabalho?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Retomar"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Mudar utilizador"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu pendente"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Todas as apps e dados desta sessão serão eliminados."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Desativar som"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Transmitir"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Indisponível porque o toque está desat."</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Toque para reativar o som."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Toque para ativar a vibração. Os serviços de acessibilidade podem ser silenciados."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Toque para desativar o som. Os serviços de acessibilidade podem ser silenciados."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Toque para ativar a vibração."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Toque para desativar o som."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Controlo de ruído"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Áudio espacial"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Desativar"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Corrigido"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Head tracking"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Toque para alterar o modo de campainha"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"desativar som"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"reativar som"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrar"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Controlos de volume de %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"As chamadas e as notificações tocam (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"A ouvir <xliff:g id="LABEL">%s</xliff:g> em"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"O áudio será ouv. em"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Sintonizador da interface do sistema"</string>
@@ -755,7 +767,7 @@
<string name="keyboard_shortcut_group_system_multitasking" msgid="1065232949510862593">"Execução de várias tarefas em simultâneo no sistema"</string>
<string name="system_multitasking_rhs" msgid="2454557648974553729">"Aceder ao ecrã dividido com a app atual para RHS"</string>
<string name="system_multitasking_lhs" msgid="3516599774920979402">"Aceder ao ecrã dividido com a app atual para LHS"</string>
- <string name="system_multitasking_full_screen" msgid="336048080383640562">"Mude de ecrã dividido para ecrã inteiro"</string>
+ <string name="system_multitasking_full_screen" msgid="336048080383640562">"Mudar de ecrã dividido para ecrã inteiro"</string>
<string name="system_multitasking_replace" msgid="7410071959803642125">"Durante o ecrã dividido: substituir uma app por outra"</string>
<string name="keyboard_shortcut_group_input" msgid="6888282716546625610">"Entrada"</string>
<string name="input_switch_input_language_next" msgid="3782155659868227855">"Mudar para idioma seguinte"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Câmara bloqueada"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Câmara e microfone bloqueados"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microfone bloqueado"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Modo Prioridade ativado"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Quando deteta a presença do utilizador"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Predefina a app de notas nas Definições"</string>
<string name="install_app" msgid="5066668100199613936">"Instalar app"</string>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 381c3bdc9cb3..83d523a3d04b 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"desconectar"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ativar"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Ativar automaticamente de novo amanhã"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Recursos como o Quick Share, o Encontre Meu Dispositivo e a localização do dispositivo usam o Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"O Bluetooth será ativado amanhã às 5h"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Áudio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Fone de ouvido"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Remover"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Adicionar widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Concluído"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Permitir qualquer widget na tela de bloqueio?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Abrir as configurações"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Reativar apps de trabalho?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Reativar"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Trocar usuário"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu suspenso"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Todos os apps e dados nesta sessão serão excluídos."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Desativar som"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Transmitir"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Indisponível com o toque foi silenciado"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Toque para ativar o som."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Toque para configurar para vibrar. É possível que os serviços de acessibilidade sejam silenciados."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Toque para silenciar. É possível que os serviços de acessibilidade sejam silenciados."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Toque para configurar para vibrar."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Toque para silenciar."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Controle de ruído"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Áudio espacial"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Desativado"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fixo"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Rastreamento de cabeça"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Toque para mudar o modo da campainha"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"desativar o som"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"ativar o som"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrar"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Controles de volume %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Chamadas e notificações farão o smartphone tocar (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Tocando <xliff:g id="LABEL">%s</xliff:g> em"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"O áudio vai tocar em"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Sintonizador System UI"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Câmara bloqueada"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Câmera e microfone bloqueados"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microfone bloqueado"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Modo de prioridade ativado"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Presença do usuário detectada"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Defina o app de notas padrão nas Configurações"</string>
<string name="install_app" msgid="5066668100199613936">"Instalar o app"</string>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 857a167cfad8..24bec4a3ae98 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"deconectează"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activează"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Activează din nou automat mâine"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Funcții precum Quick Share, Găsește-mi dispozitivul și locația dispozitivului folosesc Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth se va activa mâine la 5 dimineața"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Nivelul bateriei: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Căști"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Elimină"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Adaugă un widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Gata"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Permiți vreun widget pe ecranul de blocare?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Deschide setările"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Reactivezi aplicații de lucru?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Reactivează"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Schimbă utilizatorul"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"meniu vertical"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Toate aplicațiile și datele din această sesiune vor fi șterse."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Blochează"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Proiectează"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Indisponibil; soneria este dezactivată"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Atinge pentru a activa sunetul."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Atinge pentru a seta vibrarea. Sunetul se poate dezactiva pentru serviciile de accesibilitate."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Atinge pentru a dezactiva sunetul. Sunetul se poate dezactiva pentru serviciile de accesibilitate."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Atinge pentru a seta pe vibrații."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Atinge pentru a dezactiva sunetul."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Controlul zgomotului"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Audio spațial"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Dezactivat"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fix"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Urmărirea mișcărilor capului"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Atinge pentru a schimba modul soneriei"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"dezactivează sunetul"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"activează sunetul"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrații"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Comenzi de volum pentru %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Apelurile și notificările vor suna (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Se redă <xliff:g id="LABEL">%s</xliff:g> pe"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Conținutul audio se va reda pe"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Camera foto a fost blocată"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Camera foto și microfonul sunt blocate"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Microfonul a fost blocat"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Modul Cu prioritate este activat"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"S-a detectat prezența utilizatorului"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Setează aplicația prestabilită de note din Setări"</string>
<string name="install_app" msgid="5066668100199613936">"Instalează aplicația"</string>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 87150cf6baea..584a7dabc31a 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"отключить"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"активировать"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Включить завтра автоматически"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Bluetooth используется в сервисе \"Найти устройство\", таких функциях, как Быстрая отправка, и при определении местоположения устройства"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth будет включен завтра в 05:00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Заряд: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Аудиоустройство"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Гарнитура"</string>
@@ -439,6 +437,12 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Удалить"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Добавить виджет"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Готово"</string>
+ <!-- no translation found for dialog_title_to_allow_any_widget (1004820948962675644) -->
+ <skip />
+ <!-- no translation found for button_text_to_open_settings (1987729256950941628) -->
+ <skip />
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Включить рабочие приложения?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Включить"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Сменить пользователя."</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"раскрывающееся меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Все приложения и данные этого профиля будут удалены."</string>
@@ -581,26 +585,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Без звука"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Трансляция"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Недоступно, когда отключен звук вызовов"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Нажмите, чтобы включить звук."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Нажмите, чтобы включить вибрацию. Специальные возможности могут прекратить работу."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Нажмите, чтобы выключить звук. Специальные возможности могут прекратить работу."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Нажмите, чтобы включить вибрацию."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Нажмите, чтобы выключить звук."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Контроль уровня шума"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Пространственное звучание"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Отключено"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Без отслеживания"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"С отслеживанием"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Нажмите, чтобы изменить режим звонка."</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"отключить звук"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"включить звук"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"включить вибрацию"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s: регулировка громкости"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Для звонков и уведомлений включен звук (уровень громкости: <xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> – запущено здесь:"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Проигрывание аудио:"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1254,7 +1268,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Камера заблокирована"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Камера и микрофон заблокированы"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Микрофон заблокирован"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Режим \"Только важные\" включен"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Обнаружен пользователь"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Задайте стандартное приложение для заметок в настройках."</string>
<string name="install_app" msgid="5066668100199613936">"Установить приложение"</string>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index e72f1ce015e9..30f7db30e070 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"විසන්ධි කරන්න"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"සක්‍රිය කරන්න"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"හෙට ස්වයංක්‍රීයව නැවත ක්‍රියාත්මක කරන්න"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"ඉක්මන් බෙදා ගැනීම, මගේ උපාංගය සෙවීම, සහ උපාංග ස්ථානය වැනි විශේෂාංග බ්ලූටූත් භාවිත කරයි"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"බ්ලූටූත් හෙට පෙ.ව. 5ට ක්‍රියාත්මක වනු ඇත"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"ශ්‍රව්‍ය"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"හෙඩ්සෙටය"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"ඉවත් කරන්න"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"විජට්ටුව එක් කරන්න"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"නිමයි"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"අගුළු තිරය මත ඕනෑම විජට් එකකට ඉඩ දෙන්න"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"සැකසීම් විවෘත කරන්න"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"කාර්ය යෙදුම් විරාම නොකරන්න ද?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"විරාම නොකරන්න"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"පරිශීලක මාරුව"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"නිපතන මෙනුව"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"මෙම සැසියේ සියළුම යෙදුම් සහ දත්ත මකාවී."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"නිහඬ කරන්න"</string>
<string name="media_device_cast" msgid="4786241789687569892">"විකාශය"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"නාදය නිහඬ කර ඇති නිසා නොලැබේ"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. නිහඬ කිරීම ඉවත් කිරීමට තට්ටු කරන්න."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. කම්පනය කිරීමට තට්ටු කරන්න. ප්‍රවේශ්‍යතා සේවා නිහඬ කළ හැකිය."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. නිහඬ කිරීමට තට්ටු කරන්න. ප්‍රවේශ්‍යතා සේවා නිහඬ කළ හැකිය."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. කම්පනය කිරීමට සකස් කිරීමට තට්ටු කරන්න."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. නිහඬ කිරීමට තට්ටු කරන්න."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"ඝෝෂාව පාලනය"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"අවකාශීය ශ්‍රව්‍ය"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"ක්‍රියාවිරහිතයි"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"නියම කළ"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"හිස ලුහුබැඳීම"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"නාදකය වෙනස් කිරීමට තට්ටු කරන්න"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"නිහඬ කරන්න"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"නිශ්ශබ්දතාවය ඉවත් කරන්න"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"කම්පනය"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"හඬ පරිමා පාලන %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"ඇමතුම් සහ දැනුම්දීම් (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>) නාද කරනු ඇත"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> වාදනය කරන්නේ"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"ශ්‍රව්‍ය වාදනය වනු ඇත්තේ"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"පද්ධති UI සුසරකය"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"ඉහළ විභේදනය සඳහා, දුරකථනය හරවන්න"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"දිග හැරෙමින් පවතින නැමිය හැකි උපාංගය"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"වටා පෙරළෙමින් තිබෙන නැමිය හැකි උපාංගය"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"නැවූ"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"නොනැවූ"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> බැටරිය ඉතිරිව ඇත"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"ඔබේ පන්හිඳ චාජරයකට සම්බන්ධ කරන්න"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"පන්හිඳ බැටරිය අඩුයි"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"කැමරාව අවහිරයි"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"කැමරාව සහ මයික්‍රොෆෝනය අවහිරයි"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"මයික්‍රොෆෝනය අවහිරයි"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ප්‍රමුඛතා මාදිලිය සක්‍රීයයි"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"පරිශීලක රූපාකාරය අනාවරණය වේ"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"සැකසීම් තුළ පෙරනිමි සටහන් යෙදුම සකසන්න"</string>
<string name="install_app" msgid="5066668100199613936">"යෙදුම ස්ථාපනය කරන්න"</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 6614c0d37fe6..21a01221eb14 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"odpojiť"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivovať"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Automaticky zajtra znova zapnúť"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Funkcie, ako sú Quick Share, Nájdi moje zariadenie a poloha zariadenia, používajú Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth sa zapne zajtra o 5:00."</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Batéria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Zvuk"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Náhlavná súprava"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Odstrániť"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Pridať miniaplikáciu"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Hotovo"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Chcete povoliť akúkoľvek miniaplikáciu na uzamknutej obrazovke?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Otvoriť nastavenia"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Zrušiť pozast. prac. aplikácií?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Zrušiť pozastavenie"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Prepnutie používateľa"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rozbaľovacia ponuka"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Všetky aplikácie a údaje v tejto relácii budú odstránené."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Vypnúť zvuk"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Prenos"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Nedostupné, pretože je vypnuté zvonenie"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Klepnutím zapnite zvuk."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Klepnutím aktivujte režim vibrovania. Služby dostupnosti je možné stlmiť."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Klepnutím vypnite zvuk. Služby dostupnosti je možné stlmiť."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Klepnutím nastavíte vibrovanie."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Klepnutím vypnete zvuk."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Ovládanie šumu"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Priestorový zvuk"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Vypnuté"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Pevné"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Sled. pohybov hlavy"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Režim zvonenia zmeníte klepnutím"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"vypnite zvuk"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"zapnite zvuk"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"zapnite vibrovanie"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Ovládacie prvky hlasitosti %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Hovory a upozornenia spustia zvonenie (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> sa prehráva v:"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Zvuk sa prehrá v:"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Tuner používateľského rozhrania systému"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera je blokovaná"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera a mikrofón sú blokované"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofón je blokovaný"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Režim priority je zapnutý"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Bola rozpoznaná prítomnosť používateľa"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Nastavte predvolenú aplikáciu na poznámky v Nastaveniach"</string>
<string name="install_app" msgid="5066668100199613936">"Inštalovať aplikáciu"</string>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 4a46742369c7..06774ed995cf 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"prekinitev povezave"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktiviranje"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Samodejno znova vklopi jutri"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Funkcije, kot so Hitro deljenje, Poišči mojo napravo in zaznavanje lokacije naprave, uporabljajo Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth se bo vklopil jutri ob 5. uri"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Baterija na <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Zvok"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Slušalke z mikrofonom"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Odstrani"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Dodajanje pripomočka"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Končano"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Želite dovoliti poljubne pripomočke na zaklenjenem zaslonu?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Odpri nastavitve"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Želite znova aktivirati delovne aplikacije?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Znova aktiviraj"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Preklop med uporabniki"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"spustni meni"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Vse aplikacije in podatki v tej seji bodo izbrisani."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Utišano"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Predvajanje"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Ni na voljo, ker je zvonjenje izklopljeno"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Dotaknite se, če želite vklopiti zvok."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Dotaknite se, če želite nastaviti vibriranje. V storitvah za dostopnost bo morda izklopljen zvok."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Dotaknite se, če želite izklopiti zvok. V storitvah za dostopnost bo morda izklopljen zvok."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Dotaknite se, če želite nastaviti vibriranje."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Dotaknite se, če želite izklopiti zvok."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Omejevanje hrupa"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Prostorski zvok"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Izklopljeno"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Fiksno"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Spremljanje položaja glave"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Dotaknite se, če želite spremeniti način zvonjenja."</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"izklop zvoka"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"vklop zvoka"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibriranje"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Kontrolniki glasnosti za %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Klici in obvestila bodo pozvonili (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Predvajanje »<xliff:g id="LABEL">%s</xliff:g>« v"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Zvok bo predvajan v"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Uglaševalnik uporabniškega vmesnika sistema"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Fotoaparat je blokiran."</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Fotoaparat in mikrofon sta blokirana."</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon je blokiran."</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prednostni način je vklopljen."</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Zaznana je prisotnost uporabnika"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Nastavite privzeto aplikacijo za zapiske v nastavitvah."</string>
<string name="install_app" msgid="5066668100199613936">"Namesti aplikacijo"</string>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index 1fb6251adf9b..b541c47ecaed 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"shkëput"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivizo"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Aktivizoje automatikisht nesër"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Veçoritë si \"Ndarja e shpejtë\", \"Gjej pajisjen time\" dhe vendndodhja e pajisjes përdorin Bluetooth-in"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth-i do të aktivizohet nesër në 5:00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> bateri"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Kufje me mikrofon"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Hiq"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Shto miniaplikacionin"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"U krye"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Të lejohet ndonjë miniaplikacion te ekrani i kyçjes?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Hap cilësimet"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Hiq nga pauza apl. e punës?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Hiq nga pauza"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Ndërro përdorues"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menyja me tërheqje poshtë"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Të gjitha aplikacionet dhe të dhënat në këtë sesion do të fshihen."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Pa zë"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Transmeto"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Nuk ofrohet; ziles i është hequr zëri"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Trokit për të aktivizuar."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Trokit për ta caktuar te dridhja. Shërbimet e qasshmërisë mund të çaktivizohen."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Trokit për të çaktivizuar. Shërbimet e qasshmërisë mund të çaktivizohen."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Trokit për ta vendosur në dridhje."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Trokit për ta çaktivizuar."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Kontrolli i zhurmës"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Audioja hapësinore"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Joaktive"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"E fiksuar"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Monitorimi i lëvizjes së kokës"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Trokit për të ndryshuar modalitetin e ziles"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"çaktivizo audion"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"aktivizo audion"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"lësho dridhje"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Kontrollet e volumit %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Do të bjerë zilja për telefonatat dhe njoftimet (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Po luhet <xliff:g id="LABEL">%s</xliff:g> në"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Do të luhet audio në"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Sintonizuesi i Sistemit të Ndërfaqes së Përdoruesit"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Për rezolucion më të lartë, përmbys telefonin"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Pajisja e palosshme duke u hapur"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Pajisja e palosshme duke u rrotulluar"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"palosur"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"shpalosur"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Përqindja e mbetur e baterisë: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Lidhe stilolapsin me një karikues"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"Bateria e stilolapsit në nivel të ulët"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera u bllokua"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera dhe mikrofoni u bllokuan"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofoni u bllokua"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Modaliteti i përparësisë aktiv"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Është zbuluar prania e përdoruesit"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Cakto aplikacionin e parazgjedhur të shënimeve te \"Cilësimet\""</string>
<string name="install_app" msgid="5066668100199613936">"Instalo aplikacionin"</string>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 3444c8085f44..3ae30b535e92 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"прекините везу"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"активирајте"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Аутоматски поново укључи сутра"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Функције као што су Quick Share, Пронађи мој уређај и локација уређаја користе Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth ће се укључити сутра у 5:00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Ниво батерије је <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Аудио"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Слушалице"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Уклони"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Додај виџет"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Готово"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Желите да дозволите све виџете на закључаном екрану?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Отвори подешавања"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Укључити пословне апликације?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Поново активирај"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Замени корисника"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"падајући мени"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Све апликације и подаци у овој сесији ће бити избрисани."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Искључи звук"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Пребацивање"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Недоступно јер је звук искључен"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Додирните да бисте укључили звук."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Додирните да бисте подесили на вибрацију. Звук услуга приступачности ће можда бити искључен."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Додирните да бисте искључили звук. Звук услуга приступачности ће можда бити искључен."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Додирните да бисте подесили на вибрацију."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Додирните да бисте искључили звук."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Контрола шума"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Просторни звук"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Искључено"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Фиксно"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Праћење главе"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Додирните да бисте променили режим звона"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"искључите звук"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"укључите звук"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"вибрација"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Контроле за јачину звука за %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Мелодија звона за позиве и обавештења је укључена (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> се пушта на"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Звук се пушта на"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Тјунер за кориснички интерфејс система"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Камера је блокирана"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Камера и микрофон су блокирани"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Микрофон је блокиран"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Приоритетни режим је укључен"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Присуство корисника може да се открије"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Подесите подразумевану апликацију за белешке у Подешавањима"</string>
<string name="install_app" msgid="5066668100199613936">"Инсталирај апликацију"</string>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 2ca3d5d03651..e8f0d2c34440 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"koppla från"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivera"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Aktivera automatiskt igen i morgon"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Funktioner som Snabbdelning, Hitta min enhet och enhetens plats använder Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth aktiveras i morgon kl. 5.00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> batteri"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Ljud"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Headset"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Ta bort"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Lägg till widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Klar"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Vill du tillåta alla widgetar på låsskärmen?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Öppna inställningarna"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Vill du återuppta jobbappar?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Återuppta"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Byt användare"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rullgardinsmeny"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alla appar och data i denna session kommer att raderas."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Dölj"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Casta"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Otillgängligt eftersom ringljudet är av"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Tryck här om du vill slå på ljudet."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Tryck här om du vill sätta på vibrationen. Tillgänglighetstjänster kanske inaktiveras."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Tryck här om du vill stänga av ljudet. Tillgänglighetstjänsterna kanske inaktiveras."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Tryck här om du vill aktivera vibrationsläget."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Tryck här om du vill stänga av ljudet."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Bruskontroll"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Rumsligt ljud"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Av"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Statisk"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Huvudspårning"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Tryck för att ändra ringsignalens läge"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"stänga av ljudet"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"slå på ljudet"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibration"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Volymkontroller för %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Ringsignal används för samtal och aviseringar (volym: <xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Spelar upp <xliff:g id="LABEL">%s</xliff:g> på"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Ljud spelas upp på"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Inställningar för systemgränssnitt"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Vänd telefonen för högre upplösning"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"En vikbar enhet viks upp"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"En vikbar enhet vänds"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"hopvikt"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"uppvikt"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s/%2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> av batteriet återstår"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Anslut e-pennan till en laddare"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"E-pennans batterinivå är låg"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kameran är blockerad"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kameran och mikrofonen är blockerade"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofonen är blockerad"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Prioritetsläge är aktiverat"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Användarnärvaro har upptäckts"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Ställ in en standardapp för anteckningar i inställningarna"</string>
<string name="install_app" msgid="5066668100199613936">"Installera appen"</string>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index b48a0f57d4ce..19685b1368b1 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ondoa"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"anza kutumia"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Iwashe tena kesho kiotomatiki"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Vipengele kama vile Kutuma Haraka, Tafuta Kifaa Changu na mahali kifaa kilipo hutumia Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth itawaka kesho saa 11 alfajiri"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Chaji ya betri ni <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Sauti"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Vifaa vya sauti"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Ondoa"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Ongeza wijeti"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Nimemaliza"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Ungependa kuruhusu wijeti yoyote kwenye skrini iliyofungwa?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Fungua mipangilio"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Je, ungependa kuacha kusitisha programu za kazini?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Acha kusitisha"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Badili mtumiaji"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menyu ya kuvuta chini"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Data na programu zote katika kipindi hiki zitafutwa."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Zima sauti"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Tuma"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Halipatikani kwa sababu sauti imezimwa"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Gusa ili urejeshe."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Gusa ili uweke mtetemo. Huenda ikakomesha huduma za zana za walio na matatizo ya kuona au kusikia."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Gusa ili ukomeshe. Huenda ikakomesha huduma za zana za walio na matatizo ya kuona au kusikia."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Gusa ili uweke mtetemo."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Gusa ili usitishe."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Kidhibiti cha Kelele"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Sauti Inayojirekebisha Kulingana na Hali"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Imezimwa"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Imerekebishwa"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Ufuatilizi wa Kichwa"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Gusa ili ubadilishe hali ya programu inayotoa milio ya simu"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"zima sauti"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"washa sauti"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"tetema"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Vidhibiti %s vya sauti"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Itatoa mlio arifa ikitumwa na simu ikipigwa (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Inacheza <xliff:g id="LABEL">%s</xliff:g> kwenye"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Sauti itacheza kwenye"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Kirekebishi cha kiolesura cha mfumo"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera imezuiwa"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera na maikrofoni zimezuiwa"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Maikrofoni imezuiwa"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Hali ya kipaumbele imewashwa"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Imetambua uwepo wa mtumiaji"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Teua programu chaguomsingi ya madokezo katika Mipangilio"</string>
<string name="install_app" msgid="5066668100199613936">"Sakinisha programu"</string>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index b95406425bcc..742e88f14010 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"இணைப்பு நீக்கும்"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"செயல்படுத்தும்"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"நாளைக்குத் தானாகவே மீண்டும் இயக்கப்படும்"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"விரைவுப் பகிர்தல், Find My Device போன்ற அம்சங்களும் சாதன இருப்பிடமும் புளூடூத்தைப் பயன்படுத்துகின்றன"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"நாளை 5 AMக்கு புளூடூத் ஆன் ஆகும்"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> பேட்டரி"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"ஆடியோ"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"ஹெட்செட்"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"அகற்றும்"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"விட்ஜெட்டைச் சேர்"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"முடிந்தது"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"பூட்டுத் திரையில் எந்தவொரு விட்ஜெட்டையும் அனுமதிக்கவா?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"அமைப்புகளைத் திற"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"பணி ஆப்ஸை மீண்டும் இயக்கவா?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"மீண்டும் இயக்கு"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"பயனரை மாற்று"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"கீழ் இழுக்கும் மெனு"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"இந்த அமர்வின் எல்லா ஆப்ஸும் தரவும் நீக்கப்படும்."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"அமைதி"</string>
<string name="media_device_cast" msgid="4786241789687569892">"அலைபரப்பு"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"\'ரிங்\' மியூட்டில் உள்ளதால் கிடைக்கவில்லை"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. ஒலி இயக்க, தட்டவும்."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. அதிர்விற்கு அமைக்க, தட்டவும். அணுகல்தன்மை சேவைகள் ஒலியடக்கப்படக்கூடும்."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. ஒலியடக்க, தட்டவும். அணுகல்தன்மை சேவைகள் ஒலியடக்கப்படக்கூடும்."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. அதிர்விற்கு அமைக்க, தட்டவும்."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. ஒலியடக்க, தட்டவும்."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"இரைச்சல் கட்டுப்பாடு"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"சுற்றிலும் கேட்கும் ஆடியோ"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"ஆஃப்"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"நிலையானது"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"ஹெட் டிராக்கிங்"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"ரிங்கர் பயன்முறையை மாற்ற தட்டவும்"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"ஒலியடக்கும்"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"ஒலி இயக்கும்"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"அதிர்வுறும்"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s ஒலியளவுக் கட்டுப்பாடுகள்"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"அழைப்புகளும் அறிவிப்புகளும் வரும்போது ஒலிக்கச் செய்யும் (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"இதில் <xliff:g id="LABEL">%s</xliff:g> பிளே ஆகிறது"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"இல் ஆடியோ பிளே ஆகும்"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"கேமரா தடுக்கப்பட்டுள்ளது"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"கேமராவும் மைக்ரோஃபோனும் தடுக்கப்பட்டுள்ளன"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"மைக்ரோஃபோன் தடுக்கப்பட்டுள்ளது"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"முன்னுரிமைப் பயன்முறை இயக்கத்தில் உள்ளது"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"பயனர் கண்டறியப்பட்டுள்ளார்"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"குறிப்பு எடுப்பதற்கான இயல்புநிலை ஆப்ஸை அமைப்புகளில் அமையுங்கள்"</string>
<string name="install_app" msgid="5066668100199613936">"ஆப்ஸை நிறுவுங்கள்"</string>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index 75f872f0c602..0ec2a0e7aa9e 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"డిస్‌కనెక్ట్ చేయండి"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"యాక్టివేట్ చేయండి"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"రేపు మళ్లీ ఆటోమేటిక్‌గా ఆన్ చేస్తుంది"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"క్విక్ షేర్, Find My Device, పరికర లొకేషన్ వంటి ఫీచర్‌లు బ్లూటూత్‌ను ఉపయోగిస్తాయి"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"బ్లూటూత్ రేపు ఉదయం 5 గంటలకు ఆన్ అవుతుంది"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> బ్యాటరీ"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"ఆడియో"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"హెడ్‌సెట్"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"తీసివేయండి"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"విడ్జెట్‌ను జోడించండి"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"పూర్తయింది"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"లాక్ స్క్రీన్‌లో ఏదైనా విడ్జెట్‌ను అనుమతించాలా?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"సెట్టింగ్‌లను తెరవండి"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"వర్క్ యాప్స్ అన్‌పాజ్ చేయాలా?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"అన్‌పాజ్ చేయండి"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"వినియోగదారుని మార్చు"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"పుల్‌డౌన్ మెనూ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ఈ సెషన్‌లోని అన్ని యాప్‌లు మరియు డేటా తొలగించబడతాయి."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"మ్యూట్"</string>
<string name="media_device_cast" msgid="4786241789687569892">"ప్రసారం చేయండి"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"వాల్యూమ్ మ్యూట్ అయినందున అందుబాటులో లేదు"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. అన్‌మ్యూట్ చేయడానికి నొక్కండి."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. వైబ్రేషన్‌కు సెట్ చేయడానికి నొక్కండి. యాక్సెస్ సామర్థ్య సేవలు మ్యూట్ చేయబడవచ్చు."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. మ్యూట్ చేయడానికి నొక్కండి. యాక్సెస్ సామర్థ్య సేవలు మ్యూట్ చేయబడవచ్చు."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. వైబ్రేట్ అయ్యేలా సెట్ చేయడం కోసం నొక్కండి."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. మ్యూట్ చేయడానికి నొక్కండి."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"నాయిస్ కంట్రోల్"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"స్పేషియల్ ఆడియో"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"ఆఫ్ చేయండి"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"ఆరంభించండి"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"హెడ్ ట్రాకింగ్"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"రింగర్ మోడ్‌ను మార్చడానికి ట్యాప్ చేయండి"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"మ్యూట్ చేయి"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"అన్‌మ్యూట్ చేయి"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"వైబ్రేట్"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s వాల్యూమ్ నియంత్రణలు"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"కాల్స్‌ మరియు నోటిఫికేషన్‌లు రింగ్ అవుతాయి (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g>‌లో ప్లే అవుతోంది"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"ఆడియో ప్లే అవుతుంది"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"సిస్టమ్ UI ట్యూనర్"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"అధిక రిజల్యూషన్ కోసం, ఫోన్‌ను తిప్పండి"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"మడవగల పరికరం విప్పబడుతోంది"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"మడవగల పరికరం చుట్టూ తిప్పబడుతోంది"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"మడిచే సదుపాయం గల పరికరం"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"మడిచే సదుపాయం లేని పరికరం"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> బ్యాటరీ మిగిలి ఉంది"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"మీ స్టైలస్‌ను ఛార్జర్‌కి కనెక్ట్ చేయండి"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"తక్కువ స్టైలస్ బ్యాటరీ"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"కెమెరా బ్లాక్ చేయబడింది"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"కెమెరా, మైక్రోఫోన్ బ్లాక్ చేయబడ్డాయి"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"మైక్రోఫోన్ బ్లాక్ చేయబడింది"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ప్రయారిటీ మోడ్ ఆన్‌లో ఉంది"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"యూజర్ ఉనికి గుర్తించబడింది"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"సెట్టింగ్‌లలో ఆటోమేటిక్‌గా ఉండేలా ఒక నోట్స్ యాప్‌ను సెట్ చేసుకోండి"</string>
<string name="install_app" msgid="5066668100199613936">"యాప్‌ను ఇన్‌స్టాల్ చేయండి"</string>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 94243b0329e2..835c5bbbdb3f 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ยกเลิกการเชื่อมต่อ"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"เปิดใช้งาน"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"เปิดอีกครั้งโดยอัตโนมัติในวันพรุ่งนี้"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"ฟีเจอร์ต่างๆ เช่น Quick Share, หาอุปกรณ์ของฉัน และตำแหน่งของอุปกรณ์ ใช้บลูทูธ"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"บลูทูธจะเปิดพรุ่งนี้เวลา 05:00 น."</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"เสียง"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"ชุดหูฟัง"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"นำออก"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"เพิ่มวิดเจ็ต"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"เสร็จสิ้น"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"อนุญาตวิดเจ็ตบนหน้าจอล็อกไหม"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"เปิดการตั้งค่า"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"ยกเลิกการหยุดแอปงานชั่วคราวไหม"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"ยกเลิกการหยุดชั่วคราว"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"สลับผู้ใช้"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"เมนูแบบเลื่อนลง"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ระบบจะลบแอปและข้อมูลทั้งหมดในเซสชันนี้"</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"ปิดเสียง"</string>
<string name="media_device_cast" msgid="4786241789687569892">"แคสต์"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"เปลี่ยนไม่ได้เนื่องจากปิดเสียงเรียกเข้า"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s แตะเพื่อเปิดเสียง"</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s แตะเพื่อตั้งค่าให้สั่น อาจมีการปิดเสียงบริการการเข้าถึง"</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s แตะเพื่อปิดเสียง อาจมีการปิดเสียงบริการการเข้าถึง"</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s แตะเพื่อตั้งค่าให้สั่น"</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s แตะเพื่อปิดเสียง"</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"การควบคุมเสียง"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"เสียงรอบทิศทาง"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"ปิด"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"คงที่"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"การติดตามการเคลื่อนไหวของศีรษะ"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"แตะเพื่อเปลี่ยนโหมดเสียงเรียกเข้า"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"ปิดเสียง"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"เปิดเสียง"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"สั่น"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"ตัวควบคุมระดับเสียง %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"สายเรียกเข้าและการแจ้งเตือนจะส่งเสียง (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"กำลังเล่น <xliff:g id="LABEL">%s</xliff:g> ใน"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"เสียงจะเล่นต่อไป"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"ตัวรับสัญญาณ UI ระบบ"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"กล้องถูกบล็อกอยู่"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"กล้องและไมโครโฟนถูกบล็อกอยู่"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"ไมโครโฟนถูกบล็อกอยู่"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"โหมดลำดับความสำคัญเปิดอยู่"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"ตรวจพบการแสดงข้อมูลของผู้ใช้"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"กำหนดแอปการจดบันทึกเริ่มต้นในการตั้งค่า"</string>
<string name="install_app" msgid="5066668100199613936">"ติดตั้งแอป"</string>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 99b61e97579e..ec3e2b673a2c 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"idiskonekta"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"i-activate"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Awtomatikong i-on ulit bukas"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Guamgamit ng Bluetooth ang mga feature tulad ng Quick Share, Hanapin ang Aking Device, at lokasyon ng device"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Mag-o-on ang Bluetooth bukas nang 5 AM"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> na baterya"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Headset"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Alisin"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Magdagdag ng widget"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Tapos na"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Payagan ang anumang widget sa lock screen?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Buksan ang mga setting"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"I-unpause ang mga work app?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"I-unpause"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Magpalit ng user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Ide-delete ang lahat ng app at data sa session na ito."</string>
@@ -581,26 +583,29 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"I-mute"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Mag-cast"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Hindi available dahil naka-mute ang ring"</string>
+ <string name="stream_alarm_unavailable" msgid="4059817189292197839">"Hindi available dahil naka-on ang Huwag Istorbohin"</string>
+ <string name="stream_media_unavailable" msgid="6823020894438959853">"Hindi available dahil naka-on ang Huwag Istorbohin"</string>
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. I-tap upang i-unmute."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. I-tap upang itakda na mag-vibrate. Maaaring i-mute ang mga serbisyo sa Accessibility."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. I-tap upang i-mute. Maaaring i-mute ang mga serbisyo sa Accessibility."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. I-tap upang itakda na mag-vibrate."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. I-tap upang i-mute."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Pagkontrol sa Ingay"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Spatial Audio"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Naka-off"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Nakapirmi"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Pag-track ng Ulo"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"I-tap para baguhin ang ringer mode"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"i-mute"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"i-unmute"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"i-vibrate"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Mga kontrol ng volume ng %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Magri-ring kapag may mga tawag at notification (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <string name="volume_panel_enter_media_output_settings" msgid="8824244246272552669">"Pumunta sa mga setting ng output"</string>
+ <string name="volume_panel_expanded_sliders" msgid="1885750987768506271">"Na-expand ang mga slider ng volume"</string>
+ <string name="volume_panel_collapsed_sliders" msgid="1413383759434791450">"Na-collapse ang mga slider ng volume"</string>
+ <string name="volume_panel_hint_mute" msgid="6962563028495243738">"i-mute ang %s"</string>
+ <string name="volume_panel_hint_unmute" msgid="7489063242934477382">"i-unmute ang %s"</string>
<string name="media_output_label_title" msgid="872824698593182505">"Nagpe-play ang <xliff:g id="LABEL">%s</xliff:g> sa"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"I-play ang audio sa"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Tuner ng System UI"</string>
@@ -1254,7 +1259,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Naka-block ang camera"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Naka-block ang camera at mikropono"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Naka-block ang mikropono"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Naka-on ang Priority mode"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Na-detect ang presensya ng user"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Magtakda ng default na app sa pagtatala sa Mga Setting"</string>
<string name="install_app" msgid="5066668100199613936">"I-install ang app"</string>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index c20c62aad2d3..3c9d4795e4e7 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"bağlantıyı kes"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"etkinleştir"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Yarın otomatik olarak tekrar aç"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Quick Share, Cihazımı Bul ve cihaz konumu gibi özellikler Bluetooth\'u kullanır"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth yarın saat 05:00\'te açılacak"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Pil düzeyi <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Ses"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Mikrofonlu kulaklık"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Kaldır"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Widget ekle"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Bitti"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Kilit ekranında tüm widget\'lara izin verilsin mi?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Ayarları açın"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"İş uygulamaları devam ettirilsin mi?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Devam ettir"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Kullanıcı değiştirme"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"açılır menü"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Bu oturumdaki tüm uygulamalar ve veriler silinecek."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Sesi kapat"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Yayınla"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Zil sesi kapatıldığı için kullanılamıyor"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Sesi açmak için dokunun."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Titreşime ayarlamak için dokunun. Erişilebilirlik hizmetlerinin sesi kapatılabilir."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Sesi kapatmak için dokunun. Erişilebilirlik hizmetlerinin sesi kapatılabilir."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Titreşime ayarlamak için dokunun."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Sesi kapatmak için dokunun."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Gürültü Kontrolü"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Üç Boyutlu Ses"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Kapalı"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Sabit"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Kafa Hareketi İzleme"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Telefon zili modunu değiştirmek için dokunun"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"sesi kapat"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"sesi aç"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"titreşim"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s ses denetimleri"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Aramalar ve bildirimler telefonun zilini çaldıracak (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> şurada çalacak:"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Ses şurada çalacak:"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Sistem Arayüzü Ayarlayıcısı"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera engellendi"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera ve mikrofon engellendi"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon engellendi"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Öncelik modu etkin"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Kullanıcı varlığı algılandı"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Ayarlar\'ı kullanarak varsayılan notlar ayarlayın"</string>
<string name="install_app" msgid="5066668100199613936">"Uygulamayı yükle"</string>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 3338bce79494..bc557c6b85f6 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"від’єднати"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"активувати"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Автоматично ввімкнути знову завтра"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Такі функції, як швидкий обмін, \"Знайти пристрій\" і визначення місцезнаходження пристрою, використовують Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth увімкнеться завтра о 5:00"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> заряду акумулятора"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Аудіопристрій"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Гарнітура"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Видалити"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Додати віджет"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Готово"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Дозволити використовувати будь-який віджет на заблокованому екрані?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Відкрити налаштування"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Увімкнути робочі додатки?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Увімкнути"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Змінити користувача"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"спадне меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Усі додатки й дані з цього сеансу буде видалено."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Без звуку"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Трансляція"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Недоступно: звук дзвінків вимкнено"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Торкніться, щоб увімкнути звук."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Торкніться, щоб налаштувати вібросигнал. Спеціальні можливості може бути вимкнено."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Торкніться, щоб вимкнути звук. Спеціальні можливості може бути вимкнено."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Торкніться, щоб налаштувати вібросигнал."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Торкніться, щоб вимкнути звук."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Контроль шуму"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Просторове звучання"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Вимкнено"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Завжди ввімкнено"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Відстеження рухів голови"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Торкніться, щоб змінити режим дзвінка"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"вимкнути звук"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"увімкнути звук"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"увімкнути вібросигнал"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Регуляторів гучності: %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Для викликів і сповіщень налаштовано звуковий сигнал (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Відтворюється <xliff:g id="LABEL">%s</xliff:g> на:"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Аудіо гратиме на:"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"System UI Tuner"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Для вищої роздільної здатності переверніть телефон"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Розкладний пристрій у розкладеному стані"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Розкладний пристрій обертається"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"складений"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"розкладений"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Заряд акумулятора: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"Підключіть стилус до зарядного пристрою"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"Низький заряд акумулятора стилуса"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Камеру заблоковано"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Камеру й мікрофон заблоковано"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Мікрофон заблоковано"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Режим пріоритету ввімкнено"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Виявлено присутність користувача"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Призначте стандартний додаток для нотаток у налаштуваннях"</string>
<string name="install_app" msgid="5066668100199613936">"Установити додаток"</string>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index bbc77674207b..5bd251d9d226 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"غیر منسلک کریں"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"فعال کریں"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"کل دوبارہ خودکار طور پر آن ہوگا"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"فوری اشتراک، میرا آلہ ڈھونڈیں، اور آلہ کے مقام جیسی خصوصیات بلوٹوتھ کا استعمال کرتی ہیں"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"بلوٹوتھ کل صبح 5 بجے آن ہو جائے گا"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> بیٹری"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"آڈیو"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"ہیڈ سیٹ"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"ہٹائیں"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"ویجیٹ شامل کریں"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"ہو گیا"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"مقفل اسکرین پر کسی ویجیٹ کی اجازت دیں؟"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"ترتیبات کھولیں"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"ورک ایپس کو غیر موقوف کریں؟"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"غیر موقوف کریں"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"صارف سوئچ کریں"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"پل ڈاؤن مینیو"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"اس سیشن میں موجود سبھی ایپس اور ڈیٹا کو حذف کر دیا جائے گا۔"</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"خاموش کریں"</string>
<string name="media_device_cast" msgid="4786241789687569892">"کاسٹ"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"دستیاب نہیں ہے کیونکہ رنگ خاموش ہے"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"‏‎%1$s۔ آواز چالو کرنے کیلئے تھپتھپائیں۔"</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"‏‎%1$s۔ ارتعاش پر سیٹ کرنے کیلئے تھپتھپائیں۔ ایکسیسبیلٹی سروسز شاید خاموش ہوں۔"</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"‏‎%1$s۔ خاموش کرنے کیلئے تھپتھپائیں۔ ایکسیسبیلٹی سروسز شاید خاموش ہوں۔"</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"‏‎%1$s۔ ارتعاش پر سیٹ کرنے کیلئے تھپتھپائیں۔"</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"‏‎%1$s۔ خاموش کرنے کیلئے تھپتھپائیں۔"</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"شور کنٹرول"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"اسپیشیئل آڈیو"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"آف کریں"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"مقرر"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"سر کی ٹریکنگ"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"رنگر وضع تبدیل کرنے کیلئے تھپتھپائیں"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"خاموش کریں"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"غیر خاموش کریں"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"وائبریٹ"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"‏‎%s والیوم کے کنٹرولز"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"کالز اور اطلاعات موصول ہونے پر گھنٹی بجے گی (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> پر چل رہی ہے"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"آڈیو چلتی رہے گی"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"‏سسٹم UI ٹیونر"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"زیادہ ریزولوشن کے لیے، فون پلٹائیں"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"فولڈ ہونے والے آلے کو کھولا جا رہا ہے"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"فولڈ ہونے والے آلے کو گھمایا جا رہا ہے"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"فولڈ کردہ"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"اَن فولڈ کردہ"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> بیٹری باقی ہے"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"اپنے اسٹائلس کو چارجر منسلک کریں"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"اسٹائلس بیٹری کم ہے"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"کیمرا مسدود ہے"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"کیمرا اور مائیکروفون مسدود ہے"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"مائیکروفون مسدود ہے"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"ترجیحی موڈ آن ہے"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"صارف کی موجودگی کا پتہ چلا ہے"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ترتیبات میں ڈیفالٹ نوٹس ایپ سیٹ کریں"</string>
<string name="install_app" msgid="5066668100199613936">"ایپ انسٹال کریں"</string>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index 4967115f7ee4..7d3f2af3b34d 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"uzish"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"faollashtirish"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Ertaga yana avtomatik yoqilsin"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Tezkor ulashuv, Qurilmamni top va qurilma geolokatsiyasi kabi funksiyalar Bluetooth ishlatadi"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth ertaga soat 5 da yoqiladi"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"Batareya quvvati: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Audio"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Garnitura"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Olib tashlash"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Vidjet kiritish"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Tayyor"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Ekran qulfida istalgan vidjet chiqsinmi?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Sozlamalarni ochish"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Ishga oid ilovalar qaytarilsinmi?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Davom ettirish"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Foydalanuvchini almashtirish"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"tortib tushiriladigan menyu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Ushbu seansdagi barcha ilovalar va ma’lumotlar o‘chirib tashlanadi."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Ovozsiz"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Translatsiya"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Jiringlash ovozsizligi uchun ishlamaydi"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Ovozini yoqish uchun ustiga bosing."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Tebranishni yoqish uchun ustiga bosing. Qulayliklar ishlamasligi mumkin."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Ovozini o‘chirish uchun ustiga bosing. Qulayliklar ishlamasligi mumkin."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Tebranishni yoqish uchun ustiga bosing."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Ovozsiz qilish uchun ustiga bosing."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Shovqin boshqaruvi"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Qamrovli ovoz"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Oʻchiq"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Statik"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Boshni kuzatish"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Jiringlagich rejimini oʻzgartirish uchun bosing"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"ovozsiz qilish"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"ovozni yoqish"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"tebranish"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s tovush balandligi tugmalari"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Chaqiruvlar va bildirishnomalar jiringlaydi (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g>da ijro etilmoqda"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Audio ijro etiladi"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"SystemUI Tuner"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Kamera bloklangan"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Kamera va mikrofon bloklangan"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Mikrofon bloklangan"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Imtiyozli rejim yoniq"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Foydalanuvchi aniqlandi"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Standart qaydlar ilovasini Sozlamalar orqali tanlang"</string>
<string name="install_app" msgid="5066668100199613936">"Ilovani oʻrnatish"</string>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 0b411b5d1925..0a9cbb44f33d 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ngắt kết nối"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"kích hoạt"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Tự động bật lại vào ngày mai"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Các tính năng như Chia sẻ nhanh, Tìm thiết bị của tôi và dịch vụ vị trí trên thiết bị có sử dụng Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"Bluetooth sẽ bật vào ngày mai lúc 5 giờ sáng"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> pin"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Âm thanh"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Tai nghe"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Xoá"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Thêm tiện ích"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Xong"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Cho phép mọi tiện ích trên màn hình khoá?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Mở phần Cài đặt"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Tiếp tục dùng ứng dụng công việc?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Tiếp tục dùng"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Chuyển đổi người dùng"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"trình đơn kéo xuống"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Tất cả ứng dụng và dữ liệu trong phiên này sẽ bị xóa."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Tắt tiếng"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Truyền"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Không hoạt động vì chuông bị tắt"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Nhấn để bật tiếng."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Nhấn để đặt chế độ rung. Bạn có thể tắt tiếng dịch vụ trợ năng."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Nhấn để tắt tiếng. Bạn có thể tắt tiếng dịch vụ trợ năng."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Nhấn để đặt chế độ rung."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Nhấn để tắt tiếng."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Kiểm soát tiếng ồn"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Âm thanh không gian"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Tắt"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Cố định"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Theo dõi chuyển động của đầu"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Nhấn để thay đổi chế độ chuông"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"tắt tiếng"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"bật tiếng"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"rung"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"Điều khiển âm lượng %s"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Cuộc gọi và thông báo sẽ đổ chuông (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Đang phát <xliff:g id="LABEL">%s</xliff:g> trên"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Âm thanh sẽ phát ra"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Bộ điều hướng giao diện người dùng hệ thống"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Máy ảnh bị chặn"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Máy ảnh và micrô bị chặn"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Micrô bị chặn"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Chế độ ưu tiên đang bật"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Phát hiện thấy người dùng đang hiện diện"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Đặt ứng dụng ghi chú mặc định trong phần Cài đặt"</string>
<string name="install_app" msgid="5066668100199613936">"Cài đặt ứng dụng"</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 9a7588496fc7..874286ac4c66 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"断开连接"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"启用"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"明天自动重新开启"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"“快速分享”“查找我的设备”“设备位置信息”等功能会使用蓝牙"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"蓝牙将于明天早晨 5 点开启"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> 的电量"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"音频"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"耳机"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"移除"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"添加微件"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"完成"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"允许在锁屏状态下显示任何微件?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"打开设置"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"是否为工作应用解除暂停状态?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"解除暂停"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切换用户"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"下拉菜单"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"此会话中的所有应用和数据都将被删除。"</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"静音"</string>
<string name="media_device_cast" msgid="4786241789687569892">"投屏"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"该功能无法使用,因为铃声被静音"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s。点按即可取消静音。"</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s。点按即可设为振动,但可能会同时将无障碍服务设为静音。"</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s。点按即可设为静音,但可能会同时将无障碍服务设为静音。"</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s。点按即可设为振动。"</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s。点按即可设为静音。"</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"噪声控制"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"空间音频"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"关闭"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"固定"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"头部跟踪"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"点按即可更改振铃器模式"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"静音"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"取消静音"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"振动"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s音量控件"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"有来电和通知时会响铃 (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g>播放位置:"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"音频播放位置:"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"系统界面调节工具"</string>
@@ -743,9 +755,9 @@
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"显示快捷键"</string>
<string name="group_system_go_back" msgid="2730322046244918816">"返回"</string>
<string name="group_system_access_home_screen" msgid="4130366993484706483">"前往主屏幕"</string>
- <string name="group_system_overview_open_apps" msgid="5659958952937994104">"查看最近运行过的应用"</string>
- <string name="group_system_cycle_forward" msgid="5478663965957647805">"向前循环浏览近期使用的应用"</string>
- <string name="group_system_cycle_back" msgid="8194102916946802902">"向后循环浏览近期使用的应用"</string>
+ <string name="group_system_overview_open_apps" msgid="5659958952937994104">"查看最近用过的应用"</string>
+ <string name="group_system_cycle_forward" msgid="5478663965957647805">"向前循环浏览最近用过的应用"</string>
+ <string name="group_system_cycle_back" msgid="8194102916946802902">"向后循环浏览最近用过的应用"</string>
<string name="group_system_access_all_apps_search" msgid="1553588630154197469">"打开应用列表"</string>
<string name="group_system_hide_reshow_taskbar" msgid="6108733797075862081">"显示任务栏"</string>
<string name="group_system_access_system_settings" msgid="8731721963449070017">"打开设置"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"已禁用摄像头"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"已禁用摄像头和麦克风"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"已禁用麦克风"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"已开启优先模式"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"检测到用户存在"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"在设置中设置默认记事应用"</string>
<string name="install_app" msgid="5066668100199613936">"安装应用"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 2cf6da461f41..bb7919bf886d 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"解除連結"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"啟動"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"明天自動重新開啟"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"「快速共享」、「尋找我的裝置」和裝置位置等功能都會使用藍牙"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"藍牙將於明天上午 5 時開啟"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"音訊"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"耳機"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"移除"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"新增小工具"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"完成"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"要允許在上鎖畫面上顯示任何小工具嗎?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"開啟設定"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"要取消暫停工作應用程式嗎?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"取消暫停"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切換使用者"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"下拉式選單"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"這個工作階段中的所有應用程式和資料都會被刪除。"</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"靜音"</string>
<string name="media_device_cast" msgid="4786241789687569892">"投放"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"鈴聲已設定為靜音,因此無法使用"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s。輕按即可取消靜音。"</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s。輕按即可設為震動。無障礙功能服務可能已經設為靜音。"</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s。輕按即可設為靜音。無障礙功能服務可能已經設為靜音。"</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s。輕按即可設為震動。"</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s。輕按即可設為靜音。"</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"噪音控制"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"空間音訊"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"關閉"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"固定"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"頭部追蹤"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"輕按即可變更響鈴模式"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"靜音"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"取消靜音"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"震動"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s音量控制項"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"有來電和通知時會發出鈴聲 (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"正在播放「<xliff:g id="LABEL">%s</xliff:g>」的裝置:"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"音訊播放媒體"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"系統使用者介面調諧器"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"已封鎖相機"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"已封鎖相機和麥克風"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"已封鎖麥克風"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"優先模式已開啟"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"偵測到使用者動態"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"在「設定」中指定預設筆記應用程式"</string>
<string name="install_app" msgid="5066668100199613936">"安裝應用程式"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 12ca94c458b5..e48e483d4f82 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"取消連結"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"啟用"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"明天自動重新開啟"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"藍牙會用於快速分享、「尋找我的裝置」,以及裝置位置資訊等功能"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"藍牙將在明天早上 5 點開啟"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"音訊"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"耳機"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"移除"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"新增小工具"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"完成"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"要允許在螢幕鎖定畫面上顯示任何小工具嗎?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"開啟設定"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"要解除工作應用程式的暫停狀態嗎?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"取消暫停"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切換使用者"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"下拉式選單"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"這個工作階段中的所有應用程式和資料都會遭到刪除。"</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"靜音"</string>
<string name="media_device_cast" msgid="4786241789687569892">"投放"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"鈴聲已設為靜音,因此無法使用"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s。輕觸即可取消靜音。"</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s。輕觸即可設為震動,但系統可能會將無障礙服務一併設為靜音。"</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s。輕觸即可設為靜音,但系統可能會將無障礙服務一併設為靜音。"</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s。輕觸即可設為震動。"</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s。輕觸即可設為靜音。"</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"噪音控制"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"空間音訊"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"關閉"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"固定"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"頭部追蹤"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"輕觸即可變更鈴聲模式"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"靜音"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"取消靜音"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"震動"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"「%s」音量控制項"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"有來電和通知時會響鈴 (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"正在播放「<xliff:g id="LABEL">%s</xliff:g>」的裝置:"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"將播放音訊的媒體:"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"系統使用者介面調整精靈"</string>
@@ -995,7 +1007,7 @@
<string name="controls_panel_remove_app_authorization" msgid="5920442084735364674">"要移除「<xliff:g id="APPNAME">%s</xliff:g>」的控制項嗎?"</string>
<string name="accessibility_control_favorite" msgid="8694362691985545985">"已加入收藏"</string>
<string name="accessibility_control_favorite_position" msgid="54220258048929221">"已加入收藏,位置 <xliff:g id="NUMBER">%d</xliff:g>"</string>
- <string name="accessibility_control_not_favorite" msgid="1291760269563092359">"從收藏中移除"</string>
+ <string name="accessibility_control_not_favorite" msgid="1291760269563092359">"未加入收藏"</string>
<string name="accessibility_control_change_favorite" msgid="2943178027582253261">"加入收藏"</string>
<string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"從收藏中移除"</string>
<string name="accessibility_control_move" msgid="8980344493796647792">"移到位置 <xliff:g id="NUMBER">%d</xliff:g>"</string>
@@ -1236,12 +1248,9 @@
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"如要提高解析度,請切換至手機後置鏡頭"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"正在展開的折疊式裝置"</string>
<string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"正在翻轉折疊式裝置"</string>
- <!-- no translation found for quick_settings_rotation_posture_folded (2430280856312528289) -->
- <skip />
- <!-- no translation found for quick_settings_rotation_posture_unfolded (6372316273574167114) -->
- <skip />
- <!-- no translation found for rotation_tile_with_posture_secondary_label_template (7648496484163318886) -->
- <skip />
+ <string name="quick_settings_rotation_posture_folded" msgid="2430280856312528289">"已摺疊"</string>
+ <string name="quick_settings_rotation_posture_unfolded" msgid="6372316273574167114">"已展開"</string>
+ <string name="rotation_tile_with_posture_secondary_label_template" msgid="7648496484163318886">"%1$s / %2$s"</string>
<string name="stylus_battery_low_percentage" msgid="1620068112350141558">"剩餘電量:<xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="stylus_battery_low_subtitle" msgid="3583843128908823273">"將觸控筆接上充電器"</string>
<string name="stylus_battery_low" msgid="7134370101603167096">"觸控筆電力不足"</string>
@@ -1257,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"已封鎖攝影機"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"已封鎖攝影機和麥克風"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"已封鎖麥克風"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"優先模式已開啟"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"偵測到使用者"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"在「設定」中指定預設記事應用程式"</string>
<string name="install_app" msgid="5066668100199613936">"安裝應用程式"</string>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index b6f4a1959553..da75c5d6fae8 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -271,10 +271,8 @@
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"nqamula"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"yenza kusebenze"</string>
<string name="turn_on_bluetooth_auto_tomorrow" msgid="414836329962473906">"Vula ngokuzenzekela futhi kusasa"</string>
- <!-- no translation found for turn_on_bluetooth_auto_info_disabled (8267380591344023327) -->
- <skip />
- <!-- no translation found for turn_on_bluetooth_auto_info_enabled (4802071533678400330) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_info_disabled" msgid="8267380591344023327">"Izakhi ezifana Nokwabelana Ngokushesha, okuthi Thola Idivayisi Yami, kanye nendawo yedivayisi zisebenzisa i-Bluetooth"</string>
+ <string name="turn_on_bluetooth_auto_info_enabled" msgid="4802071533678400330">"I-Bluetooth izovulwa kusasa ngo-5 AM"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> ibhethri"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"Umsindo"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"Ihedisethi"</string>
@@ -439,6 +437,10 @@
<string name="button_to_remove_widget" msgid="3948204829181214098">"Susa"</string>
<string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Engeza iwijethi"</string>
<string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Kwenziwe"</string>
+ <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Vumela noma iyiphi iwijethi ekukhiyeni isikrini?"</string>
+ <string name="button_text_to_open_settings" msgid="1987729256950941628">"Vula amasethingi"</string>
+ <string name="work_mode_off_title" msgid="5794818421357835873">"Susa ukumisa ama-app omsebenzi?"</string>
+ <string name="work_mode_turn_on" msgid="907813741770247267">"Qhubekisa"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Shintsha umsebenzisi"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"imenyu yokudonsela phansi"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Wonke ama-app nedatha kulesi sikhathi azosuswa."</string>
@@ -581,26 +583,36 @@
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"Thulisa"</string>
<string name="media_device_cast" msgid="4786241789687569892">"Sakaza"</string>
<string name="stream_notification_unavailable" msgid="4313854556205836435">"Ayitholakali ngoba ukukhala kuthulisiwe"</string>
+ <!-- no translation found for stream_alarm_unavailable (4059817189292197839) -->
+ <skip />
+ <!-- no translation found for stream_media_unavailable (6823020894438959853) -->
+ <skip />
<string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. Thepha ukuze ususe ukuthula."</string>
<string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. Thepha ukuze usethe ukudlidliza. Amasevisi okufinyelela angathuliswa."</string>
<string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. Thepha ukuze uthulise. Amasevisi okufinyelela angathuliswa."</string>
<string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Thepha ukuze usethele ekudlidlizeni."</string>
<string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Thepha ukuze uthulise."</string>
<string name="volume_panel_noise_control_title" msgid="7413949943872304474">"Ulawulo Lomsindo"</string>
- <!-- no translation found for volume_panel_spatial_audio_title (3367048857932040660) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_off (4177490084606772989) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_fixed (3136080137827746046) -->
- <skip />
- <!-- no translation found for volume_panel_spatial_audio_tracking (5711115234001762974) -->
- <skip />
+ <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"Umsindo Wokulalelwayo"</string>
+ <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"Kuvaliwe"</string>
+ <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"Okugxilile"</string>
+ <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"Ukulandelela Ikhanda"</string>
<string name="volume_ringer_change" msgid="3574969197796055532">"Thepha ukuze ushintshe imodi yokukhala"</string>
<string name="volume_ringer_hint_mute" msgid="4263821214125126614">"thulisa"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"susa ukuthula"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"dlidliza"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s izilawuli zevolomu"</string>
<string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Amakholi nezaziso zizokhala (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string>
+ <!-- no translation found for volume_panel_enter_media_output_settings (8824244246272552669) -->
+ <skip />
+ <!-- no translation found for volume_panel_expanded_sliders (1885750987768506271) -->
+ <skip />
+ <!-- no translation found for volume_panel_collapsed_sliders (1413383759434791450) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_mute (6962563028495243738) -->
+ <skip />
+ <!-- no translation found for volume_panel_hint_unmute (7489063242934477382) -->
+ <skip />
<string name="media_output_label_title" msgid="872824698593182505">"Idlala ku-<xliff:g id="LABEL">%s</xliff:g>"</string>
<string name="media_output_title_without_playing" msgid="3825663683169305013">"Umsindo uzodlala"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"Isishuni se-UI yesistimu"</string>
@@ -1254,7 +1266,8 @@
<string name="camera_blocked_dream_overlay_content_description" msgid="4074759493559418130">"Ikhamera ivinjiwe"</string>
<string name="camera_and_microphone_blocked_dream_overlay_content_description" msgid="7891078093416249764">"Ikhamera nemakrofoni zivinjiwe"</string>
<string name="microphone_blocked_dream_overlay_content_description" msgid="5466897982130007033">"Imakrofoni ivinjiwe"</string>
- <string name="priority_mode_dream_overlay_content_description" msgid="6044561000253314632">"Imodi ebalulekile ivuliwe"</string>
+ <!-- no translation found for priority_mode_dream_overlay_content_description (3361628029609329182) -->
+ <skip />
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Ubukhona bomsebenzisi butholakele"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Setha i-app yamanothi azenzakalelayo Kumsethingi"</string>
<string name="install_app" msgid="5066668100199613936">"Faka i-app"</string>
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
index 05eeac6fc199..70465bc3d0b7 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
@@ -343,6 +343,8 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
setPadding(getPaddingLeft(), getPaddingTop() + getResources().getDimensionPixelSize(
R.dimen.keyguard_security_container_padding_top), getPaddingRight(),
getPaddingBottom());
+ setBackgroundColor(Utils.getColorAttrDefaultColor(getContext(),
+ com.android.internal.R.attr.materialColorSurface));
}
void onResume(SecurityMode securityMode, boolean faceAuthEnabled) {
@@ -800,6 +802,8 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
void reloadColors() {
mViewMode.reloadColors();
+ setBackgroundColor(Utils.getColorAttrDefaultColor(getContext(),
+ com.android.internal.R.attr.materialColorSurface));
}
/** Handles density or font scale changes. */
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
index 15ef61ed5934..ea8fe59d3c89 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
@@ -82,6 +82,7 @@ public class SystemUIApplication extends Application implements
public SystemUIApplication() {
super();
+ Trace.registerWithPerfetto();
Log.v(TAG, "SystemUIApplication constructed.");
// SysUI may be building without protolog preprocessing in some cases
ProtoLog.REQUIRE_PROTOLOGTOOL = false;
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java
index 0c9712de3264..1f5a0bf328af 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java
@@ -185,11 +185,7 @@ class MenuView extends FrameLayout implements
final GradientDrawable gradientDrawable = getContainerViewGradient();
gradientDrawable.setStroke(mMenuViewAppearance.getMenuStrokeWidth(),
mMenuViewAppearance.getMenuStrokeColor());
- if (Flags.floatingMenuRadiiAnimation()) {
- mMenuAnimationController.startRadiiAnimation(mMenuViewAppearance.getMenuRadii());
- } else {
- gradientDrawable.setCornerRadii(mMenuViewAppearance.getMenuRadii());
- }
+ mMenuAnimationController.startRadiiAnimation(mMenuViewAppearance.getMenuRadii());
}
void setRadii(float[] radii) {
@@ -402,13 +398,8 @@ class MenuView extends FrameLayout implements
getContainerViewInsetLayer().setLayerInset(INDEX_MENU_ITEM, insets[0], insets[1], insets[2],
insets[3]);
- if (Flags.floatingMenuRadiiAnimation()) {
- mMenuAnimationController.startRadiiAnimation(
- mMenuViewAppearance.getMenuMovingStateRadii());
- } else {
- final GradientDrawable gradientDrawable = getContainerViewGradient();
- gradientDrawable.setCornerRadii(mMenuViewAppearance.getMenuMovingStateRadii());
- }
+ mMenuAnimationController.startRadiiAnimation(
+ mMenuViewAppearance.getMenuMovingStateRadii());
}
void onBoundsInParentChanged(int newLeft, int newTop) {
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/RadiiAnimator.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/RadiiAnimator.java
index 4aa0d89cddb5..8de12f3e1f34 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/RadiiAnimator.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/RadiiAnimator.java
@@ -73,7 +73,7 @@ class RadiiAnimator {
@Override
public void onAnimationRepeat(@NonNull Animator animation) {}
});
- mAnimationDriver.setInterpolator(new android.view.animation.BounceInterpolator());
+ mAnimationDriver.setInterpolator(new android.view.animation.DecelerateInterpolator());
}
void startAnimation(float[] endValues) {
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModel.kt
new file mode 100644
index 000000000000..96e4b341cb6d
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModel.kt
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.communal.ui.viewmodel
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.keyguard.ui.viewmodel.DreamingToGlanceableHubTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.GlanceableHubToDreamingTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.GlanceableHubToLockscreenTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.LockscreenToGlanceableHubTransitionViewModel
+import javax.inject.Inject
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.merge
+
+/** View model for transitions related to the communal hub. */
+@OptIn(ExperimentalCoroutinesApi::class)
+@SysUISingleton
+class CommunalTransitionViewModel
+@Inject
+constructor(
+ glanceableHubToLockscreenTransitionViewModel: GlanceableHubToLockscreenTransitionViewModel,
+ lockscreenToGlanceableHubTransitionViewModel: LockscreenToGlanceableHubTransitionViewModel,
+ dreamToGlanceableHubTransitionViewModel: DreamingToGlanceableHubTransitionViewModel,
+ glanceableHubToDreamTransitionViewModel: GlanceableHubToDreamingTransitionViewModel,
+) {
+ /**
+ * Whether UMO location should be on communal. This flow is responsive to transitions so that a
+ * new value is emitted at the right step of a transition to/from communal hub that the location
+ * of UMO should be updated.
+ */
+ val isUmoOnCommunal: Flow<Boolean> =
+ merge(
+ lockscreenToGlanceableHubTransitionViewModel.showUmo,
+ glanceableHubToLockscreenTransitionViewModel.showUmo,
+ dreamToGlanceableHubTransitionViewModel.showUmo,
+ glanceableHubToDreamTransitionViewModel.showUmo,
+ )
+ .distinctUntilChanged()
+}
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java b/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java
index 9fa3e5fb155d..98ca09df4c05 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java
@@ -119,6 +119,8 @@ import com.android.systemui.dagger.qualifiers.DisplayId;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dagger.qualifiers.TestHarness;
import com.android.systemui.shared.system.PackageManagerWrapper;
+import com.android.systemui.user.utils.UserScopedService;
+import com.android.systemui.user.utils.UserScopedServiceImpl;
import dagger.Module;
import dagger.Provides;
@@ -624,6 +626,12 @@ public class FrameworkServicesModule {
}
@Provides
+ @Singleton
+ static UserScopedService<UserManager> provideScopedUserManager(@Application Context context) {
+ return new UserScopedServiceImpl<>(context, UserManager.class);
+ }
+
+ @Provides
static WallpaperManager provideWallpaperManager(Context context) {
return context.getSystemService(WallpaperManager.class);
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/NotificationStackScrollLayoutSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/NotificationStackScrollLayoutSection.kt
index 02c889dd771d..5dea7cbb801d 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/NotificationStackScrollLayoutSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/NotificationStackScrollLayoutSection.kt
@@ -34,7 +34,6 @@ import com.android.systemui.shade.NotificationPanelView
import com.android.systemui.statusbar.notification.stack.AmbientState
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
import com.android.systemui.statusbar.notification.stack.NotificationStackSizeCalculator
-import com.android.systemui.statusbar.notification.stack.shared.flexiNotifsEnabled
import com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificationContainer
import com.android.systemui.statusbar.notification.stack.ui.viewbinder.NotificationStackAppearanceViewBinder
import com.android.systemui.statusbar.notification.stack.ui.viewbinder.SharedNotificationContainerBinder
@@ -115,7 +114,7 @@ constructor(
)
)
- if (sceneContainerFlags.flexiNotifsEnabled()) {
+ if (sceneContainerFlags.isEnabled()) {
disposableHandles.add(
NotificationStackAppearanceViewBinder.bind(
context,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToGlanceableHubTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToGlanceableHubTransitionViewModel.kt
index 789e4fbd46c2..d948e47e6267 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToGlanceableHubTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToGlanceableHubTransitionViewModel.kt
@@ -29,6 +29,7 @@ import kotlin.time.Duration.Companion.seconds
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flatMapLatest
+import kotlinx.coroutines.flow.map
@OptIn(ExperimentalCoroutinesApi::class)
@SysUISingleton
@@ -71,6 +72,17 @@ constructor(
name = "DREAMING->GLANCEABLE_HUB: dreamOverlayAlpha",
)
+ // Show UMO once the transition starts.
+ val showUmo: Flow<Boolean> =
+ transitionAnimation
+ .sharedFlow(
+ duration = TO_GLANCEABLE_HUB_DURATION,
+ onStep = { it },
+ onCancel = { 0f },
+ onFinish = { 1f },
+ )
+ .map { step -> step != 0f }
+
private companion object {
val TO_GLANCEABLE_HUB_DURATION = 1.seconds
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToDreamingTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToDreamingTransitionViewModel.kt
index 478c4faa1be3..838c22b0da33 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToDreamingTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToDreamingTransitionViewModel.kt
@@ -28,6 +28,7 @@ import kotlin.time.Duration.Companion.seconds
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flatMapLatest
+import kotlinx.coroutines.flow.map
@OptIn(ExperimentalCoroutinesApi::class)
@SysUISingleton
@@ -66,6 +67,17 @@ constructor(
)
}
+ // Show UMO until transition finishes.
+ val showUmo: Flow<Boolean> =
+ transitionAnimation
+ .sharedFlow(
+ duration = FROM_GLANCEABLE_HUB_DURATION,
+ onStep = { it },
+ onCancel = { 0f },
+ onFinish = { 1f },
+ )
+ .map { step -> step != 1f }
+
private companion object {
val FROM_GLANCEABLE_HUB_DURATION = 1.seconds
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToLockscreenTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToLockscreenTransitionViewModel.kt
index 6042117eff12..e05b500620d5 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToLockscreenTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToLockscreenTransitionViewModel.kt
@@ -31,7 +31,6 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.onStart
/**
* Breaks down GLANCEABLE_HUB->LOCKSCREEN transition into discrete steps for corresponding views to
@@ -53,16 +52,17 @@ constructor(
)
val keyguardAlpha: Flow<Float> =
- transitionAnimation
- .sharedFlow(
- duration = 167.milliseconds,
- startTime = 167.milliseconds,
- onStep = { it },
- onFinish = { 1f },
- onCancel = { 0f },
- name = "GLANCEABLE_HUB->LOCKSCREEN: keyguardAlpha",
- )
- .onStart { emit(0f) }
+ transitionAnimation.sharedFlow(
+ duration = 167.milliseconds,
+ startTime = 167.milliseconds,
+ onStep = { it },
+ onFinish = { 1f },
+ onCancel = { 0f },
+ name = "GLANCEABLE_HUB->LOCKSCREEN: keyguardAlpha",
+ )
+
+ // Show UMO as long as keyguard is not visible.
+ val showUmo: Flow<Boolean> = keyguardAlpha.map { alpha -> alpha == 0f }
val keyguardTranslationX: Flow<StateToValue> =
configurationInteractor
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
index 41cc1d620820..55a402597d5b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
@@ -54,7 +54,6 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.combineTransform
import kotlinx.coroutines.flow.distinctUntilChanged
@@ -183,10 +182,6 @@ constructor(
/** Last point that the root view was tapped */
val lastRootViewTapPosition: Flow<Point?> = keyguardInteractor.lastRootViewTapPosition
- /** the shared notification container bounds *on the lockscreen* */
- val notificationBounds: StateFlow<NotificationContainerBounds> =
- keyguardInteractor.notificationContainerBounds
-
/**
* The keyguard root view can be clipped as the shade is pulled down, typically only for
* non-split shade cases.
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGlanceableHubTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGlanceableHubTransitionViewModel.kt
index 5cbc1d4a3745..dae7897a2325 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGlanceableHubTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGlanceableHubTransitionViewModel.kt
@@ -31,7 +31,6 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.onStart
/**
* Breaks down LOCKSCREEN->GLANCEABLE_HUB transition into discrete steps for corresponding views to
@@ -53,15 +52,16 @@ constructor(
)
val keyguardAlpha: Flow<Float> =
- transitionAnimation
- .sharedFlow(
- duration = 167.milliseconds,
- onStep = { 1f - it },
- onFinish = { 0f },
- onCancel = { 1f },
- name = "LOCKSCREEN->GLANCEABLE_HUB: keyguardAlpha",
- )
- .onStart { emit(1f) }
+ transitionAnimation.sharedFlow(
+ duration = 167.milliseconds,
+ onStep = { 1f - it },
+ onFinish = { 0f },
+ onCancel = { 1f },
+ name = "LOCKSCREEN->GLANCEABLE_HUB: keyguardAlpha",
+ )
+
+ // Show UMO as long as keyguard is not visible.
+ val showUmo: Flow<Boolean> = keyguardAlpha.map { alpha -> alpha == 0f }
val keyguardTranslationX: Flow<StateToValue> =
configurationInteractor
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt
index dbd71f3e3a04..a4f3e2174791 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt
@@ -36,7 +36,7 @@ import androidx.annotation.VisibleForTesting
import com.android.app.animation.Interpolators
import com.android.app.tracing.traceSection
import com.android.keyguard.KeyguardViewController
-import com.android.systemui.communal.domain.interactor.CommunalInteractor
+import com.android.systemui.communal.ui.viewmodel.CommunalTransitionViewModel
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Main
@@ -58,7 +58,6 @@ import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.statusbar.policy.SplitShadeStateController
import com.android.systemui.util.animation.UniqueObjectHostView
-import com.android.systemui.util.kotlin.BooleanFlowOperators.and
import com.android.systemui.util.settings.SecureSettings
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
@@ -102,7 +101,7 @@ constructor(
private val mediaManager: MediaDataManager,
private val keyguardViewController: KeyguardViewController,
private val dreamOverlayStateController: DreamOverlayStateController,
- private val communalInteractor: CommunalInteractor,
+ communalTransitionViewModel: CommunalTransitionViewModel,
configurationController: ConfigurationController,
wakefulnessLifecycle: WakefulnessLifecycle,
shadeInteractor: ShadeInteractor,
@@ -587,11 +586,10 @@ constructor(
// Listen to the communal UI state. Make sure that communal UI is showing and hub itself is
// available, ie. not disabled and able to be shown.
coroutineScope.launch {
- and(communalInteractor.isCommunalShowing, communalInteractor.isCommunalAvailable)
- .collect { value ->
- isCommunalShowing = value
- updateDesiredLocation()
- }
+ communalTransitionViewModel.isUmoOnCommunal.collect { value ->
+ isCommunalShowing = value
+ updateDesiredLocation(forceNoAnimation = true)
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt
index 6df57edd34c3..32e8f55e68e7 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt
@@ -46,7 +46,6 @@ import com.android.systemui.scene.shared.logger.SceneLogger
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.statusbar.NotificationShadeWindowController
import com.android.systemui.statusbar.notification.domain.interactor.HeadsUpNotificationInteractor
-import com.android.systemui.statusbar.notification.stack.shared.flexiNotifsEnabled
import com.android.systemui.statusbar.phone.CentralSurfaces
import com.android.systemui.statusbar.policy.domain.interactor.DeviceProvisioningInteractor
import com.android.systemui.util.asIndenting
@@ -120,7 +119,6 @@ constructor(
printSection("SceneContainerFlags") {
println("isEnabled", flags.isEnabled())
printSection("requirementDescription") { println(flags.requirementDescription()) }
- println("flexiNotifsEnabled", flags.flexiNotifsEnabled())
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootViewBinder.kt b/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootViewBinder.kt
index 7c31ca269eb9..809ac2ea9f82 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootViewBinder.kt
@@ -46,7 +46,6 @@ import com.android.systemui.scene.shared.model.SceneDataSourceDelegator
import com.android.systemui.scene.ui.composable.ComposableScene
import com.android.systemui.scene.ui.composable.SceneContainer
import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel
-import com.android.systemui.statusbar.notification.stack.shared.flexiNotifsEnabled
import com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificationContainer
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.SharingStarted
@@ -116,7 +115,7 @@ object SceneWindowRootViewBinder {
// the SceneContainerView. This SharedNotificationContainer should contain NSSL
// due to the NotificationStackScrollLayoutSection (legacy) or
// NotificationSection (scene container) moving it there.
- if (flags.flexiNotifsEnabled()) {
+ if (flags.isEnabled()) {
(sharedNotificationContainer.parent as? ViewGroup)?.removeView(
sharedNotificationContainer
)
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
index 8b791de429ed..975e146f3940 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
@@ -71,6 +71,8 @@ import android.util.IndentingPrintWriter;
import android.util.Log;
import android.util.MathUtils;
import android.view.HapticFeedbackConstants;
+import android.view.InputDevice;
+import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.VelocityTracker;
@@ -355,6 +357,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
private final QuickSettingsControllerImpl mQsController;
private final NaturalScrollingSettingObserver mNaturalScrollingSettingObserver;
private final TouchHandler mTouchHandler = new TouchHandler();
+ private final KeyHandler mKeyHandler = new KeyHandler();
private long mDownTime;
private boolean mTouchSlopExceededBeforeDown;
@@ -816,6 +819,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
mView.addOnLayoutChangeListener(new ShadeLayoutChangeListener());
mView.setOnTouchListener(getTouchHandler());
+ mView.setOnKeyListener(getKeyHandler());
mView.setOnConfigurationChangedListener(config -> loadDimens());
mResources = mView.getResources();
@@ -3590,6 +3594,11 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
return mTouchHandler;
}
+ @VisibleForTesting
+ KeyHandler getKeyHandler() {
+ return mKeyHandler;
+ }
+
@Override
public void disableHeader(int state1, int state2, boolean animated) {
mShadeHeaderController.disable(state1, state2, animated);
@@ -5242,6 +5251,21 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
}
}
+ /** Handles KeyEvents for the Shade. */
+ public final class KeyHandler implements View.OnKeyListener {
+ @Override
+ public boolean onKey(View v, int keyCode, KeyEvent event) {
+ if (event.getAction() == KeyEvent.ACTION_DOWN) {
+ final InputDevice d = event.getDevice();
+ // Trigger user activity if the event comes from a full external keyboard
+ if (d != null && d.isFullKeyboard() && d.isExternal()) {
+ mCentralSurfaces.userActivity();
+ }
+ }
+ return false;
+ }
+ }
+
private final class HeadsUpNotificationViewControllerImpl implements
HeadsUpTouchHelper.HeadsUpNotificationViewController {
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java b/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java
index fd68c56149db..817f0eae815b 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java
@@ -982,8 +982,10 @@ public class QuickSettingsControllerImpl implements QuickSettingsController, Dum
if (!FooterViewRefactor.isEnabled()) {
mNotificationStackScrollLayoutController.setQsFullScreen(qsFullScreen);
}
- mNotificationStackScrollLayoutController.setScrollingEnabled(
- mBarState != KEYGUARD && (!qsFullScreen || mExpansionFromOverscroll));
+ if (!SceneContainerFlag.isEnabled()) {
+ mNotificationStackScrollLayoutController.setScrollingEnabled(
+ mBarState != KEYGUARD && (!qsFullScreen || mExpansionFromOverscroll));
+ }
if (mQsStateUpdateListener != null) {
mQsStateUpdateListener.onQsStateUpdated(getExpanded(), mStackScrollerOverscrolling);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java
index 6548967c7462..e31e9c22e38e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java
@@ -74,6 +74,8 @@ import com.android.systemui.statusbar.notification.interruption.VisualInterrupti
import com.android.systemui.statusbar.notification.interruption.VisualInterruptionRefactor;
import com.android.systemui.statusbar.notification.logging.NotificationPanelLogger;
import com.android.systemui.statusbar.notification.logging.NotificationPanelLoggerImpl;
+import com.android.systemui.statusbar.notification.row.NotificationEntryProcessorFactory;
+import com.android.systemui.statusbar.notification.row.NotificationEntryProcessorFactoryLooperImpl;
import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
import com.android.systemui.statusbar.notification.row.OnUserInteractionCallback;
import com.android.systemui.statusbar.notification.row.ui.viewmodel.ActivatableNotificationViewModelModule;
@@ -234,6 +236,11 @@ public interface NotificationsModule {
/** */
@Binds
+ NotificationEntryProcessorFactory bindNotificationEntryProcessorFactory(
+ NotificationEntryProcessorFactoryLooperImpl factoryImpl);
+
+ /** */
+ @Binds
ConversationIconManager bindConversationIconManager(IconManager iconManager);
/** */
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifBindPipeline.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifBindPipeline.java
index ea564ddb9193..a6b6f0d2ee28 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifBindPipeline.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifBindPipeline.java
@@ -16,9 +16,6 @@
package com.android.systemui.statusbar.notification.row;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.widget.FrameLayout;
@@ -29,7 +26,6 @@ import androidx.annotation.Nullable;
import androidx.core.os.CancellationSignal;
import com.android.systemui.dagger.SysUISingleton;
-import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinder;
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
@@ -82,17 +78,17 @@ public final class NotifBindPipeline {
private final Map<NotificationEntry, BindEntry> mBindEntries = new ArrayMap<>();
private final NotifBindPipelineLogger mLogger;
private final List<BindCallback> mScratchCallbacksList = new ArrayList<>();
- private final Handler mMainHandler;
+ private final Processor<NotificationEntry> mStartProcessor;
private BindStage mStage;
@Inject
NotifBindPipeline(
CommonNotifCollection collection,
NotifBindPipelineLogger logger,
- @Main Looper mainLooper) {
+ NotificationEntryProcessorFactory processorFactory) {
collection.addCollectionListener(mCollectionListener);
mLogger = logger;
- mMainHandler = new NotifBindPipelineHandler(mainLooper);
+ mStartProcessor = processorFactory.create(this::startPipeline);
}
/**
@@ -167,10 +163,7 @@ public final class NotifBindPipeline {
// Abort any existing pipeline run
mStage.abortStage(entry, bindEntry.row);
- if (!mMainHandler.hasMessages(START_PIPELINE_MSG, entry)) {
- Message msg = Message.obtain(mMainHandler, START_PIPELINE_MSG, entry);
- mMainHandler.sendMessage(msg);
- }
+ mStartProcessor.request(entry);
}
/**
@@ -223,7 +216,7 @@ public final class NotifBindPipeline {
mStage.abortStage(entry, row);
}
mStage.deleteStageParams(entry);
- mMainHandler.removeMessages(START_PIPELINE_MSG, entry);
+ mStartProcessor.cancel(entry);
}
};
@@ -247,25 +240,4 @@ public final class NotifBindPipeline {
public final Set<BindCallback> callbacks = new ArraySet<>();
public boolean invalidated;
}
-
- private static final int START_PIPELINE_MSG = 1;
-
- private class NotifBindPipelineHandler extends Handler {
-
- NotifBindPipelineHandler(Looper looper) {
- super(looper);
- }
-
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case START_PIPELINE_MSG:
- NotificationEntry entry = (NotificationEntry) msg.obj;
- startPipeline(entry);
- break;
- default:
- throw new IllegalArgumentException("Unknown message type: " + msg.what);
- }
- }
- }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/shared/SceneContainerFlagsExtension.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationEntryProcessorFactory.kt
index 7dfd53e544c0..f32351300e99 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/shared/SceneContainerFlagsExtension.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationEntryProcessorFactory.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2023 The Android Open Source Project
+ * Copyright (C) 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,15 +13,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package com.android.systemui.statusbar.notification.row
-package com.android.systemui.statusbar.notification.stack.shared
+import com.android.systemui.statusbar.notification.collection.NotificationEntry
+import java.util.function.Consumer
-import com.android.systemui.scene.shared.flag.SceneContainerFlags
-
-private const val FLEXI_NOTIFS = true
-
-/**
- * Returns whether flexiglass is displaying notifications, which is currently an optional piece of
- * flexiglass
- */
-fun SceneContainerFlags.flexiNotifsEnabled() = FLEXI_NOTIFS && isEnabled()
+/** an interface for [NotifBindPipeline] to build a main thread message processor */
+interface NotificationEntryProcessorFactory {
+ /** Creates a [Processor] that will call the given consumer */
+ fun create(consumer: Consumer<NotificationEntry>): Processor<NotificationEntry>
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationEntryProcessorFactoryExecutorImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationEntryProcessorFactoryExecutorImpl.kt
new file mode 100644
index 000000000000..83b92a93b689
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationEntryProcessorFactoryExecutorImpl.kt
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.systemui.statusbar.notification.row
+
+import com.android.systemui.dagger.qualifiers.Main
+import com.android.systemui.statusbar.notification.collection.NotificationEntry
+import com.android.systemui.util.concurrency.DelayableExecutor
+import java.util.concurrent.ConcurrentHashMap
+import java.util.function.Consumer
+import javax.inject.Inject
+
+class NotificationEntryProcessorFactoryExecutorImpl
+@Inject
+constructor(@Main private val mMainExecutor: DelayableExecutor) :
+ NotificationEntryProcessorFactory {
+ override fun create(consumer: Consumer<NotificationEntry>): Processor<NotificationEntry> {
+ return ExecutorProcessor(mMainExecutor, consumer)
+ }
+
+ private class ExecutorProcessor(
+ private val executor: DelayableExecutor,
+ private val consumer: Consumer<NotificationEntry>,
+ ) : Processor<NotificationEntry> {
+ val cancellationsByEntry = ConcurrentHashMap<NotificationEntry, Runnable>()
+
+ override fun request(obj: NotificationEntry) {
+ cancellationsByEntry.computeIfAbsent(obj) { entry ->
+ executor.executeDelayed({ processEntry(entry) }, 0L)
+ }
+ }
+
+ private fun processEntry(entry: NotificationEntry) {
+ val cancellation = cancellationsByEntry.remove(entry)
+ if (cancellation != null) {
+ consumer.accept(entry)
+ }
+ }
+
+ override fun cancel(obj: NotificationEntry) {
+ cancellationsByEntry.remove(obj)?.run()
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationEntryProcessorFactoryLooperImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationEntryProcessorFactoryLooperImpl.kt
new file mode 100644
index 000000000000..7f7a6c402f1a
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationEntryProcessorFactoryLooperImpl.kt
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.systemui.statusbar.notification.row
+
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import com.android.systemui.dagger.qualifiers.Main
+import com.android.systemui.statusbar.notification.collection.NotificationEntry
+import java.util.function.Consumer
+import javax.inject.Inject
+
+class NotificationEntryProcessorFactoryLooperImpl
+@Inject
+constructor(@Main private val mMainLooper: Looper) : NotificationEntryProcessorFactory {
+ override fun create(consumer: Consumer<NotificationEntry>): Processor<NotificationEntry> {
+ return HandlerProcessor(mMainLooper, consumer)
+ }
+
+ private class HandlerProcessor(
+ looper: Looper,
+ private val consumer: Consumer<NotificationEntry>,
+ ) : Handler(looper), Processor<NotificationEntry> {
+ override fun handleMessage(msg: Message) {
+ if (msg.what == PROCESS_MSG) {
+ val entry = msg.obj as NotificationEntry
+ consumer.accept(entry)
+ } else {
+ throw IllegalArgumentException("Unknown message type: " + msg.what)
+ }
+ }
+
+ override fun request(obj: NotificationEntry) {
+ if (!hasMessages(PROCESS_MSG, obj)) {
+ val msg = Message.obtain(this, PROCESS_MSG, obj)
+ sendMessage(msg)
+ }
+ }
+
+ override fun cancel(obj: NotificationEntry) {
+ removeMessages(PROCESS_MSG, obj)
+ }
+ companion object {
+ private const val PROCESS_MSG = 1
+ }
+ }
+}
diff --git a/core/java/android/os/WorkDuration.aidl b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/Processor.kt
index 0f61204d72c4..7ff9d7155ca5 100644
--- a/core/java/android/os/WorkDuration.aidl
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/Processor.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2023 The Android Open Source Project
+ * Copyright (C) 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package com.android.systemui.statusbar.notification.row
-package android.os;
+/** A generic interface for requesting async processing of objects, as well as cancellation */
+interface Processor<T> {
+ /** request that the object be processed if it is not already waiting */
+ fun request(obj: T)
-parcelable WorkDuration cpp_header "android/WorkDuration.h"; \ No newline at end of file
+ /** cancel a request to process the given object if one is still pending */
+ fun cancel(obj: T)
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotificationStackAppearanceViewBinder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotificationStackAppearanceViewBinder.kt
index 8b1b06eb1453..f10e5f1ab022 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotificationStackAppearanceViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotificationStackAppearanceViewBinder.kt
@@ -48,11 +48,13 @@ object NotificationStackAppearanceViewBinder {
repeatOnLifecycle(Lifecycle.State.CREATED) {
launch {
viewModel.stackBounds.collect { bounds ->
+ val viewLeft = controller.view.left
+ val viewTop = controller.view.top
controller.setRoundedClippingBounds(
- bounds.left.roundToInt(),
- bounds.top.roundToInt(),
- bounds.right.roundToInt(),
- bounds.bottom.roundToInt(),
+ bounds.left.roundToInt() - viewLeft,
+ bounds.top.roundToInt() - viewTop,
+ bounds.right.roundToInt() - viewLeft,
+ bounds.bottom.roundToInt() - viewTop,
SCRIM_CORNER_RADIUS.dpToPx(context),
0,
)
@@ -80,6 +82,8 @@ object NotificationStackAppearanceViewBinder {
wasExpanding = nowExpanding
}
}
+
+ launch { viewModel.isScrollable.collect { controller.setScrollingEnabled(it) } }
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt
index 5b8b91c6a5fb..7c76ddbec105 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt
@@ -28,7 +28,6 @@ import com.android.systemui.scene.shared.flag.SceneContainerFlags
import com.android.systemui.statusbar.notification.footer.shared.FooterViewRefactor
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
import com.android.systemui.statusbar.notification.stack.NotificationStackSizeCalculator
-import com.android.systemui.statusbar.notification.stack.shared.flexiNotifsEnabled
import com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificationContainer
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.SharedNotificationContainerViewModel
import kotlinx.coroutines.CoroutineDispatcher
@@ -136,7 +135,7 @@ object SharedNotificationContainerBinder {
.collect { controller.setMaxDisplayedNotifications(it) }
}
- if (!sceneContainerFlags.flexiNotifsEnabled()) {
+ if (!sceneContainerFlags.isEnabled()) {
launch {
viewModel.bounds.collect {
val animate =
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationStackAppearanceViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationStackAppearanceViewModel.kt
index 8d1cdfac90c5..b6167e1ef0fb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationStackAppearanceViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationStackAppearanceViewModel.kt
@@ -20,23 +20,28 @@ package com.android.systemui.statusbar.notification.stack.ui.viewmodel
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.systemui.common.shared.model.NotificationContainerBounds
import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dump.DumpManager
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.shared.model.Scenes.Shade
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.statusbar.notification.stack.domain.interactor.NotificationStackAppearanceInteractor
import com.android.systemui.util.kotlin.FlowDumperImpl
import javax.inject.Inject
+import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.map
/** ViewModel which represents the state of the NSSL/Controller in the world of flexiglass */
@SysUISingleton
class NotificationStackAppearanceViewModel
@Inject
constructor(
+ @Application applicationScope: CoroutineScope,
dumpManager: DumpManager,
stackAppearanceInteractor: NotificationStackAppearanceInteractor,
shadeInteractor: ShadeInteractor,
@@ -83,4 +88,8 @@ constructor(
/** The y-coordinate in px of top of the contents of the notification stack. */
val contentTop: StateFlow<Float> = stackAppearanceInteractor.contentTop.dumpValue("contentTop")
+
+ /** Whether the notification stack is scrollable or not. */
+ val isScrollable: Flow<Boolean> =
+ sceneInteractor.currentScene.map { it == Shade }.dumpWhileCollecting("isScrollable")
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt
index 7ac5cd48f24a..9e2497d5bb41 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt
@@ -21,11 +21,9 @@ import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.flags.FeatureFlagsClassic
import com.android.systemui.flags.Flags
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
-import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.flag.SceneContainerFlags
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.statusbar.notification.stack.domain.interactor.NotificationStackAppearanceInteractor
-import com.android.systemui.statusbar.notification.stack.shared.flexiNotifsEnabled
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
@@ -43,15 +41,11 @@ constructor(
featureFlags: FeatureFlagsClassic,
private val keyguardInteractor: KeyguardInteractor,
) {
- /** DEBUG: whether the placeholder "Notifications" text should be shown. */
- val isPlaceholderTextVisible: Boolean =
- !flags.flexiNotifsEnabled() && SceneContainerFlag.isEnabled
-
/** DEBUG: whether the placeholder should be made slightly visible for positional debugging. */
val isVisualDebuggingEnabled: Boolean = featureFlags.isEnabled(Flags.NSSL_DEBUG_LINES)
/** DEBUG: whether the debug logging should be output. */
- val isDebugLoggingEnabled: Boolean = flags.flexiNotifsEnabled()
+ val isDebugLoggingEnabled: Boolean = flags.isEnabled()
/**
* Notifies that the bounds of the notification placeholder have changed.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
index 2c4813aec99d..a38840b10b5f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
@@ -448,9 +448,12 @@ constructor(
isOnGlanceableHubWithoutShade,
isOnLockscreen,
merge(
- lockscreenToGlanceableHubTransitionViewModel.notificationAlpha,
- glanceableHubToLockscreenTransitionViewModel.notificationAlpha,
- )
+ lockscreenToGlanceableHubTransitionViewModel.notificationAlpha,
+ glanceableHubToLockscreenTransitionViewModel.notificationAlpha,
+ )
+ // Manually emit on start because [notificationAlpha] only starts emitting
+ // when transitions start.
+ .onStart { emit(1f) }
) { isOnGlanceableHubWithoutShade, isOnLockscreen, alpha,
->
if (isOnGlanceableHubWithoutShade && !isOnLockscreen) {
@@ -506,6 +509,12 @@ constructor(
)
.dumpWhileCollecting("translationX")
+ private val availableHeight: Flow<Float> =
+ bounds
+ .map { it.bottom - it.top }
+ .distinctUntilChanged()
+ .dumpWhileCollecting("availableHeight")
+
/**
* When on keyguard, there is limited space to display notifications so calculate how many could
* be shown. Otherwise, there is no limit since the vertical space will be scrollable.
@@ -527,19 +536,19 @@ constructor(
showLimitedNotifications,
showUnlimitedNotifications,
shadeInteractor.isUserInteracting,
- bounds,
+ availableHeight,
interactor.notificationStackChanged.onStart { emit(Unit) },
interactor.useExtraShelfSpace,
) { flows ->
val showLimitedNotifications = flows[0] as Boolean
val showUnlimitedNotifications = flows[1] as Boolean
val isUserInteracting = flows[2] as Boolean
- val bounds = flows[3] as NotificationContainerBounds
+ val availableHeight = flows[3] as Float
val useExtraShelfSpace = flows[5] as Boolean
if (!isUserInteracting) {
if (showLimitedNotifications) {
- emit(calculateSpace(bounds.bottom - bounds.top, useExtraShelfSpace))
+ emit(calculateSpace(availableHeight, useExtraShelfSpace))
} else if (showUnlimitedNotifications) {
emit(-1)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java
index 7ac3e9c2d94c..bf3347327440 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java
@@ -31,6 +31,8 @@ import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.util.DeviceConfigProxy;
+import java.util.concurrent.Executor;
+
import javax.inject.Inject;
@SysUISingleton
@@ -60,18 +62,18 @@ public final class SmartReplyConstants {
private volatile int mMaxNumActions;
private volatile long mOnClickInitDelay;
- private final Handler mHandler;
+ private final Executor mMainExecutor;
private final Context mContext;
private final DeviceConfigProxy mDeviceConfig;
private final KeyValueListParser mParser = new KeyValueListParser(',');
@Inject
public SmartReplyConstants(
- @Main Handler handler,
+ @Main Executor mainExecutor,
Context context,
DeviceConfigProxy deviceConfig
) {
- mHandler = handler;
+ mMainExecutor = mainExecutor;
mContext = context;
final Resources resources = mContext.getResources();
mDefaultEnabled = resources.getBoolean(
@@ -104,7 +106,7 @@ public final class SmartReplyConstants {
}
private void postToHandler(Runnable r) {
- this.mHandler.post(r);
+ this.mMainExecutor.execute(r);
}
private final DeviceConfig.OnPropertiesChangedListener mOnPropertiesChangedListener =
diff --git a/packages/SystemUI/src/com/android/systemui/user/utils/UserScopedService.kt b/packages/SystemUI/src/com/android/systemui/user/utils/UserScopedService.kt
new file mode 100644
index 000000000000..b0f849936dd5
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/user/utils/UserScopedService.kt
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.user.utils
+
+import android.content.Context
+import android.os.UserHandle
+import androidx.core.content.getSystemService
+import com.android.systemui.dagger.qualifiers.Application
+
+/**
+ * Provides instances of a [system service][Context.getSystemService] created with
+ * [the context of a specified user][Context.createContextAsUser].
+ *
+ * Some services which have only `@UserHandleAware` APIs operate on the user id available from
+ * [Context.getUser], the context used to retrieve the service. This utility helps adapt a per-user
+ * API model to work in multi-user manner.
+ *
+ * Example usage:
+ * ```
+ * @Provides
+ * fun scopedUserManager(@Application ctx: Context): UserScopedService<UserManager> {
+ * return UserScopedServiceImpl(ctx, UserManager::class)
+ * }
+ *
+ * class MyUserHelper @Inject constructor(
+ * private val userMgr: UserScopedService<UserManager>,
+ * ) {
+ * fun isPrivateProfile(user: UserHandle): UserManager {
+ * return userMgr.forUser(user).isPrivateProfile()
+ * }
+ * }
+ * ```
+ */
+fun interface UserScopedService<T> {
+ /** Create a service instance for the given user. */
+ fun forUser(user: UserHandle): T
+}
+
+class UserScopedServiceImpl<T : Any>(
+ @Application private val context: Context,
+ private val serviceType: Class<T>,
+) : UserScopedService<T> {
+ override fun forUser(user: UserHandle): T {
+ val context =
+ if (context.user == user) {
+ context
+ } else {
+ context.createContextAsUser(user, 0)
+ }
+ return requireNotNull(context.getSystemService(serviceType))
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt
index 29820f7a7249..5f7c3869fee7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt
@@ -24,14 +24,13 @@ import android.view.ViewGroup
import android.widget.FrameLayout
import androidx.test.filters.SmallTest
import com.android.keyguard.KeyguardViewController
-import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
-import com.android.systemui.communal.domain.interactor.communalInteractor
-import com.android.systemui.communal.domain.interactor.setCommunalAvailable
-import com.android.systemui.communal.shared.model.CommunalScenes
+import com.android.systemui.communal.ui.viewmodel.communalTransitionViewModel
import com.android.systemui.controls.controller.ControlsControllerImplTest.Companion.eq
import com.android.systemui.dreams.DreamOverlayStateController
import com.android.systemui.keyguard.WakefulnessLifecycle
+import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
+import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.kosmos.testScope
import com.android.systemui.media.controls.domain.pipeline.MediaDataManager
import com.android.systemui.media.controls.ui.view.MediaCarouselScrollHandler
@@ -115,10 +114,10 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
private lateinit var isQsBypassingShade: MutableStateFlow<Boolean>
private lateinit var mediaFrame: ViewGroup
private val configurationController = FakeConfigurationController()
- private val communalInteractor = kosmos.communalInteractor
private val settings = FakeSettings()
private lateinit var testableLooper: TestableLooper
private lateinit var fakeHandler: FakeHandler
+ private val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository
@Before
fun setup() {
@@ -142,7 +141,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
mediaDataManager,
keyguardViewController,
dreamOverlayStateController,
- communalInteractor,
+ kosmos.communalTransitionViewModel,
configurationController,
wakefulnessLifecycle,
shadeInteractor,
@@ -510,12 +509,11 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
@Test
fun testCommunalLocation() =
testScope.runTest {
- mSetFlagsRule.enableFlags(Flags.FLAG_COMMUNAL_HUB)
- kosmos.setCommunalAvailable(true)
- runCurrent()
-
- communalInteractor.onSceneChanged(CommunalScenes.Communal)
- runCurrent()
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.LOCKSCREEN,
+ to = KeyguardState.GLANCEABLE_HUB,
+ testScope = testScope,
+ )
verify(mediaCarouselController)
.onDesiredLocationChanged(
eq(MediaHierarchyManager.LOCATION_COMMUNAL_HUB),
@@ -526,8 +524,11 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
)
clearInvocations(mediaCarouselController)
- communalInteractor.onSceneChanged(CommunalScenes.Blank)
- runCurrent()
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.GLANCEABLE_HUB,
+ to = KeyguardState.LOCKSCREEN,
+ testScope = testScope,
+ )
verify(mediaCarouselController)
.onDesiredLocationChanged(
eq(MediaHierarchyManager.LOCATION_QQS),
@@ -541,16 +542,15 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
@Test
fun testCommunalLocation_showsOverLockscreen() =
testScope.runTest {
- mSetFlagsRule.enableFlags(Flags.FLAG_COMMUNAL_HUB)
- kosmos.setCommunalAvailable(true)
- runCurrent()
-
// Device is on lock screen.
whenever(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD)
- // UMO goes to communal even over the lock screen.
- communalInteractor.onSceneChanged(CommunalScenes.Communal)
- runCurrent()
+ // UMO goes to communal from the lock screen.
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.LOCKSCREEN,
+ to = KeyguardState.GLANCEABLE_HUB,
+ testScope = testScope,
+ )
verify(mediaCarouselController)
.onDesiredLocationChanged(
eq(MediaHierarchyManager.LOCATION_COMMUNAL_HUB),
@@ -564,15 +564,14 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
@Test
fun testCommunalLocation_showsUntilQsExpands() =
testScope.runTest {
- mSetFlagsRule.enableFlags(Flags.FLAG_COMMUNAL_HUB)
- kosmos.setCommunalAvailable(true)
- runCurrent()
-
// Device is on lock screen.
whenever(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD)
- communalInteractor.onSceneChanged(CommunalScenes.Communal)
- runCurrent()
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.LOCKSCREEN,
+ to = KeyguardState.GLANCEABLE_HUB,
+ testScope = testScope,
+ )
verify(mediaCarouselController)
.onDesiredLocationChanged(
eq(MediaHierarchyManager.LOCATION_COMMUNAL_HUB),
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifBindPipelineTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifBindPipelineTest.java
index 6faebf6ce335..25172deb67a7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifBindPipelineTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifBindPipelineTest.java
@@ -34,6 +34,8 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
import com.android.systemui.statusbar.notification.row.NotifBindPipeline.BindCallback;
+import com.android.systemui.util.concurrency.FakeExecutor;
+import com.android.systemui.util.time.FakeSystemClock;
import org.junit.Before;
import org.junit.Test;
@@ -51,7 +53,8 @@ import java.util.List;
public class NotifBindPipelineTest extends SysuiTestCase {
private NotifBindPipeline mBindPipeline;
- private TestBindStage mStage = new TestBindStage();
+ private final TestBindStage mStage = new TestBindStage();
+ private final FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock());
@Mock private NotificationEntry mEntry;
@Mock private ExpandableNotificationRow mRow;
@@ -64,7 +67,7 @@ public class NotifBindPipelineTest extends SysuiTestCase {
mBindPipeline = new NotifBindPipeline(
collection,
new NotifBindPipelineLogger(logcatLogBuffer()),
- TestableLooper.get(this).getLooper());
+ new NotificationEntryProcessorFactoryExecutorImpl(mFakeExecutor));
mBindPipeline.setStage(mStage);
ArgumentCaptor<NotifCollectionListener> collectionListenerCaptor =
@@ -83,7 +86,7 @@ public class NotifBindPipelineTest extends SysuiTestCase {
// WHEN content is invalidated
BindCallback callback = mock(BindCallback.class);
mStage.requestRebind(mEntry, callback);
- TestableLooper.get(this).processAllMessages();
+ mFakeExecutor.runAllReady();
// WHEN stage finishes its work
mStage.doWorkSynchronously();
@@ -100,7 +103,7 @@ public class NotifBindPipelineTest extends SysuiTestCase {
// GIVEN an in-progress pipeline run
BindCallback callback = mock(BindCallback.class);
CancellationSignal signal = mStage.requestRebind(mEntry, callback);
- TestableLooper.get(this).processAllMessages();
+ mFakeExecutor.runAllReady();
// WHEN the callback is cancelled.
signal.cancel();
@@ -120,12 +123,12 @@ public class NotifBindPipelineTest extends SysuiTestCase {
// WHEN the pipeline is invalidated.
BindCallback callback = mock(BindCallback.class);
mStage.requestRebind(mEntry, callback);
- TestableLooper.get(this).processAllMessages();
+ mFakeExecutor.runAllReady();
// WHEN the pipeline is invalidated again before the work completes.
BindCallback callback2 = mock(BindCallback.class);
mStage.requestRebind(mEntry, callback2);
- TestableLooper.get(this).processAllMessages();
+ mFakeExecutor.runAllReady();
// WHEN the stage finishes all work.
mStage.doWorkSynchronously();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java
index 3b78b7e492f5..09a3eb480a49 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java
@@ -23,6 +23,7 @@ import static android.app.NotificationManager.IMPORTANCE_HIGH;
import static com.android.systemui.log.LogBufferHelperKt.logcatLogBuffer;
import static com.android.systemui.statusbar.NotificationEntryHelper.modifyRanking;
+import static com.android.systemui.util.Assert.runWithCurrentThreadAsMainThread;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -42,6 +43,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.LauncherApps;
import android.graphics.drawable.Icon;
+import android.os.Looper;
import android.os.UserHandle;
import android.service.notification.StatusBarNotification;
import android.testing.TestableLooper;
@@ -90,6 +92,8 @@ import com.android.systemui.statusbar.policy.InflatedSmartReplyViewHolder;
import com.android.systemui.statusbar.policy.SmartReplyConstants;
import com.android.systemui.statusbar.policy.SmartReplyStateInflater;
import com.android.systemui.statusbar.policy.dagger.RemoteInputViewSubcomponent;
+import com.android.systemui.util.concurrency.FakeExecutor;
+import com.android.systemui.util.time.FakeSystemClock;
import com.android.systemui.util.time.SystemClock;
import com.android.systemui.util.time.SystemClockImpl;
import com.android.systemui.wmshell.BubblesManager;
@@ -123,7 +127,7 @@ public class NotificationTestHelper {
private static final String APP_NAME = "appName";
private final Context mContext;
- private final TestableLooper mTestLooper;
+ private final Runnable mBindPipelineAdvancement;
private int mId;
private final ExpandableNotificationRowLogger mMockLogger;
private final GroupMembershipManager mGroupMembershipManager;
@@ -151,18 +155,23 @@ public class NotificationTestHelper {
public NotificationTestHelper(
Context context,
+ TestableDependency dependency) {
+ this(context, dependency, null);
+ }
+
+ public NotificationTestHelper(
+ Context context,
TestableDependency dependency,
- TestableLooper testLooper) {
+ @Nullable TestableLooper testLooper) {
this(context, dependency, testLooper, new FakeFeatureFlags());
}
public NotificationTestHelper(
Context context,
TestableDependency dependency,
- TestableLooper testLooper,
+ @Nullable TestableLooper testLooper,
@NonNull FakeFeatureFlags featureFlags) {
mContext = context;
- mTestLooper = testLooper;
mFeatureFlags = Objects.requireNonNull(featureFlags);
dependency.injectTestDependency(FeatureFlags.class, mFeatureFlags);
dependency.injectMockDependency(NotificationMediaManager.class);
@@ -198,10 +207,27 @@ public class NotificationTestHelper {
CommonNotifCollection collection = mock(CommonNotifCollection.class);
+ // NOTE: This helper supports using either a TestableLooper or its own private FakeExecutor.
+ final Runnable processorAdvancement;
+ final NotificationEntryProcessorFactory processorFactory;
+ if (testLooper == null) {
+ FakeExecutor fakeExecutor = new FakeExecutor(new FakeSystemClock());
+ processorAdvancement = () -> {
+ runWithCurrentThreadAsMainThread(fakeExecutor::runAllReady);
+ };
+ processorFactory = new NotificationEntryProcessorFactoryExecutorImpl(fakeExecutor);
+ } else {
+ Looper looper = testLooper.getLooper();
+ processorAdvancement = () -> {
+ runWithCurrentThreadAsMainThread(testLooper::processAllMessages);
+ };
+ processorFactory = new NotificationEntryProcessorFactoryLooperImpl(looper);
+ }
+ mBindPipelineAdvancement = processorAdvancement;
mBindPipeline = new NotifBindPipeline(
collection,
new NotifBindPipelineLogger(logcatLogBuffer()),
- mTestLooper.getLooper());
+ processorFactory);
mBindPipeline.setStage(mBindStage);
ArgumentCaptor<NotifCollectionListener> collectionListenerCaptor =
@@ -643,7 +669,7 @@ public class NotificationTestHelper {
private void inflateAndWait(NotificationEntry entry) throws Exception {
CountDownLatch countDownLatch = new CountDownLatch(1);
mBindStage.requestRebind(entry, en -> countDownLatch.countDown());
- mTestLooper.processAllMessages();
+ mBindPipelineAdvancement.run();
assertTrue(countDownLatch.await(500, TimeUnit.MILLISECONDS));
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java
index 3555a7415435..dc0d07cab92d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java
@@ -32,6 +32,8 @@ import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
import com.android.systemui.res.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.util.DeviceConfigProxyFake;
+import com.android.systemui.util.concurrency.FakeExecutor;
+import com.android.systemui.util.time.FakeSystemClock;
import org.junit.Before;
import org.junit.Test;
@@ -43,7 +45,8 @@ import org.junit.runner.RunWith;
public class SmartReplyConstantsTest extends SysuiTestCase {
private SmartReplyConstants mConstants;
private DeviceConfigProxyFake mDeviceConfig;
- private TestableLooper mTestableLooper;
+ private final FakeSystemClock mFakeSystemClock = new FakeSystemClock();
+ private final FakeExecutor mFakeExecutor = new FakeExecutor(mFakeSystemClock);
@Before
public void setUp() {
@@ -60,9 +63,8 @@ public class SmartReplyConstantsTest extends SysuiTestCase {
2);
resources.addOverride(
R.integer.config_smart_replies_in_notifications_max_num_actions, -1);
- mTestableLooper = TestableLooper.get(this);
mConstants = new SmartReplyConstants(
- new Handler(mTestableLooper.getLooper()),
+ mFakeExecutor,
mContext,
mDeviceConfig
);
@@ -210,6 +212,6 @@ public class SmartReplyConstantsTest extends SysuiTestCase {
private void overrideSetting(String propertyName, String value) {
mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
propertyName, value, false /* makeDefault */);
- mTestableLooper.processAllMessages();
+ mFakeExecutor.runAllReady();
}
}
diff --git a/packages/SystemUI/tests/utils/src/android/animation/AnimatorTestRule.java b/packages/SystemUI/tests/utils/src/android/animation/AnimatorTestRule.java
index 5860c2dd4cdc..3b39e1fc6bc7 100644
--- a/packages/SystemUI/tests/utils/src/android/animation/AnimatorTestRule.java
+++ b/packages/SystemUI/tests/utils/src/android/animation/AnimatorTestRule.java
@@ -16,8 +16,6 @@
package android.animation;
-import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
-
import android.animation.AnimationHandler.AnimationFrameCallback;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -34,6 +32,7 @@ import androidx.test.platform.app.InstrumentationRegistry;
import com.android.internal.util.Preconditions;
+import org.junit.AssumptionViolatedException;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
@@ -204,7 +203,8 @@ public final class AnimatorTestRule implements TestRule {
}
long outputTime = AnimationUtils.currentAnimationTimeMillis();
if (outputTime != desiredTime) {
- throw new AssertionError("currentAnimationTimeMillis() is " + outputTime
+ // Skip the test (rather than fail it) if there's a clock issue
+ throw new AssumptionViolatedException("currentAnimationTimeMillis() is " + outputTime
+ " after locking to " + desiredTime);
}
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModelKosmos.kt
new file mode 100644
index 000000000000..23967224e43a
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModelKosmos.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.communal.ui.viewmodel
+
+import com.android.systemui.keyguard.ui.viewmodel.dreamingToGlanceableHubTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.glanceableHubToDreamingTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.glanceableHubToLockscreenTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.lockscreenToGlanceableHubTransitionViewModel
+import com.android.systemui.kosmos.Kosmos
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+
+@OptIn(ExperimentalCoroutinesApi::class)
+val Kosmos.communalTransitionViewModel by
+ Kosmos.Fixture {
+ CommunalTransitionViewModel(
+ glanceableHubToLockscreenTransitionViewModel,
+ lockscreenToGlanceableHubTransitionViewModel,
+ dreamingToGlanceableHubTransitionViewModel,
+ glanceableHubToDreamingTransitionViewModel,
+ )
+ }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationStackAppearanceViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationStackAppearanceViewModelKosmos.kt
index bada2a61995d..7e63eaaf9ec9 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationStackAppearanceViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationStackAppearanceViewModelKosmos.kt
@@ -19,12 +19,14 @@ package com.android.systemui.statusbar.notification.stack.ui.viewmodel
import com.android.systemui.dump.dumpManager
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.shade.domain.interactor.shadeInteractor
import com.android.systemui.statusbar.notification.stack.domain.interactor.notificationStackAppearanceInteractor
val Kosmos.notificationStackAppearanceViewModel by Fixture {
NotificationStackAppearanceViewModel(
+ applicationScope = applicationCoroutineScope,
dumpManager = dumpManager,
stackAppearanceInteractor = notificationStackAppearanceInteractor,
shadeInteractor = shadeInteractor,
diff --git a/services/accessibility/OWNERS b/services/accessibility/OWNERS
index 6e76a207e06f..0e35a409c82c 100644
--- a/services/accessibility/OWNERS
+++ b/services/accessibility/OWNERS
@@ -1,6 +1,13 @@
-pweaver@google.com
-sallyyuen@google.com
-ryanlwlin@google.com
-fuego@google.com
+# Bug component: 44215
+
+# Android Accessibility Framework owners
danielnorman@google.com
aarmaly@google.com
+chunkulin@google.com
+fuego@google.com
+sallyyuen@google.com
+
+# Android Accessibility members who have OWNERS but should not be sent
+# day-to-day changes for code review:
+pweaver@google.com #{LAST_RESORT_SUGGESTION}
+ryanlwlin@google.com #{LAST_RESORT_SUGGESTION} \ No newline at end of file
diff --git a/services/accessibility/java/com/android/server/accessibility/ProxyAccessibilityServiceConnection.java b/services/accessibility/java/com/android/server/accessibility/ProxyAccessibilityServiceConnection.java
index 6aa4702ec7d5..b77b2bef57a2 100644
--- a/services/accessibility/java/com/android/server/accessibility/ProxyAccessibilityServiceConnection.java
+++ b/services/accessibility/java/com/android/server/accessibility/ProxyAccessibilityServiceConnection.java
@@ -126,7 +126,7 @@ public class ProxyAccessibilityServiceConnection extends AccessibilityServiceCon
* @param infos the list of enabled and installed services.
*/
@Override
- public void setInstalledAndEnabledServices(List<AccessibilityServiceInfo> infos) {
+ public void setInstalledAndEnabledServices(@NonNull List<AccessibilityServiceInfo> infos) {
final long identity = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
@@ -216,9 +216,11 @@ public class ProxyAccessibilityServiceConnection extends AccessibilityServiceCon
}
@Override
+ @NonNull
public List<AccessibilityServiceInfo> getInstalledAndEnabledServices() {
synchronized (mLock) {
- return mInstalledAndEnabledServices;
+ return mInstalledAndEnabledServices != null
+ ? mInstalledAndEnabledServices : Collections.emptyList();
}
}
diff --git a/services/backup/java/com/android/server/backup/PackageManagerBackupAgent.java b/services/backup/java/com/android/server/backup/PackageManagerBackupAgent.java
index 1f8736b770e2..c3d97904e430 100644
--- a/services/backup/java/com/android/server/backup/PackageManagerBackupAgent.java
+++ b/services/backup/java/com/android/server/backup/PackageManagerBackupAgent.java
@@ -99,6 +99,9 @@ public class PackageManagerBackupAgent extends BackupAgent {
// The version info of each backed-up app as read from the state file
private HashMap<String, Metadata> mStateVersions = new HashMap<String, Metadata>();
+ // The ancestral record version as read from the state file
+ private int mStoredAncestralRecordVersion;
+
private final HashSet<String> mExisting = new HashSet<String>();
private int mStoredSdkVersion;
private String mStoredIncrementalVersion;
@@ -233,17 +236,32 @@ public class PackageManagerBackupAgent extends BackupAgent {
* int ancestralRecordVersion -- the version of the format in which this backup set is
* produced
*/
+ boolean upgradingAncestralRecordVersion = false;
try {
- if (DEBUG) Slog.v(TAG, "Storing ancestral record version key");
- outputBufferStream.writeInt(ANCESTRAL_RECORD_VERSION);
- writeEntity(data, ANCESTRAL_RECORD_KEY, outputBuffer.toByteArray());
- } catch (IOException e) {
- // Real error writing data
- Slog.e(TAG, "Unable to write package backup data file!");
- return;
- }
+ if (!mExisting.contains(ANCESTRAL_RECORD_KEY)) {
+ // The old state does not store info on ancestral record
+ Slog.v(
+ TAG,
+ "No ancestral record version in the old state. Storing "
+ + "ancestral record version key");
+ outputBufferStream.writeInt(ANCESTRAL_RECORD_VERSION);
+ writeEntity(data, ANCESTRAL_RECORD_KEY, outputBuffer.toByteArray());
+ upgradingAncestralRecordVersion = true;
+ } else if (mStoredAncestralRecordVersion != ANCESTRAL_RECORD_VERSION) {
+ // The current ancestral record version has changed from the old state
+ Slog.v(
+ TAG,
+ "Ancestral record version has changed from old state. Storing"
+ + "ancestral record version key");
+ outputBufferStream.writeInt(ANCESTRAL_RECORD_VERSION);
+ writeEntity(data, ANCESTRAL_RECORD_KEY, outputBuffer.toByteArray());
+ upgradingAncestralRecordVersion = true;
+ mExisting.remove(ANCESTRAL_RECORD_KEY);
+ } else {
+ if (DEBUG) Slog.v(TAG, "Ancestral record version has not changed");
+ mExisting.remove(ANCESTRAL_RECORD_KEY);
+ }
- try {
/*
* Global metadata:
*
@@ -286,13 +304,16 @@ public class PackageManagerBackupAgent extends BackupAgent {
}
if (mExisting.contains(packName)) {
- // We have backed up this app before. Check whether the version
- // of the backup matches the version of the current app; if they
+ // We have backed up this app before. If the current ancestral record
+ // version is the same as what is in the old state, check whether the
+ // version of the backup matches the version of the current app; if they
// don't match, the app has been updated and we need to store its
// metadata again. In either case, take it out of mExisting so that
// we don't consider it deleted later.
mExisting.remove(packName);
- if (info.getLongVersionCode() == mStateVersions.get(packName).versionCode) {
+ if (!upgradingAncestralRecordVersion
+ && info.getLongVersionCode()
+ == mStateVersions.get(packName).versionCode) {
continue;
}
}
@@ -346,18 +367,35 @@ public class PackageManagerBackupAgent extends BackupAgent {
// At this point, the only entries in 'existing' are apps that were
// mentioned in the saved state file, but appear to no longer be present
- // on the device. We want to preserve the entry for them, however,
- // because we want the right thing to happen if the user goes through
- // a backup / uninstall / backup / reinstall sequence.
- if (DEBUG) {
- if (mExisting.size() > 0) {
- StringBuilder sb = new StringBuilder(64);
- sb.append("Preserving metadata for deleted packages:");
- for (String app : mExisting) {
- sb.append(' ');
- sb.append(app);
+ // on the device.
+ if (!mExisting.isEmpty()) {
+ // If the ancestral record version has changed from the previous state we delete the
+ // existing keys for apps that are no longer installed. We should do this, otherwise
+ // we'd leave a key/value pair behind in the old format which could cause problems.
+ if (upgradingAncestralRecordVersion) {
+ for (String pkgName : mExisting) {
+ Slog.i(
+ TAG,
+ "Ancestral state updated - Deleting uninstalled package: "
+ + pkgName
+ + " from existing backup");
+ data.writeEntityHeader(pkgName, -1);
+ }
+ mExisting.clear();
+ } else {
+ // If the ancestral record version is unchanged from the previous state, we
+ // don't to anything to preserve the key/value entry for them. We do this
+ // because we want the right thing to happen if the user goes through a
+ // backup / uninstall / backup / reinstall sequence.
+ if (DEBUG) {
+ StringBuilder sb = new StringBuilder(64);
+ sb.append("Preserving metadata for deleted packages:");
+ for (String app : mExisting) {
+ sb.append(' ');
+ sb.append(app);
+ }
+ Slog.v(TAG, sb.toString());
}
- Slog.v(TAG, sb.toString());
}
}
} catch (IOException e) {
@@ -506,6 +544,7 @@ public class PackageManagerBackupAgent extends BackupAgent {
mStoredHomeComponent = null;
mStoredHomeVersion = 0;
mStoredHomeSigHashes = null;
+ mStoredAncestralRecordVersion = UNDEFINED_ANCESTRAL_RECORD_VERSION;
// The state file is just the list of app names we have stored signatures for
// with the exception of the metadata block, to which is also appended the
@@ -541,7 +580,25 @@ public class PackageManagerBackupAgent extends BackupAgent {
ignoreExisting = true;
}
- // First comes the preferred home app data, if any, headed by the DEFAULT_HOME_KEY tag
+ // First comes the ancestral record block headed by the ANCESTRAL_RECORD_KEY tag
+ if (pkg.equals(ANCESTRAL_RECORD_KEY)) {
+ mStoredAncestralRecordVersion = in.readInt();
+ if (!ignoreExisting) {
+ mExisting.add(ANCESTRAL_RECORD_KEY);
+ }
+ pkg = in.readUTF(); // set up for the next block of state
+ } else {
+ // This is an old version of the state file in which ANCESTRAL_RECORD_KEY is not
+ // stored. In this case onBackup will write the ANCESTRAL_KEY_VALUE to the new
+ // state.
+ Slog.i(
+ TAG,
+ "Older version of saved state - does not contain ancestral record "
+ + "version");
+ }
+
+ // Then comes the preferred home app data, if any, headed by the DEFAULT_HOME_KEY tag
+ // Note that Default home app data is no longer backed up by this agent.
if (pkg.equals(DEFAULT_HOME_KEY)) {
// flattened component name, version, signature of the home app
mStoredHomeComponent = ComponentName.unflattenFromString(in.readUTF());
@@ -606,6 +663,10 @@ public class PackageManagerBackupAgent extends BackupAgent {
out.writeUTF(STATE_FILE_HEADER);
out.writeInt(STATE_FILE_VERSION);
+ // Record the ancestral record
+ out.writeUTF(ANCESTRAL_RECORD_KEY);
+ out.writeInt(ANCESTRAL_RECORD_VERSION);
+
// Conclude with the metadata block
out.writeUTF(GLOBAL_METADATA_KEY);
out.writeInt(Build.VERSION.SDK_INT);
diff --git a/services/companion/java/com/android/server/companion/BackupRestoreProcessor.java b/services/companion/java/com/android/server/companion/BackupRestoreProcessor.java
index f2409fb8843e..5e52e06248cb 100644
--- a/services/companion/java/com/android/server/companion/BackupRestoreProcessor.java
+++ b/services/companion/java/com/android/server/companion/BackupRestoreProcessor.java
@@ -18,7 +18,8 @@ package com.android.server.companion;
import static android.os.UserHandle.getCallingUserId;
-import static com.android.server.companion.CompanionDeviceManagerService.PerUserAssociationSet;
+import static com.android.server.companion.association.AssociationDiskStore.readAssociationsFromPayload;
+import static com.android.server.companion.utils.RolesUtils.addRoleHolderForAssociation;
import android.annotation.NonNull;
import android.annotation.SuppressLint;
@@ -26,62 +27,50 @@ import android.annotation.UserIdInt;
import android.companion.AssociationInfo;
import android.companion.Flags;
import android.companion.datatransfer.SystemDataTransferRequest;
+import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManagerInternal;
-import android.util.ArraySet;
-import android.util.Log;
import android.util.Slog;
-import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.CollectionUtils;
import com.android.server.companion.association.AssociationDiskStore;
import com.android.server.companion.association.AssociationRequestsProcessor;
import com.android.server.companion.association.AssociationStore;
+import com.android.server.companion.association.Associations;
import com.android.server.companion.datatransfer.SystemDataTransferRequestStore;
import java.nio.ByteBuffer;
-import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Objects;
-import java.util.Set;
import java.util.function.Predicate;
@SuppressLint("LongLogTag")
class BackupRestoreProcessor {
- static final String TAG = "CDM_BackupRestoreProcessor";
+ private static final String TAG = "CDM_BackupRestoreProcessor";
private static final int BACKUP_AND_RESTORE_VERSION = 0;
+ private final Context mContext;
@NonNull
- private final CompanionDeviceManagerService mService;
- @NonNull
- private final PackageManagerInternal mPackageManager;
+ private final PackageManagerInternal mPackageManagerInternal;
@NonNull
private final AssociationStore mAssociationStore;
@NonNull
- private final AssociationDiskStore mPersistentStore;
+ private final AssociationDiskStore mAssociationDiskStore;
@NonNull
private final SystemDataTransferRequestStore mSystemDataTransferRequestStore;
@NonNull
private final AssociationRequestsProcessor mAssociationRequestsProcessor;
- /**
- * A structure that consists of a set of restored associations that are pending corresponding
- * companion app to be installed.
- */
- @GuardedBy("mAssociationsPendingAppInstall")
- private final PerUserAssociationSet mAssociationsPendingAppInstall =
- new PerUserAssociationSet();
-
- BackupRestoreProcessor(@NonNull CompanionDeviceManagerService service,
+ BackupRestoreProcessor(@NonNull Context context,
+ @NonNull PackageManagerInternal packageManagerInternal,
@NonNull AssociationStore associationStore,
- @NonNull AssociationDiskStore persistentStore,
+ @NonNull AssociationDiskStore associationDiskStore,
@NonNull SystemDataTransferRequestStore systemDataTransferRequestStore,
@NonNull AssociationRequestsProcessor associationRequestsProcessor) {
- mService = service;
- mPackageManager = service.mPackageManagerInternal;
+ mContext = context;
+ mPackageManagerInternal = packageManagerInternal;
mAssociationStore = associationStore;
- mPersistentStore = persistentStore;
+ mAssociationDiskStore = associationDiskStore;
mSystemDataTransferRequestStore = systemDataTransferRequestStore;
mAssociationRequestsProcessor = associationRequestsProcessor;
}
@@ -93,9 +82,9 @@ class BackupRestoreProcessor {
* | (4) SystemDataTransferRequest length | SystemDataTransferRequest XML (without userId)|
*/
byte[] getBackupPayload(int userId) {
- // Persist state first to generate an up-to-date XML file
- mService.persistStateForUser(userId);
- byte[] associationsPayload = mPersistentStore.getBackupPayload(userId);
+ Slog.i(TAG, "getBackupPayload() userId=[" + userId + "].");
+
+ byte[] associationsPayload = mAssociationDiskStore.getBackupPayload(userId);
int associationsPayloadLength = associationsPayload.length;
// System data transfer requests are persisted up-to-date already
@@ -119,6 +108,9 @@ class BackupRestoreProcessor {
* Create new associations and system data transfer request consents using backed up payload.
*/
void applyRestoredPayload(byte[] payload, int userId) {
+ Slog.i(TAG, "applyRestoredPayload() userId=[" + userId + "], payload size=["
+ + payload.length + "].");
+
ByteBuffer buffer = ByteBuffer.wrap(payload);
// Make sure that payload version matches current version to ensure proper deserialization
@@ -131,9 +123,8 @@ class BackupRestoreProcessor {
// Read the bytes containing backed-up associations
byte[] associationsPayload = new byte[buffer.getInt()];
buffer.get(associationsPayload);
- final Set<AssociationInfo> restoredAssociations = new HashSet<>();
- mPersistentStore.readStateFromPayload(associationsPayload, userId,
- restoredAssociations, new HashMap<>());
+ final Associations restoredAssociations = readAssociationsFromPayload(
+ associationsPayload, userId);
// Read the bytes containing backed-up system data transfer requests user consent
byte[] requestsPayload = new byte[buffer.getInt()];
@@ -142,13 +133,13 @@ class BackupRestoreProcessor {
mSystemDataTransferRequestStore.readRequestsFromPayload(requestsPayload, userId);
// Get a list of installed packages ahead of time.
- List<ApplicationInfo> installedApps = mPackageManager.getInstalledApplications(
+ List<ApplicationInfo> installedApps = mPackageManagerInternal.getInstalledApplications(
0, userId, getCallingUserId());
// Restored device may have a different user ID than the backed-up user's user-ID. Since
// association ID is dependent on the user ID, restored associations must account for
// this potential difference on their association IDs.
- for (AssociationInfo restored : restoredAssociations) {
+ for (AssociationInfo restored : restoredAssociations.getAssociations()) {
// Don't restore a revoked association. Since they weren't added to the device being
// restored in the first place, there is no need to worry about revoking a role that
// was never granted either.
@@ -168,10 +159,9 @@ class BackupRestoreProcessor {
// Create a new association reassigned to this user and a valid association ID
final String packageName = restored.getPackageName();
- final int newId = mService.getNewAssociationIdForPackage(userId, packageName);
- AssociationInfo newAssociation =
- new AssociationInfo.Builder(newId, userId, packageName, restored)
- .build();
+ final int newId = mAssociationStore.getNextId(userId);
+ AssociationInfo newAssociation = new AssociationInfo.Builder(newId, userId, packageName,
+ restored).build();
// Check if the companion app for this association is already installed, then do one
// of the following:
@@ -179,13 +169,15 @@ class BackupRestoreProcessor {
// the role attached to this association to the app.
// (2) If the app isn't yet installed, then add this association to the list of pending
// associations to be added when the package is installed in the future.
- boolean isPackageInstalled = installedApps.stream()
- .anyMatch(app -> packageName.equals(app.packageName));
+ boolean isPackageInstalled = installedApps.stream().anyMatch(
+ app -> packageName.equals(app.packageName));
if (isPackageInstalled) {
mAssociationRequestsProcessor.maybeGrantRoleAndStoreAssociation(newAssociation,
null, null);
} else {
- addToPendingAppInstall(newAssociation);
+ newAssociation = (new AssociationInfo.Builder(newAssociation)).setPending(true)
+ .build();
+ mAssociationStore.addAssociation(newAssociation);
}
// Re-map restored system data transfer requests to newly created associations
@@ -195,32 +187,27 @@ class BackupRestoreProcessor {
mSystemDataTransferRequestStore.writeRequest(userId, newRequest);
}
}
-
- // Persist restored state.
- mService.persistStateForUser(userId);
- }
-
- void addToPendingAppInstall(@NonNull AssociationInfo association) {
- association = (new AssociationInfo.Builder(association))
- .setPending(true)
- .build();
-
- synchronized (mAssociationsPendingAppInstall) {
- mAssociationsPendingAppInstall.forUser(association.getUserId()).add(association);
- }
}
- void removeFromPendingAppInstall(@NonNull AssociationInfo association) {
- synchronized (mAssociationsPendingAppInstall) {
- mAssociationsPendingAppInstall.forUser(association.getUserId()).remove(association);
+ public void restorePendingAssociations(int userId, String packageName) {
+ List<AssociationInfo> pendingAssociations = mAssociationStore.getPendingAssociations(userId,
+ packageName);
+ if (!pendingAssociations.isEmpty()) {
+ Slog.i(TAG, "Found pending associations for package=[" + packageName
+ + "]. Restoring...");
}
- }
-
- @NonNull
- Set<AssociationInfo> getAssociationsPendingAppInstallForUser(@UserIdInt int userId) {
- synchronized (mAssociationsPendingAppInstall) {
- // Return a copy.
- return new ArraySet<>(mAssociationsPendingAppInstall.forUser(userId));
+ for (AssociationInfo association : pendingAssociations) {
+ AssociationInfo newAssociation = new AssociationInfo.Builder(association)
+ .setPending(false)
+ .build();
+ addRoleHolderForAssociation(mContext, newAssociation, success -> {
+ if (success) {
+ mAssociationStore.updateAssociation(newAssociation);
+ Slog.i(TAG, "Association=[" + association + "] is restored.");
+ } else {
+ Slog.e(TAG, "Failed to restore association=[" + association + "].");
+ }
+ });
}
}
@@ -231,7 +218,7 @@ class BackupRestoreProcessor {
private boolean handleCollision(@UserIdInt int userId,
AssociationInfo restored,
List<SystemDataTransferRequest> restoredRequests) {
- List<AssociationInfo> localAssociations = mAssociationStore.getAssociationsForPackage(
+ List<AssociationInfo> localAssociations = mAssociationStore.getActiveAssociationsByPackage(
restored.getUserId(), restored.getPackageName());
Predicate<AssociationInfo> isSameDevice = associationInfo -> {
boolean matchesMacAddress = Objects.equals(
@@ -248,7 +235,7 @@ class BackupRestoreProcessor {
return false;
}
- Log.d(TAG, "Conflict detected with association id=" + local.getId()
+ Slog.d(TAG, "Conflict detected with association id=" + local.getId()
+ " while restoring CDM backup. Keeping local association.");
List<SystemDataTransferRequest> localRequests = mSystemDataTransferRequestStore
@@ -266,8 +253,8 @@ class BackupRestoreProcessor {
continue;
}
- Log.d(TAG, "Restoring " + restoredRequest.getClass().getSimpleName()
- + " to an existing association id=" + local.getId() + ".");
+ Slog.d(TAG, "Restoring " + restoredRequest.getClass().getSimpleName()
+ + " to an existing association id=[" + local.getId() + "].");
SystemDataTransferRequest newRequest =
restoredRequest.copyWithNewId(local.getId());
diff --git a/services/companion/java/com/android/server/companion/CompanionApplicationController.java b/services/companion/java/com/android/server/companion/CompanionApplicationController.java
index c801489ce963..0a4148535451 100644
--- a/services/companion/java/com/android/server/companion/CompanionApplicationController.java
+++ b/services/companion/java/com/android/server/companion/CompanionApplicationController.java
@@ -397,7 +397,7 @@ public class CompanionApplicationController {
// First, disable hint mode for Auto profile and mark not BOUND for primary service ONLY.
if (isPrimary) {
final List<AssociationInfo> associations =
- mAssociationStore.getAssociationsForPackage(userId, packageName);
+ mAssociationStore.getActiveAssociationsByPackage(userId, packageName);
for (AssociationInfo association : associations) {
final String deviceProfile = association.getDeviceProfile();
@@ -442,7 +442,7 @@ public class CompanionApplicationController {
mObservableUuidStore.getObservableUuidsForPackage(userId, packageName);
for (AssociationInfo ai :
- mAssociationStore.getAssociationsForPackage(userId, packageName)) {
+ mAssociationStore.getActiveAssociationsByPackage(userId, packageName)) {
final int associationId = ai.getId();
stillAssociated = true;
if (ai.isSelfManaged()) {
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
index 3846e981cbab..712162b2d3b5 100644
--- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
+++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
@@ -37,12 +37,9 @@ import static android.os.UserHandle.getCallingUserId;
import static com.android.internal.util.CollectionUtils.any;
import static com.android.internal.util.Preconditions.checkState;
import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
-import static com.android.server.companion.association.AssociationStore.CHANGE_TYPE_UPDATED_ADDRESS_UNCHANGED;
-import static com.android.server.companion.utils.AssociationUtils.getFirstAssociationIdForUser;
-import static com.android.server.companion.utils.AssociationUtils.getLastAssociationIdForUser;
-import static com.android.server.companion.utils.PackageUtils.isRestrictedSettingsAllowed;
import static com.android.server.companion.utils.PackageUtils.enforceUsesCompanionDeviceFeature;
import static com.android.server.companion.utils.PackageUtils.getPackageInfo;
+import static com.android.server.companion.utils.PackageUtils.isRestrictedSettingsAllowed;
import static com.android.server.companion.utils.PermissionsUtils.checkCallerCanManageCompanionDevice;
import static com.android.server.companion.utils.PermissionsUtils.enforceCallerCanManageAssociationsForPackage;
import static com.android.server.companion.utils.PermissionsUtils.enforceCallerCanObservingDevicePresenceByUuid;
@@ -82,20 +79,16 @@ import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManagerInternal;
-import android.content.pm.UserInfo;
import android.hardware.power.Mode;
import android.net.MacAddress;
import android.net.NetworkPolicyManager;
import android.os.Binder;
import android.os.Environment;
-import android.os.Handler;
-import android.os.Message;
import android.os.Parcel;
import android.os.ParcelFileDescriptor;
import android.os.ParcelUuid;
+import android.os.PowerExemptionManager;
import android.os.PowerManagerInternal;
-import android.os.PowerWhitelistManager;
-import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemProperties;
@@ -105,13 +98,9 @@ import android.util.ArraySet;
import android.util.ExceptionUtils;
import android.util.Log;
import android.util.Slog;
-import android.util.SparseArray;
-import android.util.SparseBooleanArray;
-import com.android.internal.annotations.GuardedBy;
import com.android.internal.app.IAppOpsService;
import com.android.internal.content.PackageMonitor;
-import com.android.internal.infra.PerUser;
import com.android.internal.notification.NotificationAccessConfirmationActivityContract;
import com.android.internal.os.BackgroundThread;
import com.android.internal.util.ArrayUtils;
@@ -121,8 +110,8 @@ import com.android.server.LocalServices;
import com.android.server.SystemService;
import com.android.server.companion.association.AssociationDiskStore;
import com.android.server.companion.association.AssociationRequestsProcessor;
-import com.android.server.companion.association.AssociationRevokeProcessor;
import com.android.server.companion.association.AssociationStore;
+import com.android.server.companion.association.DisassociationProcessor;
import com.android.server.companion.association.InactiveAssociationsRemovalService;
import com.android.server.companion.datatransfer.SystemDataTransferProcessor;
import com.android.server.companion.datatransfer.SystemDataTransferRequestStore;
@@ -139,7 +128,6 @@ import com.android.server.wm.ActivityTaskManagerInternal;
import java.io.File;
import java.io.FileDescriptor;
import java.io.PrintWriter;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -164,80 +152,51 @@ public class CompanionDeviceManagerService extends SystemService {
private static final long ASSOCIATION_REMOVAL_TIME_WINDOW_DEFAULT = DAYS.toMillis(90);
private static final int MAX_CN_LENGTH = 500;
- private final ActivityManager mActivityManager;
- private AssociationDiskStore mAssociationDiskStore;
- private final PersistUserStateHandler mUserPersistenceHandler;
-
- private final AssociationStore mAssociationStore;
- private final SystemDataTransferRequestStore mSystemDataTransferRequestStore;
- private AssociationRequestsProcessor mAssociationRequestsProcessor;
- private SystemDataTransferProcessor mSystemDataTransferProcessor;
- private BackupRestoreProcessor mBackupRestoreProcessor;
- private CompanionDevicePresenceMonitor mDevicePresenceMonitor;
- private CompanionApplicationController mCompanionAppController;
- private CompanionTransportManager mTransportManager;
- private AssociationRevokeProcessor mAssociationRevokeProcessor;
-
private final ActivityTaskManagerInternal mAtmInternal;
private final ActivityManagerInternal mAmInternal;
private final IAppOpsService mAppOpsManager;
- private final PowerWhitelistManager mPowerWhitelistManager;
- private final UserManager mUserManager;
- public final PackageManagerInternal mPackageManagerInternal;
+ private final PowerExemptionManager mPowerExemptionManager;
+ private final PackageManagerInternal mPackageManagerInternal;
private final PowerManagerInternal mPowerManagerInternal;
- /**
- * A structure that consists of two nested maps, and effectively maps (userId + packageName) to
- * a list of IDs that have been previously assigned to associations for that package.
- * We maintain this structure so that we never re-use association IDs for the same package
- * (until it's uninstalled).
- */
- @GuardedBy("mPreviouslyUsedIds")
- private final SparseArray<Map<String, Set<Integer>>> mPreviouslyUsedIds = new SparseArray<>();
-
- private final RemoteCallbackList<IOnAssociationsChangedListener> mListeners =
- new RemoteCallbackList<>();
-
- private CrossDeviceSyncController mCrossDeviceSyncController;
-
- private ObservableUuidStore mObservableUuidStore;
+ private final AssociationStore mAssociationStore;
+ private final SystemDataTransferRequestStore mSystemDataTransferRequestStore;
+ private final ObservableUuidStore mObservableUuidStore;
+ private final AssociationRequestsProcessor mAssociationRequestsProcessor;
+ private final SystemDataTransferProcessor mSystemDataTransferProcessor;
+ private final BackupRestoreProcessor mBackupRestoreProcessor;
+ private final CompanionDevicePresenceMonitor mDevicePresenceMonitor;
+ private final CompanionApplicationController mCompanionAppController;
+ private final CompanionTransportManager mTransportManager;
+ private final DisassociationProcessor mDisassociationProcessor;
+ private final CrossDeviceSyncController mCrossDeviceSyncController;
public CompanionDeviceManagerService(Context context) {
super(context);
- mActivityManager = context.getSystemService(ActivityManager.class);
- mPowerWhitelistManager = context.getSystemService(PowerWhitelistManager.class);
+ final ActivityManager activityManager = context.getSystemService(ActivityManager.class);
+ mPowerExemptionManager = context.getSystemService(PowerExemptionManager.class);
mAppOpsManager = IAppOpsService.Stub.asInterface(
ServiceManager.getService(Context.APP_OPS_SERVICE));
mAtmInternal = LocalServices.getService(ActivityTaskManagerInternal.class);
mAmInternal = LocalServices.getService(ActivityManagerInternal.class);
mPackageManagerInternal = LocalServices.getService(PackageManagerInternal.class);
- mUserManager = context.getSystemService(UserManager.class);
+ final UserManager userManager = context.getSystemService(UserManager.class);
+ mPowerManagerInternal = LocalServices.getService(PowerManagerInternal.class);
- mUserPersistenceHandler = new PersistUserStateHandler();
- mAssociationStore = new AssociationStore();
+ final AssociationDiskStore associationDiskStore = new AssociationDiskStore();
+ mAssociationStore = new AssociationStore(userManager, associationDiskStore);
mSystemDataTransferRequestStore = new SystemDataTransferRequestStore();
-
- mPowerManagerInternal = LocalServices.getService(PowerManagerInternal.class);
mObservableUuidStore = new ObservableUuidStore();
- }
- @Override
- public void onStart() {
- final Context context = getContext();
-
- mAssociationDiskStore = new AssociationDiskStore();
- mAssociationRequestsProcessor = new AssociationRequestsProcessor(
- /* cdmService */ this, mAssociationStore);
- mBackupRestoreProcessor = new BackupRestoreProcessor(
- /* cdmService */ this, mAssociationStore, mAssociationDiskStore,
- mSystemDataTransferRequestStore, mAssociationRequestsProcessor);
-
- mObservableUuidStore.getObservableUuidsForUser(getContext().getUserId());
+ // Init processors
+ mAssociationRequestsProcessor = new AssociationRequestsProcessor(context,
+ mPackageManagerInternal, mAssociationStore);
+ mBackupRestoreProcessor = new BackupRestoreProcessor(context, mPackageManagerInternal,
+ mAssociationStore, associationDiskStore, mSystemDataTransferRequestStore,
+ mAssociationRequestsProcessor);
- mAssociationStore.registerListener(mAssociationStoreChangeListener);
-
- mDevicePresenceMonitor = new CompanionDevicePresenceMonitor(mUserManager,
+ mDevicePresenceMonitor = new CompanionDevicePresenceMonitor(userManager,
mAssociationStore, mObservableUuidStore, mDevicePresenceCallback);
mCompanionAppController = new CompanionApplicationController(
@@ -246,11 +205,9 @@ public class CompanionDeviceManagerService extends SystemService {
mTransportManager = new CompanionTransportManager(context, mAssociationStore);
- mAssociationRevokeProcessor = new AssociationRevokeProcessor(this, mAssociationStore,
- mPackageManagerInternal, mDevicePresenceMonitor, mCompanionAppController,
- mSystemDataTransferRequestStore, mTransportManager);
-
- loadAssociationsFromDisk();
+ mDisassociationProcessor = new DisassociationProcessor(context, activityManager,
+ mAssociationStore, mPackageManagerInternal, mDevicePresenceMonitor,
+ mCompanionAppController, mSystemDataTransferRequestStore, mTransportManager);
mSystemDataTransferProcessor = new SystemDataTransferProcessor(this,
mPackageManagerInternal, mAssociationStore,
@@ -258,6 +215,16 @@ public class CompanionDeviceManagerService extends SystemService {
// TODO(b/279663946): move context sync to a dedicated system service
mCrossDeviceSyncController = new CrossDeviceSyncController(getContext(), mTransportManager);
+ }
+
+ @Override
+ public void onStart() {
+ // Init association stores
+ mAssociationStore.refreshCache();
+ mAssociationStore.registerLocalListener(mAssociationStoreChangeListener);
+
+ // Init UUID store
+ mObservableUuidStore.getObservableUuidsForUser(getContext().getUserId());
// Publish "binder" service.
final CompanionDeviceManagerImpl impl = new CompanionDeviceManagerImpl();
@@ -267,50 +234,6 @@ public class CompanionDeviceManagerService extends SystemService {
LocalServices.addService(CompanionDeviceManagerServiceInternal.class, new LocalService());
}
- void loadAssociationsFromDisk() {
- final Set<AssociationInfo> allAssociations = new ArraySet<>();
- synchronized (mPreviouslyUsedIds) {
- List<Integer> userIds = new ArrayList<>();
- for (UserInfo user : mUserManager.getAliveUsers()) {
- userIds.add(user.id);
- }
- // The data is stored in DE directories, so we can read the data for all users now
- // (which would not be possible if the data was stored to CE directories).
- mAssociationDiskStore.readStateForUsers(userIds, allAssociations, mPreviouslyUsedIds);
- }
-
- final Set<AssociationInfo> activeAssociations =
- new ArraySet<>(/* capacity */ allAssociations.size());
- // A set contains the userIds that need to persist state after remove the app
- // from the list of role holders.
- final Set<Integer> usersToPersistStateFor = new ArraySet<>();
-
- for (AssociationInfo association : allAssociations) {
- if (association.isPending()) {
- mBackupRestoreProcessor.addToPendingAppInstall(association);
- } else if (!association.isRevoked()) {
- activeAssociations.add(association);
- } else if (mAssociationRevokeProcessor.maybeRemoveRoleHolderForAssociation(
- association)) {
- // Nothing more to do here, but we'll need to persist all the associations to the
- // disk afterwards.
- usersToPersistStateFor.add(association.getUserId());
- } else {
- mAssociationRevokeProcessor.addToPendingRoleHolderRemoval(association);
- }
- }
-
- mAssociationStore.setAssociationsToCache(activeAssociations);
-
- // IMPORTANT: only do this AFTER mAssociationStore.setAssociations(), because
- // persistStateForUser() queries AssociationStore.
- // (If persistStateForUser() is invoked before mAssociationStore.setAssociations() it
- // would effectively just clear-out all the persisted associations).
- for (int userId : usersToPersistStateFor) {
- persistStateForUser(userId);
- }
- }
-
@Override
public void onBootPhase(int phase) {
final Context context = getContext();
@@ -329,8 +252,10 @@ public class CompanionDeviceManagerService extends SystemService {
@Override
public void onUserUnlocking(@NonNull TargetUser user) {
+ Slog.d(TAG, "onUserUnlocking...");
final int userId = user.getUserIdentifier();
- final List<AssociationInfo> associations = mAssociationStore.getAssociationsForUser(userId);
+ final List<AssociationInfo> associations = mAssociationStore.getActiveAssociationsByUser(
+ userId);
if (associations.isEmpty()) return;
@@ -359,7 +284,8 @@ public class CompanionDeviceManagerService extends SystemService {
? Collections.emptyList() : Arrays.asList(bluetoothDeviceUuids);
for (AssociationInfo ai :
- mAssociationStore.getAssociationsByAddress(bluetoothDevice.getAddress())) {
+ mAssociationStore.getActiveAssociationsByAddress(
+ bluetoothDevice.getAddress())) {
Slog.i(TAG, "onUserUnlocked, device id( " + ai.getId() + " ) is connected");
mDevicePresenceMonitor.onBluetoothCompanionDeviceConnected(ai.getId());
}
@@ -379,7 +305,7 @@ public class CompanionDeviceManagerService extends SystemService {
@NonNull
AssociationInfo getAssociationWithCallerChecks(
@UserIdInt int userId, @NonNull String packageName, @NonNull String macAddress) {
- AssociationInfo association = mAssociationStore.getAssociationsForPackageWithAddress(
+ AssociationInfo association = mAssociationStore.getFirstAssociationByAddress(
userId, packageName, macAddress);
association = sanitizeWithCallerChecks(getContext(), association);
if (association != null) {
@@ -533,7 +459,7 @@ public class CompanionDeviceManagerService extends SystemService {
*/
private boolean shouldBindPackage(@UserIdInt int userId, @NonNull String packageName) {
final List<AssociationInfo> packageAssociations =
- mAssociationStore.getAssociationsForPackage(userId, packageName);
+ mAssociationStore.getActiveAssociationsByPackage(userId, packageName);
final List<ObservableUuid> observableUuids =
mObservableUuidStore.getObservableUuidsForPackage(userId, packageName);
@@ -551,77 +477,6 @@ public class CompanionDeviceManagerService extends SystemService {
return false;
}
- private void onAssociationChangedInternal(
- @AssociationStore.ChangeType int changeType, AssociationInfo association) {
- final int id = association.getId();
- final int userId = association.getUserId();
- final String packageName = association.getPackageName();
-
- if (changeType == AssociationStore.CHANGE_TYPE_REMOVED) {
- markIdAsPreviouslyUsedForPackage(id, userId, packageName);
- }
-
- final List<AssociationInfo> updatedAssociations =
- mAssociationStore.getAssociationsForUser(userId);
-
- mUserPersistenceHandler.postPersistUserState(userId);
-
- // Notify listeners if ADDED, REMOVED or UPDATED_ADDRESS_CHANGED.
- // Do NOT notify when UPDATED_ADDRESS_UNCHANGED, which means a minor tweak in association's
- // configs, which "listeners" won't (and shouldn't) be able to see.
- if (changeType != CHANGE_TYPE_UPDATED_ADDRESS_UNCHANGED) {
- notifyListeners(userId, updatedAssociations);
- }
- updateAtm(userId, updatedAssociations);
- }
-
- void persistStateForUser(@UserIdInt int userId) {
- // We want to store both active associations and the revoked (removed) association that we
- // are keeping around for the final clean-up (delayed role holder removal).
- final List<AssociationInfo> allAssociations;
- // Start with the active associations - these we can get from the AssociationStore.
- allAssociations = new ArrayList<>(
- mAssociationStore.getAssociationsForUser(userId));
- // ... and add the revoked (removed) association, that are yet to be permanently removed.
- allAssociations.addAll(
- mAssociationRevokeProcessor.getPendingRoleHolderRemovalAssociationsForUser(userId));
- // ... and add the restored associations that are pending missing package installation.
- allAssociations.addAll(mBackupRestoreProcessor
- .getAssociationsPendingAppInstallForUser(userId));
-
- final Map<String, Set<Integer>> usedIdsForUser = getPreviouslyUsedIdsForUser(userId);
-
- mAssociationDiskStore.persistStateForUser(userId, allAssociations, usedIdsForUser);
- }
-
- private void notifyListeners(
- @UserIdInt int userId, @NonNull List<AssociationInfo> associations) {
- mListeners.broadcast((listener, callbackUserId) -> {
- int listenerUserId = (int) callbackUserId;
- if (listenerUserId == userId || listenerUserId == UserHandle.USER_ALL) {
- try {
- listener.onAssociationsChanged(associations);
- } catch (RemoteException ignored) {
- }
- }
- });
- }
-
- private void markIdAsPreviouslyUsedForPackage(
- int associationId, @UserIdInt int userId, @NonNull String packageName) {
- synchronized (mPreviouslyUsedIds) {
- Map<String, Set<Integer>> usedIdsForUser = mPreviouslyUsedIds.get(userId);
- if (usedIdsForUser == null) {
- usedIdsForUser = new HashMap<>();
- mPreviouslyUsedIds.put(userId, usedIdsForUser);
- }
-
- final Set<Integer> usedIdsForPackage =
- usedIdsForUser.computeIfAbsent(packageName, it -> new HashSet<>());
- usedIdsForPackage.add(associationId);
- }
- }
-
private void onPackageRemoveOrDataClearedInternal(
@UserIdInt int userId, @NonNull String packageName) {
if (DEBUG) {
@@ -629,19 +484,20 @@ public class CompanionDeviceManagerService extends SystemService {
+ packageName);
}
- // Clear associations.
+ // Clear all associations for the package.
final List<AssociationInfo> associationsForPackage =
- mAssociationStore.getAssociationsForPackage(userId, packageName);
- final List<ObservableUuid> uuidsTobeObserved =
- mObservableUuidStore.getObservableUuidsForPackage(userId, packageName);
- for (AssociationInfo association : associationsForPackage) {
- mAssociationStore.removeAssociation(association.getId());
+ mAssociationStore.getAssociationsByPackage(userId, packageName);
+ if (!associationsForPackage.isEmpty()) {
+ Slog.i(TAG, "Package removed or data cleared for user=[" + userId + "], package=["
+ + packageName + "]. Cleaning up CDM data...");
}
- // Clear role holders
for (AssociationInfo association : associationsForPackage) {
- mAssociationRevokeProcessor.maybeRemoveRoleHolderForAssociation(association);
+ mDisassociationProcessor.disassociate(association.getId());
}
- // Clear the uuids to be observed.
+
+ // Clear observable UUIDs for the package.
+ final List<ObservableUuid> uuidsTobeObserved =
+ mObservableUuidStore.getObservableUuidsForPackage(userId, packageName);
for (ObservableUuid uuid : uuidsTobeObserved) {
mObservableUuidStore.removeObservableUuid(userId, uuid.getUuid(), packageName);
}
@@ -653,7 +509,7 @@ public class CompanionDeviceManagerService extends SystemService {
if (DEBUG) Log.i(TAG, "onPackageModified() u" + userId + "/" + packageName);
final List<AssociationInfo> associationsForPackage =
- mAssociationStore.getAssociationsForPackage(userId, packageName);
+ mAssociationStore.getAssociationsByPackage(userId, packageName);
for (AssociationInfo association : associationsForPackage) {
updateSpecialAccessPermissionForAssociatedPackage(association.getUserId(),
association.getPackageName());
@@ -663,20 +519,7 @@ public class CompanionDeviceManagerService extends SystemService {
}
private void onPackageAddedInternal(@UserIdInt int userId, @NonNull String packageName) {
- if (DEBUG) Log.i(TAG, "onPackageAddedInternal() u" + userId + "/" + packageName);
-
- Set<AssociationInfo> associationsPendingAppInstall = mBackupRestoreProcessor
- .getAssociationsPendingAppInstallForUser(userId);
- for (AssociationInfo association : associationsPendingAppInstall) {
- if (!packageName.equals(association.getPackageName())) continue;
-
- AssociationInfo newAssociation = new AssociationInfo.Builder(association)
- .setPending(false)
- .build();
- mAssociationRequestsProcessor.maybeGrantRoleAndStoreAssociation(newAssociation,
- null, null);
- mBackupRestoreProcessor.removeFromPendingAppInstall(association);
- }
+ mBackupRestoreProcessor.restorePendingAssociations(userId, packageName);
}
// Revoke associations if the selfManaged companion device does not connect for 3 months.
@@ -698,7 +541,7 @@ public class CompanionDeviceManagerService extends SystemService {
final int id = association.getId();
Slog.i(TAG, "Removing inactive self-managed association id=" + id);
- mAssociationRevokeProcessor.disassociateInternal(id);
+ mDisassociationProcessor.disassociate(id);
}
}
@@ -750,7 +593,7 @@ public class CompanionDeviceManagerService extends SystemService {
enforceUsesCompanionDeviceFeature(getContext(), userId, packageName);
}
- return mAssociationStore.getAssociationsForPackage(userId, packageName);
+ return mAssociationStore.getActiveAssociationsByPackage(userId, packageName);
}
@Override
@@ -761,9 +604,9 @@ public class CompanionDeviceManagerService extends SystemService {
enforceCallerIsSystemOrCanInteractWithUserId(getContext(), userId);
if (userId == UserHandle.USER_ALL) {
- return List.copyOf(mAssociationStore.getAssociations());
+ return mAssociationStore.getActiveAssociations();
}
- return mAssociationStore.getAssociationsForUser(userId);
+ return mAssociationStore.getActiveAssociationsByUser(userId);
}
@Override
@@ -773,7 +616,8 @@ public class CompanionDeviceManagerService extends SystemService {
addOnAssociationsChangedListener_enforcePermission();
enforceCallerIsSystemOrCanInteractWithUserId(getContext(), userId);
- mListeners.register(listener, userId);
+
+ mAssociationStore.registerRemoteListener(listener, userId);
}
@Override
@@ -784,7 +628,7 @@ public class CompanionDeviceManagerService extends SystemService {
enforceCallerIsSystemOrCanInteractWithUserId(getContext(), userId);
- mListeners.unregister(listener);
+ mAssociationStore.unregisterRemoteListener(listener);
}
@Override
@@ -843,16 +687,16 @@ public class CompanionDeviceManagerService extends SystemService {
final AssociationInfo association =
getAssociationWithCallerChecks(userId, packageName, deviceMacAddress);
- mAssociationRevokeProcessor.disassociateInternal(association.getId());
+ mDisassociationProcessor.disassociate(association.getId());
}
@Override
public void disassociate(int associationId) {
- Log.i(TAG, "disassociate() associationId=" + associationId);
+ Slog.i(TAG, "disassociate() associationId=" + associationId);
final AssociationInfo association =
getAssociationWithCallerChecks(associationId);
- mAssociationRevokeProcessor.disassociateInternal(association.getId());
+ mDisassociationProcessor.disassociate(association.getId());
}
@Override
@@ -867,8 +711,7 @@ public class CompanionDeviceManagerService extends SystemService {
throw new IllegalArgumentException("Component name is too long.");
}
- final long identity = Binder.clearCallingIdentity();
- try {
+ return Binder.withCleanCallingIdentity(() -> {
if (!isRestrictedSettingsAllowed(getContext(), callingPackage, callingUid)) {
Slog.e(TAG, "Side loaded app must enable restricted "
+ "setting before request the notification access");
@@ -882,9 +725,7 @@ public class CompanionDeviceManagerService extends SystemService {
| PendingIntent.FLAG_CANCEL_CURRENT,
null /* options */,
new UserHandle(userId));
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
+ });
}
/**
@@ -912,7 +753,7 @@ public class CompanionDeviceManagerService extends SystemService {
return true;
}
- return any(mAssociationStore.getAssociationsForPackage(userId, packageName),
+ return any(mAssociationStore.getActiveAssociationsByPackage(userId, packageName),
a -> a.isLinkedTo(macAddress));
}
@@ -1166,7 +1007,7 @@ public class CompanionDeviceManagerService extends SystemService {
final int userId = getCallingUserId();
enforceCallerIsSystemOr(userId, packageName);
- AssociationInfo association = mAssociationStore.getAssociationsForPackageWithAddress(
+ AssociationInfo association = mAssociationStore.getFirstAssociationByAddress(
userId, packageName, deviceAddress);
if (association == null) {
@@ -1239,14 +1080,15 @@ public class CompanionDeviceManagerService extends SystemService {
enforceUsesCompanionDeviceFeature(getContext(), userId, callingPackage);
checkState(!ArrayUtils.isEmpty(
- mAssociationStore.getAssociationsForPackage(userId, callingPackage)),
+ mAssociationStore.getActiveAssociationsByPackage(userId,
+ callingPackage)),
"App must have an association before calling this API");
}
@Override
public boolean canPairWithoutPrompt(String packageName, String macAddress, int userId) {
final AssociationInfo association =
- mAssociationStore.getAssociationsForPackageWithAddress(
+ mAssociationStore.getFirstAssociationByAddress(
userId, packageName, macAddress);
if (association == null) {
return false;
@@ -1269,13 +1111,11 @@ public class CompanionDeviceManagerService extends SystemService {
@Override
public byte[] getBackupPayload(int userId) {
- Log.i(TAG, "getBackupPayload() userId=" + userId);
return mBackupRestoreProcessor.getBackupPayload(userId);
}
@Override
public void applyRestoredPayload(byte[] payload, int userId) {
- Log.i(TAG, "applyRestoredPayload() userId=" + userId);
mBackupRestoreProcessor.applyRestoredPayload(payload, userId);
}
@@ -1286,7 +1126,7 @@ public class CompanionDeviceManagerService extends SystemService {
return new CompanionDeviceShellCommand(CompanionDeviceManagerService.this,
mAssociationStore, mDevicePresenceMonitor, mTransportManager,
mSystemDataTransferProcessor, mAssociationRequestsProcessor,
- mBackupRestoreProcessor, mAssociationRevokeProcessor)
+ mBackupRestoreProcessor, mDisassociationProcessor)
.exec(this, in.getFileDescriptor(), out.getFileDescriptor(),
err.getFileDescriptor(), args);
}
@@ -1314,88 +1154,6 @@ public class CompanionDeviceManagerService extends SystemService {
/* callback */ null, /* resultReceiver */ null);
}
- @NonNull
- private Map<String, Set<Integer>> getPreviouslyUsedIdsForUser(@UserIdInt int userId) {
- synchronized (mPreviouslyUsedIds) {
- return getPreviouslyUsedIdsForUserLocked(userId);
- }
- }
-
- @GuardedBy("mPreviouslyUsedIds")
- @NonNull
- private Map<String, Set<Integer>> getPreviouslyUsedIdsForUserLocked(@UserIdInt int userId) {
- final Map<String, Set<Integer>> usedIdsForUser = mPreviouslyUsedIds.get(userId);
- if (usedIdsForUser == null) {
- return Collections.emptyMap();
- }
- return deepUnmodifiableCopy(usedIdsForUser);
- }
-
- @GuardedBy("mPreviouslyUsedIds")
- @NonNull
- private Set<Integer> getPreviouslyUsedIdsForPackageLocked(
- @UserIdInt int userId, @NonNull String packageName) {
- // "Deeply unmodifiable" map: the map itself and the Set<Integer> values it contains are all
- // unmodifiable.
- final Map<String, Set<Integer>> usedIdsForUser = getPreviouslyUsedIdsForUserLocked(userId);
- final Set<Integer> usedIdsForPackage = usedIdsForUser.get(packageName);
-
- if (usedIdsForPackage == null) {
- return Collections.emptySet();
- }
-
- //The set is already unmodifiable.
- return usedIdsForPackage;
- }
-
- /**
- * Get a new association id for the package.
- */
- public int getNewAssociationIdForPackage(@UserIdInt int userId, @NonNull String packageName) {
- synchronized (mPreviouslyUsedIds) {
- // First: collect all IDs currently in use for this user's Associations.
- final SparseBooleanArray usedIds = new SparseBooleanArray();
-
- // We should really only be checking associations for the given user (i.e.:
- // mAssociationStore.getAssociationsForUser(userId)), BUT in the past we've got in a
- // state where association IDs were not assigned correctly in regard to
- // user-to-association-ids-range (e.g. associations with IDs from 1 to 100,000 should
- // always belong to u0), so let's check all the associations.
- for (AssociationInfo it : mAssociationStore.getAssociations()) {
- usedIds.put(it.getId(), true);
- }
-
- // Some IDs may be reserved by associations that aren't stored yet due to missing
- // package after a backup restoration. We don't want the ID to have been taken by
- // another association by the time when it is activated from the package installation.
- final Set<AssociationInfo> pendingAssociations = mBackupRestoreProcessor
- .getAssociationsPendingAppInstallForUser(userId);
- for (AssociationInfo it : pendingAssociations) {
- usedIds.put(it.getId(), true);
- }
-
- // Second: collect all IDs that have been previously used for this package (and user).
- final Set<Integer> previouslyUsedIds =
- getPreviouslyUsedIdsForPackageLocked(userId, packageName);
-
- int id = getFirstAssociationIdForUser(userId);
- final int lastAvailableIdForUser = getLastAssociationIdForUser(userId);
-
- // Find first ID that isn't used now AND has never been used for the given package.
- while (usedIds.get(id) || previouslyUsedIds.contains(id)) {
- // Increment and try again
- id++;
- // ... but first check if the ID is valid (within the range allocated to the user).
- if (id > lastAvailableIdForUser) {
- throw new RuntimeException("Cannot create a new Association ID for "
- + packageName + " for user " + userId);
- }
- }
-
- return id;
- }
- }
-
/**
* Update special access for the association's package
*/
@@ -1410,13 +1168,16 @@ public class CompanionDeviceManagerService extends SystemService {
if (packageInfo == null) {
return;
}
+
+ Slog.i(TAG, "Updating special access for package=[" + packageInfo.packageName + "]...");
+
if (containsEither(packageInfo.requestedPermissions,
android.Manifest.permission.RUN_IN_BACKGROUND,
android.Manifest.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND)) {
- mPowerWhitelistManager.addToWhitelist(packageInfo.packageName);
+ mPowerExemptionManager.addToPermanentAllowList(packageInfo.packageName);
} else {
try {
- mPowerWhitelistManager.removeFromWhitelist(packageInfo.packageName);
+ mPowerExemptionManager.removeFromPermanentAllowList(packageInfo.packageName);
} catch (UnsupportedOperationException e) {
Slog.w(TAG, packageInfo.packageName + " can't be removed from power save"
+ " whitelist. It might due to the package is whitelisted by the system.");
@@ -1487,7 +1248,7 @@ public class CompanionDeviceManagerService extends SystemService {
try {
final List<AssociationInfo> associations =
- mAssociationStore.getAssociationsForUser(userId);
+ mAssociationStore.getActiveAssociationsByUser(userId);
for (AssociationInfo a : associations) {
try {
int uid = pm.getPackageUidAsUser(a.getPackageName(), userId);
@@ -1506,7 +1267,16 @@ public class CompanionDeviceManagerService extends SystemService {
new AssociationStore.OnChangeListener() {
@Override
public void onAssociationChanged(int changeType, AssociationInfo association) {
- onAssociationChangedInternal(changeType, association);
+ Slog.d(TAG, "onAssociationChanged changeType=[" + changeType
+ + "], association=[" + association);
+
+ final int userId = association.getUserId();
+ final List<AssociationInfo> updatedAssociations =
+ mAssociationStore.getActiveAssociationsByUser(userId);
+
+ updateAtm(userId, updatedAssociations);
+ updateSpecialAccessPermissionForAssociatedPackage(association.getUserId(),
+ association.getPackageName());
}
};
@@ -1634,64 +1404,4 @@ public class CompanionDeviceManagerService extends SystemService {
}
}
}
-
- /**
- * This method must only be called from {@link CompanionDeviceShellCommand} for testing
- * purposes only!
- */
- void persistState() {
- mUserPersistenceHandler.clearMessages();
- for (UserInfo user : mUserManager.getAliveUsers()) {
- persistStateForUser(user.id);
- }
- }
-
- /**
- * This class is dedicated to handling requests to persist user state.
- */
- @SuppressLint("HandlerLeak")
- private class PersistUserStateHandler extends Handler {
- PersistUserStateHandler() {
- super(BackgroundThread.get().getLooper());
- }
-
- /**
- * Persists user state unless there is already an outstanding request for the given user.
- */
- synchronized void postPersistUserState(@UserIdInt int userId) {
- if (!hasMessages(userId)) {
- sendMessage(obtainMessage(userId));
- }
- }
-
- /**
- * Clears *ALL* outstanding persist requests for *ALL* users.
- */
- synchronized void clearMessages() {
- removeCallbacksAndMessages(null);
- }
-
- @Override
- public void handleMessage(@NonNull Message msg) {
- final int userId = msg.what;
- persistStateForUser(userId);
- }
- }
-
- /**
- * Persist associations
- */
- public void postPersistUserState(@UserIdInt int userId) {
- mUserPersistenceHandler.postPersistUserState(userId);
- }
-
- /**
- * Set to store associations
- */
- public static class PerUserAssociationSet extends PerUser<Set<AssociationInfo>> {
- @Override
- protected @NonNull Set<AssociationInfo> create(int userId) {
- return new ArraySet<>();
- }
- }
}
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java b/services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java
index 16877dcaf183..a7a73cb6bddb 100644
--- a/services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java
+++ b/services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java
@@ -33,8 +33,8 @@ import android.util.Base64;
import android.util.proto.ProtoOutputStream;
import com.android.server.companion.association.AssociationRequestsProcessor;
-import com.android.server.companion.association.AssociationRevokeProcessor;
import com.android.server.companion.association.AssociationStore;
+import com.android.server.companion.association.DisassociationProcessor;
import com.android.server.companion.datatransfer.SystemDataTransferProcessor;
import com.android.server.companion.datatransfer.contextsync.BitmapUtils;
import com.android.server.companion.datatransfer.contextsync.CrossDeviceSyncController;
@@ -49,7 +49,7 @@ class CompanionDeviceShellCommand extends ShellCommand {
private static final String TAG = "CDM_CompanionDeviceShellCommand";
private final CompanionDeviceManagerService mService;
- private final AssociationRevokeProcessor mRevokeProcessor;
+ private final DisassociationProcessor mDisassociationProcessor;
private final AssociationStore mAssociationStore;
private final CompanionDevicePresenceMonitor mDevicePresenceMonitor;
private final CompanionTransportManager mTransportManager;
@@ -65,7 +65,7 @@ class CompanionDeviceShellCommand extends ShellCommand {
SystemDataTransferProcessor systemDataTransferProcessor,
AssociationRequestsProcessor associationRequestsProcessor,
BackupRestoreProcessor backupRestoreProcessor,
- AssociationRevokeProcessor revokeProcessor) {
+ DisassociationProcessor disassociationProcessor) {
mService = service;
mAssociationStore = associationStore;
mDevicePresenceMonitor = devicePresenceMonitor;
@@ -73,7 +73,7 @@ class CompanionDeviceShellCommand extends ShellCommand {
mSystemDataTransferProcessor = systemDataTransferProcessor;
mAssociationRequestsProcessor = associationRequestsProcessor;
mBackupRestoreProcessor = backupRestoreProcessor;
- mRevokeProcessor = revokeProcessor;
+ mDisassociationProcessor = disassociationProcessor;
}
@Override
@@ -105,12 +105,15 @@ class CompanionDeviceShellCommand extends ShellCommand {
case "list": {
final int userId = getNextIntArgRequired();
final List<AssociationInfo> associationsForUser =
- mAssociationStore.getAssociationsForUser(userId);
+ mAssociationStore.getActiveAssociationsByUser(userId);
+ final int maxId = mAssociationStore.getMaxId(userId);
+ out.println("Max ID: " + maxId);
+ out.println("Association ID | Package Name | Mac Address");
for (AssociationInfo association : associationsForUser) {
// TODO(b/212535524): use AssociationInfo.toShortString(), once it's not
// longer referenced in tests.
- out.println(association.getPackageName() + " "
- + association.getDeviceMacAddress() + " " + association.getId());
+ out.println(association.getId() + " | " + association.getPackageName()
+ + " | " + association.getDeviceMacAddress());
}
}
break;
@@ -132,28 +135,24 @@ class CompanionDeviceShellCommand extends ShellCommand {
final String address = getNextArgRequired();
final AssociationInfo association =
mService.getAssociationWithCallerChecks(userId, packageName, address);
- if (association != null) {
- mRevokeProcessor.disassociateInternal(association.getId());
- }
+ mDisassociationProcessor.disassociate(association.getId());
}
break;
case "disassociate-all": {
final int userId = getNextIntArgRequired();
- final String packageName = getNextArgRequired();
final List<AssociationInfo> userAssociations =
- mAssociationStore.getAssociationsForPackage(userId, packageName);
+ mAssociationStore.getAssociationsByUser(userId);
for (AssociationInfo association : userAssociations) {
if (sanitizeWithCallerChecks(mService.getContext(), association) != null) {
- mRevokeProcessor.disassociateInternal(association.getId());
+ mDisassociationProcessor.disassociate(association.getId());
}
}
}
break;
- case "clear-association-memory-cache":
- mService.persistState();
- mService.loadAssociationsFromDisk();
+ case "refresh-cache":
+ mAssociationStore.refreshCache();
break;
case "simulate-device-appeared":
diff --git a/services/companion/java/com/android/server/companion/association/AssociationDiskStore.java b/services/companion/java/com/android/server/companion/association/AssociationDiskStore.java
index 75cb12058247..46d60f9c8504 100644
--- a/services/companion/java/com/android/server/companion/association/AssociationDiskStore.java
+++ b/services/companion/java/com/android/server/companion/association/AssociationDiskStore.java
@@ -16,7 +16,6 @@
package com.android.server.companion.association;
-import static com.android.internal.util.CollectionUtils.forEach;
import static com.android.internal.util.XmlUtils.readBooleanAttribute;
import static com.android.internal.util.XmlUtils.readIntAttribute;
import static com.android.internal.util.XmlUtils.readLongAttribute;
@@ -26,7 +25,6 @@ import static com.android.internal.util.XmlUtils.writeIntAttribute;
import static com.android.internal.util.XmlUtils.writeLongAttribute;
import static com.android.internal.util.XmlUtils.writeStringAttribute;
import static com.android.server.companion.utils.AssociationUtils.getFirstAssociationIdForUser;
-import static com.android.server.companion.utils.AssociationUtils.getLastAssociationIdForUser;
import static com.android.server.companion.utils.DataStoreUtils.createStorageFileForUser;
import static com.android.server.companion.utils.DataStoreUtils.fileToByteArray;
import static com.android.server.companion.utils.DataStoreUtils.isEndOfTag;
@@ -40,10 +38,8 @@ import android.annotation.UserIdInt;
import android.companion.AssociationInfo;
import android.net.MacAddress;
import android.os.Environment;
-import android.util.ArrayMap;
import android.util.AtomicFile;
import android.util.Slog;
-import android.util.SparseArray;
import android.util.Xml;
import com.android.internal.util.XmlUtils;
@@ -59,11 +55,9 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.util.Collection;
-import java.util.HashSet;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@@ -82,8 +76,8 @@ import java.util.concurrent.ConcurrentMap;
* <p>
* Before Android T the data was stored using the v0 schema. See:
* <ul>
- * <li>{@link #readAssociationsV0(TypedXmlPullParser, int, Collection) readAssociationsV0()}.
- * <li>{@link #readAssociationV0(TypedXmlPullParser, int, int, Collection) readAssociationV0()}.
+ * <li>{@link #readAssociationsV0(TypedXmlPullParser, int) readAssociationsV0()}.
+ * <li>{@link #readAssociationV0(TypedXmlPullParser, int, int) readAssociationV0()}.
* </ul>
*
* The following snippet is a sample of a file that is using v0 schema.
@@ -116,15 +110,14 @@ import java.util.concurrent.ConcurrentMap;
* optional.
* <ul>
* <li> {@link #CURRENT_PERSISTENCE_VERSION}
- * <li> {@link #readAssociationsV1(TypedXmlPullParser, int, Collection) readAssociationsV1()}
- * <li> {@link #readAssociationV1(TypedXmlPullParser, int, Collection) readAssociationV1()}
- * <li> {@link #readPreviouslyUsedIdsV1(TypedXmlPullParser, Map) readPreviouslyUsedIdsV1()}
+ * <li> {@link #readAssociationsV1(TypedXmlPullParser, int) readAssociationsV1()}
+ * <li> {@link #readAssociationV1(TypedXmlPullParser, int) readAssociationV1()}
* </ul>
*
* The following snippet is a sample of a file that is using v1 schema.
* <pre>{@code
* <state persistence-version="1">
- * <associations>
+ * <associations max-id="3">
* <association
* id="1"
* package="com.sample.companion.app"
@@ -148,18 +141,12 @@ import java.util.concurrent.ConcurrentMap;
* time_approved="1634641160229"
* system_data_sync_flags="1"/>
* </associations>
- *
- * <previously-used-ids>
- * <package package_name="com.sample.companion.app">
- * <id>2</id>
- * </package>
- * </previously-used-ids>
* </state>
* }</pre>
*/
@SuppressLint("LongLogTag")
public final class AssociationDiskStore {
- private static final String TAG = "CompanionDevice_AssociationDiskStore";
+ private static final String TAG = "CDM_AssociationDiskStore";
private static final int CURRENT_PERSISTENCE_VERSION = 1;
@@ -169,16 +156,11 @@ public final class AssociationDiskStore {
private static final String XML_TAG_STATE = "state";
private static final String XML_TAG_ASSOCIATIONS = "associations";
private static final String XML_TAG_ASSOCIATION = "association";
- private static final String XML_TAG_PREVIOUSLY_USED_IDS = "previously-used-ids";
- private static final String XML_TAG_PACKAGE = "package";
private static final String XML_TAG_TAG = "tag";
- private static final String XML_TAG_ID = "id";
private static final String XML_ATTR_PERSISTENCE_VERSION = "persistence-version";
+ private static final String XML_ATTR_MAX_ID = "max-id";
private static final String XML_ATTR_ID = "id";
- // Used in <package> elements, nested within <previously-used-ids> elements.
- private static final String XML_ATTR_PACKAGE_NAME = "package_name";
- // Used in <association> elements, nested within <associations> elements.
private static final String XML_ATTR_PACKAGE = "package";
private static final String XML_ATTR_MAC_ADDRESS = "mac_address";
private static final String XML_ATTR_DISPLAY_NAME = "display_name";
@@ -199,38 +181,12 @@ public final class AssociationDiskStore {
/**
* Read all associations for given users
*/
- public void readStateForUsers(@NonNull List<Integer> userIds,
- @NonNull Set<AssociationInfo> allAssociationsOut,
- @NonNull SparseArray<Map<String, Set<Integer>>> previouslyUsedIdsPerUserOut) {
+ public Map<Integer, Associations> readAssociationsByUsers(@NonNull List<Integer> userIds) {
+ Map<Integer, Associations> userToAssociationsMap = new HashMap<>();
for (int userId : userIds) {
- // Previously used IDs are stored in the "out" collection per-user.
- final Map<String, Set<Integer>> previouslyUsedIds = new ArrayMap<>();
-
- // Associations for all users are stored in a single "flat" set: so we read directly
- // into it.
- final Set<AssociationInfo> associationsForUser = new HashSet<>();
- readStateForUser(userId, associationsForUser, previouslyUsedIds);
-
- // Go through all the associations for the user and check if their IDs are within
- // the allowed range (for the user).
- final int firstAllowedId = getFirstAssociationIdForUser(userId);
- final int lastAllowedId = getLastAssociationIdForUser(userId);
- for (AssociationInfo association : associationsForUser) {
- final int id = association.getId();
- if (id < firstAllowedId || id > lastAllowedId) {
- Slog.e(TAG, "Wrong association ID assignment: " + id + ". "
- + "Association belongs to u" + userId + " and thus its ID should be "
- + "within [" + firstAllowedId + ", " + lastAllowedId + "] range.");
- // TODO(b/224736262): try fixing (re-assigning) the ID?
- }
- }
-
- // Add user's association to the "output" set.
- allAssociationsOut.addAll(associationsForUser);
-
- // Save previously used IDs for this user into the "out" structure.
- previouslyUsedIdsPerUserOut.append(userId, previouslyUsedIds);
+ userToAssociationsMap.put(userId, readAssociationsByUser(userId));
}
+ return userToAssociationsMap;
}
/**
@@ -240,16 +196,12 @@ public final class AssociationDiskStore {
* retrieval from this datastore because it is not persisted (by design). This means that
* persisted data is not guaranteed to be identical to the initial data that was stored at the
* time of association.
- *
- * @param userId Android UserID
- * @param associationsOut a container to read the {@link AssociationInfo}s "into".
- * @param previouslyUsedIdsPerPackageOut a container to read the used IDs "into".
*/
- private void readStateForUser(@UserIdInt int userId,
- @NonNull Collection<AssociationInfo> associationsOut,
- @NonNull Map<String, Set<Integer>> previouslyUsedIdsPerPackageOut) {
- Slog.i(TAG, "Reading associations for user " + userId + " from disk");
+ @NonNull
+ private Associations readAssociationsByUser(@UserIdInt int userId) {
+ Slog.i(TAG, "Reading associations for user " + userId + " from disk.");
final AtomicFile file = getStorageFileForUser(userId);
+ Associations associations;
// getStorageFileForUser() ALWAYS returns the SAME OBJECT, which allows us to synchronize
// accesses to the file on the file system using this AtomicFile object.
@@ -260,7 +212,7 @@ public final class AssociationDiskStore {
if (!file.getBaseFile().exists()) {
legacyBaseFile = getBaseLegacyStorageFileForUser(userId);
if (!legacyBaseFile.exists()) {
- return;
+ return new Associations();
}
readFrom = new AtomicFile(legacyBaseFile);
@@ -270,13 +222,12 @@ public final class AssociationDiskStore {
rootTag = XML_TAG_STATE;
}
- final int version = readStateFromFileLocked(userId, readFrom, rootTag,
- associationsOut, previouslyUsedIdsPerPackageOut);
+ associations = readAssociationsFromFile(userId, readFrom, rootTag);
- if (legacyBaseFile != null || version < CURRENT_PERSISTENCE_VERSION) {
+ if (legacyBaseFile != null || associations.getVersion() < CURRENT_PERSISTENCE_VERSION) {
// The data is either in the legacy file or in the legacy format, or both.
// Save the data to right file in using the current format.
- persistStateToFileLocked(file, associationsOut, previouslyUsedIdsPerPackageOut);
+ writeAssociationsToFile(file, associations);
if (legacyBaseFile != null) {
// We saved the data to the right file, can delete the old file now.
@@ -284,89 +235,75 @@ public final class AssociationDiskStore {
}
}
}
+ return associations;
}
/**
- * Persisted data to the disk.
- *
- * Note that associatedDevice field in {@link AssociationInfo} is not persisted by this
- * datastore implementation.
- *
- * @param userId Android UserID
- * @param associations a set of user's associations.
- * @param previouslyUsedIdsPerPackage a set previously used Association IDs for the user.
+ * Write associations to disk for the user.
*/
- public void persistStateForUser(@UserIdInt int userId,
- @NonNull Collection<AssociationInfo> associations,
- @NonNull Map<String, Set<Integer>> previouslyUsedIdsPerPackage) {
+ public void writeAssociationsForUser(@UserIdInt int userId,
+ @NonNull Associations associations) {
Slog.i(TAG, "Writing associations for user " + userId + " to disk");
final AtomicFile file = getStorageFileForUser(userId);
// getStorageFileForUser() ALWAYS returns the SAME OBJECT, which allows us to synchronize
// accesses to the file on the file system using this AtomicFile object.
synchronized (file) {
- persistStateToFileLocked(file, associations, previouslyUsedIdsPerPackage);
+ writeAssociationsToFile(file, associations);
}
}
- private int readStateFromFileLocked(@UserIdInt int userId, @NonNull AtomicFile file,
- @NonNull String rootTag, @Nullable Collection<AssociationInfo> associationsOut,
- @NonNull Map<String, Set<Integer>> previouslyUsedIdsPerPackageOut) {
+ @NonNull
+ private static Associations readAssociationsFromFile(@UserIdInt int userId,
+ @NonNull AtomicFile file, @NonNull String rootTag) {
try (FileInputStream in = file.openRead()) {
- return readStateFromInputStream(userId, in, rootTag, associationsOut,
- previouslyUsedIdsPerPackageOut);
+ return readAssociationsFromInputStream(userId, in, rootTag);
} catch (XmlPullParserException | IOException e) {
Slog.e(TAG, "Error while reading associations file", e);
- return -1;
+ return new Associations();
}
}
- private int readStateFromInputStream(@UserIdInt int userId, @NonNull InputStream in,
- @NonNull String rootTag, @Nullable Collection<AssociationInfo> associationsOut,
- @NonNull Map<String, Set<Integer>> previouslyUsedIdsPerPackageOut)
+ @NonNull
+ private static Associations readAssociationsFromInputStream(@UserIdInt int userId,
+ @NonNull InputStream in, @NonNull String rootTag)
throws XmlPullParserException, IOException {
final TypedXmlPullParser parser = Xml.resolvePullParser(in);
-
XmlUtils.beginDocument(parser, rootTag);
+
final int version = readIntAttribute(parser, XML_ATTR_PERSISTENCE_VERSION, 0);
+ Associations associations = new Associations();
+
switch (version) {
case 0:
- readAssociationsV0(parser, userId, associationsOut);
+ associations = readAssociationsV0(parser, userId);
break;
case 1:
while (true) {
parser.nextTag();
if (isStartOfTag(parser, XML_TAG_ASSOCIATIONS)) {
- readAssociationsV1(parser, userId, associationsOut);
- } else if (isStartOfTag(parser, XML_TAG_PREVIOUSLY_USED_IDS)) {
- readPreviouslyUsedIdsV1(parser, previouslyUsedIdsPerPackageOut);
+ associations = readAssociationsV1(parser, userId);
} else if (isEndOfTag(parser, rootTag)) {
break;
}
}
break;
}
- return version;
+ return associations;
}
- private void persistStateToFileLocked(@NonNull AtomicFile file,
- @Nullable Collection<AssociationInfo> associations,
- @NonNull Map<String, Set<Integer>> previouslyUsedIdsPerPackage) {
+ private void writeAssociationsToFile(@NonNull AtomicFile file,
+ @NonNull Associations associations) {
// Writing to file could fail, for example, if the user has been recently removed and so was
// their DE (/data/system_de/<user-id>/) directory.
writeToFileSafely(file, out -> {
final TypedXmlSerializer serializer = Xml.resolveSerializer(out);
- serializer.setFeature(
- "http://xmlpull.org/v1/doc/features.html#indent-output", true);
-
+ serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
serializer.startDocument(null, true);
serializer.startTag(null, XML_TAG_STATE);
writeIntAttribute(serializer,
XML_ATTR_PERSISTENCE_VERSION, CURRENT_PERSISTENCE_VERSION);
-
writeAssociations(serializer, associations);
- writePreviouslyUsedIds(serializer, previouslyUsedIdsPerPackage);
-
serializer.endTag(null, XML_TAG_STATE);
serializer.endDocument();
});
@@ -379,7 +316,8 @@ public final class AssociationDiskStore {
* IMPORTANT: the method will ALWAYS return the same {@link AtomicFile} object, which makes it
* possible to synchronize reads and writes to the file using the returned object.
*/
- private @NonNull AtomicFile getStorageFileForUser(@UserIdInt int userId) {
+ @NonNull
+ private AtomicFile getStorageFileForUser(@UserIdInt int userId) {
return mUserIdToStorageFile.computeIfAbsent(userId,
u -> createStorageFileForUser(userId, FILE_NAME));
}
@@ -399,14 +337,12 @@ public final class AssociationDiskStore {
/**
* Convert payload to a set of associations
*/
- public void readStateFromPayload(byte[] payload, @UserIdInt int userId,
- @NonNull Set<AssociationInfo> associationsOut,
- @NonNull Map<String, Set<Integer>> previouslyUsedIdsPerPackageOut) {
+ public static Associations readAssociationsFromPayload(byte[] payload, @UserIdInt int userId) {
try (ByteArrayInputStream in = new ByteArrayInputStream(payload)) {
- readStateFromInputStream(userId, in, XML_TAG_STATE, associationsOut,
- previouslyUsedIdsPerPackageOut);
+ return readAssociationsFromInputStream(userId, in, XML_TAG_STATE);
} catch (XmlPullParserException | IOException e) {
Slog.e(TAG, "Error while reading associations file", e);
+ return new Associations();
}
}
@@ -414,8 +350,8 @@ public final class AssociationDiskStore {
return new File(Environment.getUserSystemDirectory(userId), FILE_NAME_LEGACY);
}
- private static void readAssociationsV0(@NonNull TypedXmlPullParser parser,
- @UserIdInt int userId, @NonNull Collection<AssociationInfo> out)
+ private static Associations readAssociationsV0(@NonNull TypedXmlPullParser parser,
+ @UserIdInt int userId)
throws XmlPullParserException, IOException {
requireStartOfTag(parser, XML_TAG_ASSOCIATIONS);
@@ -426,52 +362,70 @@ public final class AssociationDiskStore {
// means that CDM hasn't assigned any IDs yet, so we can just start from the first available
// id for each user (eg. 1 for user 0; 100 001 - for user 1; 200 001 - for user 2; etc).
int associationId = getFirstAssociationIdForUser(userId);
+ Associations associations = new Associations();
+ associations.setVersion(0);
+
while (true) {
parser.nextTag();
if (isEndOfTag(parser, XML_TAG_ASSOCIATIONS)) break;
if (!isStartOfTag(parser, XML_TAG_ASSOCIATION)) continue;
- readAssociationV0(parser, userId, associationId++, out);
+ associations.addAssociation(readAssociationV0(parser, userId, associationId++));
}
+
+ associations.setMaxId(associationId - 1);
+
+ return associations;
}
- private static void readAssociationV0(@NonNull TypedXmlPullParser parser, @UserIdInt int userId,
- int associationId, @NonNull Collection<AssociationInfo> out)
+ private static AssociationInfo readAssociationV0(@NonNull TypedXmlPullParser parser,
+ @UserIdInt int userId, int associationId)
throws XmlPullParserException {
requireStartOfTag(parser, XML_TAG_ASSOCIATION);
final String appPackage = readStringAttribute(parser, XML_ATTR_PACKAGE);
final String tag = readStringAttribute(parser, XML_TAG_TAG);
final String deviceAddress = readStringAttribute(parser, LEGACY_XML_ATTR_DEVICE);
-
- if (appPackage == null || deviceAddress == null) return;
-
final String profile = readStringAttribute(parser, XML_ATTR_PROFILE);
final boolean notify = readBooleanAttribute(parser, XML_ATTR_NOTIFY_DEVICE_NEARBY);
final long timeApproved = readLongAttribute(parser, XML_ATTR_TIME_APPROVED, 0L);
- out.add(new AssociationInfo(associationId, userId, appPackage, tag,
+ return new AssociationInfo(associationId, userId, appPackage, tag,
MacAddress.fromString(deviceAddress), null, profile, null,
/* managedByCompanionApp */ false, notify, /* revoked */ false, /* pending */ false,
- timeApproved, Long.MAX_VALUE, /* systemDataSyncFlags */ 0));
+ timeApproved, Long.MAX_VALUE, /* systemDataSyncFlags */ 0);
}
- private static void readAssociationsV1(@NonNull TypedXmlPullParser parser,
- @UserIdInt int userId, @NonNull Collection<AssociationInfo> out)
+ private static Associations readAssociationsV1(@NonNull TypedXmlPullParser parser,
+ @UserIdInt int userId)
throws XmlPullParserException, IOException {
requireStartOfTag(parser, XML_TAG_ASSOCIATIONS);
+ // For old builds that don't have max-id attr,
+ // default maxId to 0 and get the maxId out of all association ids.
+ int maxId = readIntAttribute(parser, XML_ATTR_MAX_ID, 0);
+ Associations associations = new Associations();
+ associations.setVersion(1);
+
while (true) {
parser.nextTag();
if (isEndOfTag(parser, XML_TAG_ASSOCIATIONS)) break;
if (!isStartOfTag(parser, XML_TAG_ASSOCIATION)) continue;
- readAssociationV1(parser, userId, out);
+ AssociationInfo association = readAssociationV1(parser, userId);
+ associations.addAssociation(association);
+
+ maxId = Math.max(maxId, association.getId());
}
+
+ associations.setMaxId(maxId);
+
+ return associations;
}
- private static void readAssociationV1(@NonNull TypedXmlPullParser parser, @UserIdInt int userId,
- @NonNull Collection<AssociationInfo> out) throws XmlPullParserException, IOException {
+ private static AssociationInfo readAssociationV1(@NonNull TypedXmlPullParser parser,
+ @UserIdInt int userId)
+ throws XmlPullParserException, IOException {
requireStartOfTag(parser, XML_TAG_ASSOCIATION);
final int associationId = readIntAttribute(parser, XML_ATTR_ID);
@@ -491,46 +445,19 @@ public final class AssociationDiskStore {
final int systemDataSyncFlags = readIntAttribute(parser,
XML_ATTR_SYSTEM_DATA_SYNC_FLAGS, 0);
- final AssociationInfo associationInfo = createAssociationInfoNoThrow(associationId, userId,
- appPackage, tag, macAddress, displayName, profile, selfManaged, notify, revoked,
- pending, timeApproved, lastTimeConnected, systemDataSyncFlags);
- if (associationInfo != null) {
- out.add(associationInfo);
- }
- }
-
- private static void readPreviouslyUsedIdsV1(@NonNull TypedXmlPullParser parser,
- @NonNull Map<String, Set<Integer>> out) throws XmlPullParserException, IOException {
- requireStartOfTag(parser, XML_TAG_PREVIOUSLY_USED_IDS);
-
- while (true) {
- parser.nextTag();
- if (isEndOfTag(parser, XML_TAG_PREVIOUSLY_USED_IDS)) break;
- if (!isStartOfTag(parser, XML_TAG_PACKAGE)) continue;
-
- final String packageName = readStringAttribute(parser, XML_ATTR_PACKAGE_NAME);
- final Set<Integer> usedIds = new HashSet<>();
-
- while (true) {
- parser.nextTag();
- if (isEndOfTag(parser, XML_TAG_PACKAGE)) break;
- if (!isStartOfTag(parser, XML_TAG_ID)) continue;
-
- parser.nextToken();
- final int id = Integer.parseInt(parser.getText());
- usedIds.add(id);
- }
-
- out.put(packageName, usedIds);
- }
+ return new AssociationInfo(associationId, userId, appPackage, tag, macAddress, displayName,
+ profile, null, selfManaged, notify, revoked, pending, timeApproved,
+ lastTimeConnected, systemDataSyncFlags);
}
private static void writeAssociations(@NonNull XmlSerializer parent,
- @Nullable Collection<AssociationInfo> associations) throws IOException {
+ @NonNull Associations associations)
+ throws IOException {
final XmlSerializer serializer = parent.startTag(null, XML_TAG_ASSOCIATIONS);
- for (AssociationInfo association : associations) {
+ for (AssociationInfo association : associations.getAssociations()) {
writeAssociation(serializer, association);
}
+ writeIntAttribute(serializer, XML_ATTR_MAX_ID, associations.getMaxId());
serializer.endTag(null, XML_TAG_ASSOCIATIONS);
}
@@ -557,26 +484,6 @@ public final class AssociationDiskStore {
serializer.endTag(null, XML_TAG_ASSOCIATION);
}
- private static void writePreviouslyUsedIds(@NonNull XmlSerializer parent,
- @NonNull Map<String, Set<Integer>> previouslyUsedIdsPerPackage) throws IOException {
- final XmlSerializer serializer = parent.startTag(null, XML_TAG_PREVIOUSLY_USED_IDS);
- for (Map.Entry<String, Set<Integer>> entry : previouslyUsedIdsPerPackage.entrySet()) {
- writePreviouslyUsedIdsForPackage(serializer, entry.getKey(), entry.getValue());
- }
- serializer.endTag(null, XML_TAG_PREVIOUSLY_USED_IDS);
- }
-
- private static void writePreviouslyUsedIdsForPackage(@NonNull XmlSerializer parent,
- @NonNull String packageName, @NonNull Set<Integer> previouslyUsedIds)
- throws IOException {
- final XmlSerializer serializer = parent.startTag(null, XML_TAG_PACKAGE);
- writeStringAttribute(serializer, XML_ATTR_PACKAGE_NAME, packageName);
- forEach(previouslyUsedIds, id -> serializer.startTag(null, XML_TAG_ID)
- .text(Integer.toString(id))
- .endTag(null, XML_TAG_ID));
- serializer.endTag(null, XML_TAG_PACKAGE);
- }
-
private static void requireStartOfTag(@NonNull XmlPullParser parser, @NonNull String tag)
throws XmlPullParserException {
if (isStartOfTag(parser, tag)) return;
@@ -587,22 +494,4 @@ public final class AssociationDiskStore {
private static @Nullable MacAddress stringToMacAddress(@Nullable String address) {
return address != null ? MacAddress.fromString(address) : null;
}
-
- private static AssociationInfo createAssociationInfoNoThrow(int associationId,
- @UserIdInt int userId, @NonNull String appPackage, @Nullable String tag,
- @Nullable MacAddress macAddress, @Nullable CharSequence displayName,
- @Nullable String profile, boolean selfManaged, boolean notify, boolean revoked,
- boolean pending, long timeApproved, long lastTimeConnected, int systemDataSyncFlags) {
- AssociationInfo associationInfo = null;
- try {
- // We do not persist AssociatedDevice, which means that AssociationInfo retrieved from
- // datastore is not guaranteed to be identical to the one from initial association.
- associationInfo = new AssociationInfo(associationId, userId, appPackage, tag,
- macAddress, displayName, profile, null, selfManaged, notify,
- revoked, pending, timeApproved, lastTimeConnected, systemDataSyncFlags);
- } catch (Exception e) {
- Slog.e(TAG, "Could not create AssociationInfo", e);
- }
- return associationInfo;
- }
}
diff --git a/services/companion/java/com/android/server/companion/association/AssociationRequestsProcessor.java b/services/companion/java/com/android/server/companion/association/AssociationRequestsProcessor.java
index 29ec7c2c9743..a02d9f912bcd 100644
--- a/services/companion/java/com/android/server/companion/association/AssociationRequestsProcessor.java
+++ b/services/companion/java/com/android/server/companion/association/AssociationRequestsProcessor.java
@@ -24,7 +24,6 @@ import static android.companion.CompanionDeviceManager.RESULT_INTERNAL_ERROR;
import static android.content.ComponentName.createRelative;
import static android.content.pm.PackageManager.FEATURE_WATCH;
-import static com.android.server.companion.utils.MetricUtils.logCreateAssociation;
import static com.android.server.companion.utils.PackageUtils.enforceUsesCompanionDeviceFeature;
import static com.android.server.companion.utils.PermissionsUtils.enforcePermissionForCreatingAssociation;
import static com.android.server.companion.utils.RolesUtils.addRoleHolderForAssociation;
@@ -128,17 +127,16 @@ public class AssociationRequestsProcessor {
private static final long ASSOCIATE_WITHOUT_PROMPT_WINDOW_MS = 60 * 60 * 1000; // 60 min;
private final @NonNull Context mContext;
- private final @NonNull CompanionDeviceManagerService mService;
- private final @NonNull PackageManagerInternal mPackageManager;
+ private final @NonNull PackageManagerInternal mPackageManagerInternal;
private final @NonNull AssociationStore mAssociationStore;
@NonNull
private final ComponentName mCompanionDeviceActivity;
- public AssociationRequestsProcessor(@NonNull CompanionDeviceManagerService service,
+ public AssociationRequestsProcessor(@NonNull Context context,
+ @NonNull PackageManagerInternal packageManagerInternal,
@NonNull AssociationStore associationStore) {
- mContext = service.getContext();
- mService = service;
- mPackageManager = service.mPackageManagerInternal;
+ mContext = context;
+ mPackageManagerInternal = packageManagerInternal;
mAssociationStore = associationStore;
mCompanionDeviceActivity = createRelative(
mContext.getString(R.string.config_companionDeviceManagerPackage),
@@ -160,7 +158,7 @@ public class AssociationRequestsProcessor {
requireNonNull(packageName, "Package name MUST NOT be null");
requireNonNull(callback, "Callback MUST NOT be null");
- final int packageUid = mPackageManager.getPackageUid(packageName, 0, userId);
+ final int packageUid = mPackageManagerInternal.getPackageUid(packageName, 0, userId);
Slog.d(TAG, "processNewAssociationRequest() " + "request=" + request + ", " + "package=u"
+ userId + "/" + packageName + " (uid=" + packageUid + ")");
@@ -226,7 +224,7 @@ public class AssociationRequestsProcessor {
enforceUsesCompanionDeviceFeature(mContext, userId, packageName);
- final int packageUid = mPackageManager.getPackageUid(packageName, 0, userId);
+ final int packageUid = mPackageManagerInternal.getPackageUid(packageName, 0, userId);
final Bundle extras = new Bundle();
extras.putBoolean(EXTRA_FORCE_CANCEL_CONFIRMATION, true);
@@ -243,7 +241,7 @@ public class AssociationRequestsProcessor {
@NonNull ResultReceiver resultReceiver, @Nullable MacAddress macAddress) {
final String packageName = request.getPackageName();
final int userId = request.getUserId();
- final int packageUid = mPackageManager.getPackageUid(packageName, 0, userId);
+ final int packageUid = mPackageManagerInternal.getPackageUid(packageName, 0, userId);
// 1. Need to check permissions again in case something changed, since we first received
// this request.
@@ -267,15 +265,12 @@ public class AssociationRequestsProcessor {
@NonNull AssociationRequest request, @NonNull String packageName, @UserIdInt int userId,
@Nullable MacAddress macAddress, @NonNull IAssociationRequestCallback callback,
@NonNull ResultReceiver resultReceiver) {
- final long callingIdentity = Binder.clearCallingIdentity();
- try {
+ Binder.withCleanCallingIdentity(() -> {
createAssociation(userId, packageName, macAddress, request.getDisplayName(),
request.getDeviceProfile(), request.getAssociatedDevice(),
request.isSelfManaged(),
callback, resultReceiver);
- } finally {
- Binder.restoreCallingIdentity(callingIdentity);
- }
+ });
}
/**
@@ -286,7 +281,7 @@ public class AssociationRequestsProcessor {
@Nullable String deviceProfile, @Nullable AssociatedDevice associatedDevice,
boolean selfManaged, @Nullable IAssociationRequestCallback callback,
@Nullable ResultReceiver resultReceiver) {
- final int id = mService.getNewAssociationIdForPackage(userId, packageName);
+ final int id = mAssociationStore.getNextId(userId);
final long timestamp = System.currentTimeMillis();
final AssociationInfo association = new AssociationInfo(id, userId, packageName,
@@ -296,10 +291,6 @@ public class AssociationRequestsProcessor {
// Add role holder for association (if specified) and add new association to store.
maybeGrantRoleAndStoreAssociation(association, callback, resultReceiver);
-
- // Don't need to update the mRevokedAssociationsPendingRoleHolderRemoval since
- // maybeRemoveRoleHolderForAssociation in PackageInactivityListener will handle the case
- // that there are other devices with the same profile, so the role holder won't be removed.
}
/**
@@ -311,12 +302,12 @@ public class AssociationRequestsProcessor {
// If the "Device Profile" is specified, make the companion application a holder of the
// corresponding role.
// If it is null, then the operation will succeed without granting any role.
- addRoleHolderForAssociation(mService.getContext(), association, success -> {
+ addRoleHolderForAssociation(mContext, association, success -> {
if (success) {
Slog.i(TAG, "Added " + association.getDeviceProfile() + " role to userId="
+ association.getUserId() + ", packageName="
+ association.getPackageName());
- addAssociationToStore(association);
+ mAssociationStore.addAssociation(association);
sendCallbackAndFinish(association, callback, resultReceiver);
} else {
Slog.e(TAG, "Failed to add u" + association.getUserId()
@@ -347,17 +338,6 @@ public class AssociationRequestsProcessor {
mAssociationStore.updateAssociation(updated);
}
- private void addAssociationToStore(@NonNull AssociationInfo association) {
- Slog.i(TAG, "New CDM association created=" + association);
-
- mAssociationStore.addAssociation(association);
-
- mService.updateSpecialAccessPermissionForAssociatedPackage(association.getUserId(),
- association.getPackageName());
-
- logCreateAssociation(association.getDeviceProfile());
- }
-
private void sendCallbackAndFinish(@Nullable AssociationInfo association,
@Nullable IAssociationRequestCallback callback,
@Nullable ResultReceiver resultReceiver) {
@@ -409,27 +389,22 @@ public class AssociationRequestsProcessor {
private PendingIntent createPendingIntent(int packageUid, Intent intent) {
final PendingIntent pendingIntent;
- final long token = Binder.clearCallingIdentity();
// Using uid of the application that will own the association (usually the same
// application that sent the request) allows us to have multiple "pending" association
// requests at the same time.
// If the application already has a pending association request, that PendingIntent
// will be cancelled except application wants to cancel the request by the system.
- try {
- pendingIntent = PendingIntent.getActivityAsUser(
+ return Binder.withCleanCallingIdentity(() ->
+ PendingIntent.getActivityAsUser(
mContext, /*requestCode */ packageUid, intent,
FLAG_ONE_SHOT | FLAG_CANCEL_CURRENT | FLAG_IMMUTABLE,
ActivityOptions.makeBasic()
.setPendingIntentCreatorBackgroundActivityStartMode(
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED)
.toBundle(),
- UserHandle.CURRENT);
- } finally {
- Binder.restoreCallingIdentity(token);
- }
-
- return pendingIntent;
+ UserHandle.CURRENT)
+ );
}
private final ResultReceiver mOnRequestConfirmationReceiver =
@@ -470,7 +445,7 @@ public class AssociationRequestsProcessor {
// Throttle frequent associations
final long now = System.currentTimeMillis();
final List<AssociationInfo> associationForPackage =
- mAssociationStore.getAssociationsForPackage(userId, packageName);
+ mAssociationStore.getActiveAssociationsByPackage(userId, packageName);
// Number of "recent" associations.
int recent = 0;
for (AssociationInfo association : associationForPackage) {
@@ -486,6 +461,6 @@ public class AssociationRequestsProcessor {
}
}
- return PackageUtils.isPackageAllowlisted(mContext, mPackageManager, packageName);
+ return PackageUtils.isPackageAllowlisted(mContext, mPackageManagerInternal, packageName);
}
}
diff --git a/services/companion/java/com/android/server/companion/association/AssociationRevokeProcessor.java b/services/companion/java/com/android/server/companion/association/AssociationRevokeProcessor.java
deleted file mode 100644
index d1efbbcd3411..000000000000
--- a/services/companion/java/com/android/server/companion/association/AssociationRevokeProcessor.java
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.companion.association;
-
-import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE;
-import static android.companion.AssociationRequest.DEVICE_PROFILE_AUTOMOTIVE_PROJECTION;
-
-import static com.android.internal.util.CollectionUtils.any;
-import static com.android.server.companion.utils.MetricUtils.logRemoveAssociation;
-import static com.android.server.companion.utils.RolesUtils.removeRoleHolderForAssociation;
-import static com.android.server.companion.CompanionDeviceManagerService.PerUserAssociationSet;
-
-import android.annotation.NonNull;
-import android.annotation.SuppressLint;
-import android.annotation.UserIdInt;
-import android.app.ActivityManager;
-import android.companion.AssociationInfo;
-import android.content.Context;
-import android.content.pm.PackageManagerInternal;
-import android.os.Binder;
-import android.os.UserHandle;
-import android.util.ArraySet;
-import android.util.Log;
-import android.util.Slog;
-
-import com.android.internal.annotations.GuardedBy;
-import com.android.server.companion.CompanionApplicationController;
-import com.android.server.companion.CompanionDeviceManagerService;
-import com.android.server.companion.datatransfer.SystemDataTransferRequestStore;
-import com.android.server.companion.presence.CompanionDevicePresenceMonitor;
-import com.android.server.companion.transport.CompanionTransportManager;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * A class response for Association removal.
- */
-@SuppressLint("LongLogTag")
-public class AssociationRevokeProcessor {
-
- private static final String TAG = "CDM_AssociationRevokeProcessor";
- private static final boolean DEBUG = false;
- private final @NonNull Context mContext;
- private final @NonNull CompanionDeviceManagerService mService;
- private final @NonNull AssociationStore mAssociationStore;
- private final @NonNull PackageManagerInternal mPackageManagerInternal;
- private final @NonNull CompanionDevicePresenceMonitor mDevicePresenceMonitor;
- private final @NonNull SystemDataTransferRequestStore mSystemDataTransferRequestStore;
- private final @NonNull CompanionApplicationController mCompanionAppController;
- private final @NonNull CompanionTransportManager mTransportManager;
- private final OnPackageVisibilityChangeListener mOnPackageVisibilityChangeListener;
- private final ActivityManager mActivityManager;
-
- /**
- * A structure that consists of a set of revoked associations that pending for role holder
- * removal per each user.
- *
- * @see #maybeRemoveRoleHolderForAssociation(AssociationInfo)
- * @see #addToPendingRoleHolderRemoval(AssociationInfo)
- * @see #removeFromPendingRoleHolderRemoval(AssociationInfo)
- * @see #getPendingRoleHolderRemovalAssociationsForUser(int)
- */
- @GuardedBy("mRevokedAssociationsPendingRoleHolderRemoval")
- private final PerUserAssociationSet mRevokedAssociationsPendingRoleHolderRemoval =
- new PerUserAssociationSet();
- /**
- * Contains uid-s of packages pending to be removed from the role holder list (after
- * revocation of an association), which will happen one the package is no longer visible to the
- * user.
- * For quicker uid -> (userId, packageName) look-up this is not a {@code Set<Integer>} but
- * a {@code Map<Integer, String>} which maps uid-s to packageName-s (userId-s can be derived
- * from uid-s using {@link UserHandle#getUserId(int)}).
- *
- * @see #maybeRemoveRoleHolderForAssociation(AssociationInfo)
- * @see #addToPendingRoleHolderRemoval(AssociationInfo)
- * @see #removeFromPendingRoleHolderRemoval(AssociationInfo)
- */
- @GuardedBy("mRevokedAssociationsPendingRoleHolderRemoval")
- private final Map<Integer, String> mUidsPendingRoleHolderRemoval = new HashMap<>();
-
- public AssociationRevokeProcessor(@NonNull CompanionDeviceManagerService service,
- @NonNull AssociationStore associationStore,
- @NonNull PackageManagerInternal packageManager,
- @NonNull CompanionDevicePresenceMonitor devicePresenceMonitor,
- @NonNull CompanionApplicationController applicationController,
- @NonNull SystemDataTransferRequestStore systemDataTransferRequestStore,
- @NonNull CompanionTransportManager companionTransportManager) {
- mService = service;
- mContext = service.getContext();
- mActivityManager = mContext.getSystemService(ActivityManager.class);
- mAssociationStore = associationStore;
- mPackageManagerInternal = packageManager;
- mOnPackageVisibilityChangeListener =
- new OnPackageVisibilityChangeListener(mActivityManager);
- mDevicePresenceMonitor = devicePresenceMonitor;
- mCompanionAppController = applicationController;
- mSystemDataTransferRequestStore = systemDataTransferRequestStore;
- mTransportManager = companionTransportManager;
- }
-
- /**
- * Disassociate an association
- */
- // TODO: also revoke notification access
- public void disassociateInternal(int associationId) {
- final AssociationInfo association = mAssociationStore.getAssociationById(associationId);
- final int userId = association.getUserId();
- final String packageName = association.getPackageName();
- final String deviceProfile = association.getDeviceProfile();
-
- // Detach transport if exists
- mTransportManager.detachSystemDataTransport(packageName, userId, associationId);
-
- if (!maybeRemoveRoleHolderForAssociation(association)) {
- // Need to remove the app from list of the role holders, but will have to do it later
- // (the app is in foreground at the moment).
- addToPendingRoleHolderRemoval(association);
- }
-
- // Need to check if device still present now because CompanionDevicePresenceMonitor will
- // remove current connected device after mAssociationStore.removeAssociation
- final boolean wasPresent = mDevicePresenceMonitor.isDevicePresent(associationId);
-
- // Removing the association.
- mAssociationStore.removeAssociation(associationId);
- // Do not need to persistUserState since CompanionDeviceManagerService will get callback
- // from #onAssociationChanged, and it will handle the persistUserState which including
- // active and revoked association.
- logRemoveAssociation(deviceProfile);
-
- // Remove all the system data transfer requests for the association.
- mSystemDataTransferRequestStore.removeRequestsByAssociationId(userId, associationId);
-
- if (!wasPresent || !association.isNotifyOnDeviceNearby()) return;
- // The device was connected and the app was notified: check if we need to unbind the app
- // now.
- final boolean shouldStayBound = any(
- mAssociationStore.getAssociationsForPackage(userId, packageName),
- it -> it.isNotifyOnDeviceNearby()
- && mDevicePresenceMonitor.isDevicePresent(it.getId()));
- if (shouldStayBound) return;
- mCompanionAppController.unbindCompanionApplication(userId, packageName);
- }
-
- /**
- * First, checks if the companion application should be removed from the list role holders when
- * upon association's removal, i.e.: association's profile (matches the role) is not null,
- * the application does not have other associations with the same profile, etc.
- *
- * <p>
- * Then, if establishes that the application indeed has to be removed from the list of the role
- * holders, checks if it could be done right now -
- * {@link android.app.role.RoleManager#removeRoleHolderAsUser(String, String, int, UserHandle, java.util.concurrent.Executor, java.util.function.Consumer) RoleManager#removeRoleHolderAsUser()}
- * will kill the application's process, which leads poor user experience if the application was
- * in foreground when this happened, to avoid this CDMS delays invoking
- * {@code RoleManager.removeRoleHolderAsUser()} until the app is no longer in foreground.
- *
- * @return {@code true} if the application does NOT need be removed from the list of the role
- * holders OR if the application was successfully removed from the list of role holders.
- * I.e.: from the role-management perspective the association is done with.
- * {@code false} if the application needs to be removed from the list of role the role
- * holders, BUT it CDMS would prefer to do it later.
- * I.e.: application is in the foreground at the moment, but invoking
- * {@code RoleManager.removeRoleHolderAsUser()} will kill the application's process,
- * which would lead to the poor UX, hence need to try later.
- */
- public boolean maybeRemoveRoleHolderForAssociation(@NonNull AssociationInfo association) {
- if (DEBUG) Log.d(TAG, "maybeRemoveRoleHolderForAssociation() association=" + association);
- final String deviceProfile = association.getDeviceProfile();
-
- if (deviceProfile == null) {
- // No role was granted to for this association, there is nothing else we need to here.
- return true;
- }
- // Do not need to remove the system role since it was pre-granted by the system.
- if (deviceProfile.equals(DEVICE_PROFILE_AUTOMOTIVE_PROJECTION)) {
- return true;
- }
-
- // Check if the applications is associated with another devices with the profile. If so,
- // it should remain the role holder.
- final int id = association.getId();
- final int userId = association.getUserId();
- final String packageName = association.getPackageName();
- final boolean roleStillInUse = any(
- mAssociationStore.getAssociationsForPackage(userId, packageName),
- it -> deviceProfile.equals(it.getDeviceProfile()) && id != it.getId());
- if (roleStillInUse) {
- // Application should remain a role holder, there is nothing else we need to here.
- return true;
- }
-
- final int packageProcessImportance = getPackageProcessImportance(userId, packageName);
- if (packageProcessImportance <= IMPORTANCE_VISIBLE) {
- // Need to remove the app from the list of role holders, but the process is visible to
- // the user at the moment, so we'll need to it later: log and return false.
- Slog.i(TAG, "Cannot remove role holder for the removed association id=" + id
- + " now - process is visible.");
- return false;
- }
-
- removeRoleHolderForAssociation(mContext, association.getUserId(),
- association.getPackageName(), association.getDeviceProfile());
- return true;
- }
-
- /**
- * Set revoked flag for active association and add the revoked association and the uid into
- * the caches.
- *
- * @see #mRevokedAssociationsPendingRoleHolderRemoval
- * @see #mUidsPendingRoleHolderRemoval
- * @see OnPackageVisibilityChangeListener
- */
- public void addToPendingRoleHolderRemoval(@NonNull AssociationInfo association) {
- // First: set revoked flag
- association = (new AssociationInfo.Builder(association)).setRevoked(true).build();
- final String packageName = association.getPackageName();
- final int userId = association.getUserId();
- final int uid = mPackageManagerInternal.getPackageUid(packageName, /* flags */0, userId);
- // Second: add to the set.
- synchronized (mRevokedAssociationsPendingRoleHolderRemoval) {
- mRevokedAssociationsPendingRoleHolderRemoval.forUser(association.getUserId())
- .add(association);
- if (!mUidsPendingRoleHolderRemoval.containsKey(uid)) {
- mUidsPendingRoleHolderRemoval.put(uid, packageName);
-
- if (mUidsPendingRoleHolderRemoval.size() == 1) {
- // Just added first uid: start the listener
- mOnPackageVisibilityChangeListener.startListening();
- }
- }
- }
- }
-
- /**
- * @return a copy of the revoked associations set (safeguarding against
- * {@code ConcurrentModificationException}-s).
- */
- @NonNull
- public Set<AssociationInfo> getPendingRoleHolderRemovalAssociationsForUser(
- @UserIdInt int userId) {
- synchronized (mRevokedAssociationsPendingRoleHolderRemoval) {
- // Return a copy.
- return new ArraySet<>(mRevokedAssociationsPendingRoleHolderRemoval.forUser(userId));
- }
- }
-
- @SuppressLint("MissingPermission")
- private int getPackageProcessImportance(@UserIdInt int userId, @NonNull String packageName) {
- return Binder.withCleanCallingIdentity(() -> {
- final int uid =
- mPackageManagerInternal.getPackageUid(packageName, /* flags */0, userId);
- return mActivityManager.getUidImportance(uid);
- });
- }
-
- /**
- * Remove the revoked association from the cache and also remove the uid from the map if
- * there are other associations with the same package still pending for role holder removal.
- *
- * @see #mRevokedAssociationsPendingRoleHolderRemoval
- * @see #mUidsPendingRoleHolderRemoval
- * @see OnPackageVisibilityChangeListener
- */
- private void removeFromPendingRoleHolderRemoval(@NonNull AssociationInfo association) {
- final String packageName = association.getPackageName();
- final int userId = association.getUserId();
- final int uid = mPackageManagerInternal.getPackageUid(packageName, /* flags */ 0, userId);
-
- synchronized (mRevokedAssociationsPendingRoleHolderRemoval) {
- mRevokedAssociationsPendingRoleHolderRemoval.forUser(userId)
- .remove(association);
-
- final boolean shouldKeepUidForRemoval = any(
- getPendingRoleHolderRemovalAssociationsForUser(userId),
- ai -> packageName.equals(ai.getPackageName()));
- // Do not remove the uid from the map since other associations with
- // the same packageName still pending for role holder removal.
- if (!shouldKeepUidForRemoval) {
- mUidsPendingRoleHolderRemoval.remove(uid);
- }
-
- if (mUidsPendingRoleHolderRemoval.isEmpty()) {
- // The set is empty now - can "turn off" the listener.
- mOnPackageVisibilityChangeListener.stopListening();
- }
- }
- }
-
- private String getPackageNameByUid(int uid) {
- synchronized (mRevokedAssociationsPendingRoleHolderRemoval) {
- return mUidsPendingRoleHolderRemoval.get(uid);
- }
- }
-
- /**
- * An OnUidImportanceListener class which watches the importance of the packages.
- * In this class, we ONLY interested in the importance of the running process is greater than
- * {@link ActivityManager.RunningAppProcessInfo#IMPORTANCE_VISIBLE} for the uids have been added
- * into the {@link #mUidsPendingRoleHolderRemoval}. Lastly remove the role holder for the
- * revoked associations for the same packages.
- *
- * @see #maybeRemoveRoleHolderForAssociation(AssociationInfo)
- * @see #removeFromPendingRoleHolderRemoval(AssociationInfo)
- * @see #getPendingRoleHolderRemovalAssociationsForUser(int)
- */
- private class OnPackageVisibilityChangeListener implements
- ActivityManager.OnUidImportanceListener {
- final @NonNull ActivityManager mAm;
-
- OnPackageVisibilityChangeListener(@NonNull ActivityManager am) {
- this.mAm = am;
- }
-
- @SuppressLint("MissingPermission")
- void startListening() {
- Binder.withCleanCallingIdentity(
- () -> mAm.addOnUidImportanceListener(
- /* listener */ OnPackageVisibilityChangeListener.this,
- ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE));
- }
-
- @SuppressLint("MissingPermission")
- void stopListening() {
- Binder.withCleanCallingIdentity(
- () -> mAm.removeOnUidImportanceListener(
- /* listener */ OnPackageVisibilityChangeListener.this));
- }
-
- @Override
- public void onUidImportance(int uid, int importance) {
- if (importance <= ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE) {
- // The lower the importance value the more "important" the process is.
- // We are only interested when the process ceases to be visible.
- return;
- }
-
- final String packageName = getPackageNameByUid(uid);
- if (packageName == null) {
- // Not interested in this uid.
- return;
- }
-
- final int userId = UserHandle.getUserId(uid);
-
- boolean needToPersistStateForUser = false;
-
- for (AssociationInfo association :
- getPendingRoleHolderRemovalAssociationsForUser(userId)) {
- if (!packageName.equals(association.getPackageName())) continue;
-
- if (!maybeRemoveRoleHolderForAssociation(association)) {
- // Did not remove the role holder, will have to try again later.
- continue;
- }
-
- removeFromPendingRoleHolderRemoval(association);
- needToPersistStateForUser = true;
- }
-
- if (needToPersistStateForUser) {
- mService.postPersistUserState(userId);
- }
- }
- }
-}
diff --git a/services/companion/java/com/android/server/companion/association/AssociationStore.java b/services/companion/java/com/android/server/companion/association/AssociationStore.java
index 2f94bdebb988..edebb55233d0 100644
--- a/services/companion/java/com/android/server/companion/association/AssociationStore.java
+++ b/services/companion/java/com/android/server/companion/association/AssociationStore.java
@@ -16,15 +16,24 @@
package com.android.server.companion.association;
+import static com.android.server.companion.utils.MetricUtils.logCreateAssociation;
+import static com.android.server.companion.utils.MetricUtils.logRemoveAssociation;
+
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.annotation.UserIdInt;
import android.companion.AssociationInfo;
+import android.companion.IOnAssociationsChangedListener;
+import android.content.pm.UserInfo;
import android.net.MacAddress;
+import android.os.Binder;
+import android.os.RemoteCallbackList;
+import android.os.RemoteException;
+import android.os.UserHandle;
+import android.os.UserManager;
import android.util.Slog;
-import android.util.SparseArray;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.CollectionUtils;
@@ -33,15 +42,14 @@ import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
/**
* Association store for CRUD.
@@ -109,63 +117,124 @@ public class AssociationStore {
private final Object mLock = new Object();
+ private final ExecutorService mExecutor;
+
@GuardedBy("mLock")
- private final Map<Integer, AssociationInfo> mIdMap = new HashMap<>();
+ private boolean mPersisted = false;
@GuardedBy("mLock")
- private final Map<MacAddress, Set<Integer>> mAddressMap = new HashMap<>();
+ private final Map<Integer, AssociationInfo> mIdToAssociationMap = new HashMap<>();
@GuardedBy("mLock")
- private final SparseArray<List<AssociationInfo>> mCachedPerUser = new SparseArray<>();
+ private final Map<Integer, Integer> mUserToMaxId = new HashMap<>();
+
+ @GuardedBy("mLocalListeners")
+ private final Set<OnChangeListener> mLocalListeners = new LinkedHashSet<>();
+ @GuardedBy("mRemoteListeners")
+ private final RemoteCallbackList<IOnAssociationsChangedListener> mRemoteListeners =
+ new RemoteCallbackList<>();
+
+ private final UserManager mUserManager;
+ private final AssociationDiskStore mDiskStore;
- @GuardedBy("mListeners")
- private final Set<OnChangeListener> mListeners = new LinkedHashSet<>();
+ public AssociationStore(UserManager userManager, AssociationDiskStore diskStore) {
+ mUserManager = userManager;
+ mDiskStore = diskStore;
+ mExecutor = Executors.newSingleThreadExecutor();
+ }
+
+ /**
+ * Load all alive users' associations from disk to cache.
+ */
+ public void refreshCache() {
+ Binder.withCleanCallingIdentity(() -> {
+ List<Integer> userIds = new ArrayList<>();
+ for (UserInfo user : mUserManager.getAliveUsers()) {
+ userIds.add(user.id);
+ }
+
+ synchronized (mLock) {
+ mPersisted = false;
+
+ mIdToAssociationMap.clear();
+ mUserToMaxId.clear();
+
+ // The data is stored in DE directories, so we can read the data for all users now
+ // (which would not be possible if the data was stored to CE directories).
+ Map<Integer, Associations> userToAssociationsMap =
+ mDiskStore.readAssociationsByUsers(userIds);
+ for (Map.Entry<Integer, Associations> entry : userToAssociationsMap.entrySet()) {
+ for (AssociationInfo association : entry.getValue().getAssociations()) {
+ mIdToAssociationMap.put(association.getId(), association);
+ }
+ mUserToMaxId.put(entry.getKey(), entry.getValue().getMaxId());
+ }
+
+ mPersisted = true;
+ }
+ });
+ }
+
+ /**
+ * Get the current max association id.
+ */
+ public int getMaxId(int userId) {
+ synchronized (mLock) {
+ return mUserToMaxId.getOrDefault(userId, 0);
+ }
+ }
+
+ /**
+ * Get the next available association id.
+ */
+ public int getNextId(int userId) {
+ synchronized (mLock) {
+ return getMaxId(userId) + 1;
+ }
+ }
/**
* Add an association.
*/
public void addAssociation(@NonNull AssociationInfo association) {
- Slog.i(TAG, "Adding new association=" + association);
-
- // Validity check first.
- checkNotRevoked(association);
+ Slog.i(TAG, "Adding new association=[" + association + "]...");
final int id = association.getId();
+ final int userId = association.getUserId();
synchronized (mLock) {
- if (mIdMap.containsKey(id)) {
- Slog.e(TAG, "Association with id " + id + " already exists.");
+ if (mIdToAssociationMap.containsKey(id)) {
+ Slog.e(TAG, "Association with id=[" + id + "] already exists.");
return;
}
- mIdMap.put(id, association);
- final MacAddress address = association.getDeviceMacAddress();
- if (address != null) {
- mAddressMap.computeIfAbsent(address, it -> new HashSet<>()).add(id);
- }
+ mIdToAssociationMap.put(id, association);
+ mUserToMaxId.put(userId, Math.max(mUserToMaxId.getOrDefault(userId, 0), id));
- invalidateCacheForUserLocked(association.getUserId());
+ writeCacheToDisk(userId);
Slog.i(TAG, "Done adding new association.");
}
- broadcastChange(CHANGE_TYPE_ADDED, association);
+ logCreateAssociation(association.getDeviceProfile());
+
+ if (association.isActive()) {
+ broadcastChange(CHANGE_TYPE_ADDED, association);
+ }
}
/**
* Update an association.
*/
public void updateAssociation(@NonNull AssociationInfo updated) {
- Slog.i(TAG, "Updating new association=" + updated);
- // Validity check first.
- checkNotRevoked(updated);
+ Slog.i(TAG, "Updating new association=[" + updated + "]...");
final int id = updated.getId();
-
final AssociationInfo current;
final boolean macAddressChanged;
+
synchronized (mLock) {
- current = mIdMap.get(id);
+ current = mIdToAssociationMap.get(id);
if (current == null) {
- Slog.w(TAG, "Can't update association. It does not exist.");
+ Slog.w(TAG, "Can't update association id=[" + id + "]. It does not exist.");
return;
}
@@ -174,174 +243,245 @@ public class AssociationStore {
return;
}
- // Update the ID-to-Association map.
- mIdMap.put(id, updated);
- // Invalidate the corresponding user cache entry.
- invalidateCacheForUserLocked(current.getUserId());
+ mIdToAssociationMap.put(id, updated);
+
+ writeCacheToDisk(updated.getUserId());
+ }
+
+ Slog.i(TAG, "Done updating association.");
+
+ if (current.isActive() && !updated.isActive()) {
+ broadcastChange(CHANGE_TYPE_REMOVED, updated);
+ return;
+ }
- // Update the MacAddress-to-List<Association> map if needed.
+ if (updated.isActive()) {
+ // Check if the MacAddress has changed.
final MacAddress updatedAddress = updated.getDeviceMacAddress();
final MacAddress currentAddress = current.getDeviceMacAddress();
macAddressChanged = !Objects.equals(currentAddress, updatedAddress);
- if (macAddressChanged) {
- if (currentAddress != null) {
- mAddressMap.get(currentAddress).remove(id);
- }
- if (updatedAddress != null) {
- mAddressMap.computeIfAbsent(updatedAddress, it -> new HashSet<>()).add(id);
- }
- }
- Slog.i(TAG, "Done updating association.");
- }
- final int changeType = macAddressChanged ? CHANGE_TYPE_UPDATED_ADDRESS_CHANGED
- : CHANGE_TYPE_UPDATED_ADDRESS_UNCHANGED;
- broadcastChange(changeType, updated);
+ broadcastChange(macAddressChanged ? CHANGE_TYPE_UPDATED_ADDRESS_CHANGED
+ : CHANGE_TYPE_UPDATED_ADDRESS_UNCHANGED, updated);
+ }
}
/**
- * Remove an association
+ * Remove an association.
*/
public void removeAssociation(int id) {
- Slog.i(TAG, "Removing association id=" + id);
+ Slog.i(TAG, "Removing association id=[" + id + "]...");
final AssociationInfo association;
+
synchronized (mLock) {
- association = mIdMap.remove(id);
+ association = mIdToAssociationMap.remove(id);
if (association == null) {
- Slog.w(TAG, "Can't remove association. It does not exist.");
+ Slog.w(TAG, "Can't remove association id=[" + id + "]. It does not exist.");
return;
}
- final MacAddress macAddress = association.getDeviceMacAddress();
- if (macAddress != null) {
- mAddressMap.get(macAddress).remove(id);
+ writeCacheToDisk(association.getUserId());
+
+ Slog.i(TAG, "Done removing association.");
+ }
+
+ logRemoveAssociation(association.getDeviceProfile());
+
+ if (association.isActive()) {
+ broadcastChange(CHANGE_TYPE_REMOVED, association);
+ }
+ }
+
+ private void writeCacheToDisk(@UserIdInt int userId) {
+ mExecutor.execute(() -> {
+ Associations associations = new Associations();
+ synchronized (mLock) {
+ associations.setMaxId(mUserToMaxId.getOrDefault(userId, 0));
+ associations.setAssociations(
+ CollectionUtils.filter(mIdToAssociationMap.values().stream().toList(),
+ a -> a.getUserId() == userId));
}
+ mDiskStore.writeAssociationsForUser(userId, associations);
+ });
+ }
- invalidateCacheForUserLocked(association.getUserId());
+ /**
+ * Get a copy of all associations including pending and revoked ones.
+ * Modifying the copy won't modify the actual associations.
+ *
+ * If a cache miss happens, read from disk.
+ */
+ @NonNull
+ public List<AssociationInfo> getAssociations() {
+ synchronized (mLock) {
+ if (!mPersisted) {
+ refreshCache();
+ }
+ return List.copyOf(mIdToAssociationMap.values());
+ }
+ }
- Slog.i(TAG, "Done removing association.");
+ /**
+ * Get a copy of active associations.
+ */
+ @NonNull
+ public List<AssociationInfo> getActiveAssociations() {
+ synchronized (mLock) {
+ return CollectionUtils.filter(getAssociations(), AssociationInfo::isActive);
}
+ }
- broadcastChange(CHANGE_TYPE_REMOVED, association);
+ /**
+ * Get a copy of all associations by user.
+ */
+ @NonNull
+ public List<AssociationInfo> getAssociationsByUser(@UserIdInt int userId) {
+ synchronized (mLock) {
+ return CollectionUtils.filter(getAssociations(), a -> a.getUserId() == userId);
+ }
}
/**
- * @return a "snapshot" of the current state of the existing associations.
+ * Get a copy of active associations by user.
*/
- public @NonNull Collection<AssociationInfo> getAssociations() {
+ @NonNull
+ public List<AssociationInfo> getActiveAssociationsByUser(@UserIdInt int userId) {
synchronized (mLock) {
- // IMPORTANT: make and return a COPY of the mIdMap.values(), NOT a "direct" reference.
- // The HashMap.values() returns a collection which is backed by the HashMap, so changes
- // to the HashMap are reflected in this collection.
- // For us this means that if mIdMap is modified while the iteration over mIdMap.values()
- // is in progress it may lead to "undefined results" (according to the HashMap's
- // documentation) or cause ConcurrentModificationExceptions in the iterator (according
- // to the bugreports...).
- return List.copyOf(mIdMap.values());
+ return CollectionUtils.filter(getActiveAssociations(), a -> a.getUserId() == userId);
}
}
/**
- * Get associations for the user.
+ * Get a copy of all associations by package.
*/
- public @NonNull List<AssociationInfo> getAssociationsForUser(@UserIdInt int userId) {
+ @NonNull
+ public List<AssociationInfo> getAssociationsByPackage(@UserIdInt int userId,
+ @NonNull String packageName) {
synchronized (mLock) {
- return getAssociationsForUserLocked(userId);
+ return CollectionUtils.filter(getAssociationsByUser(userId),
+ a -> a.getPackageName().equals(packageName));
}
}
/**
- * Get associations for the package
+ * Get a copy of active associations by package.
*/
- public @NonNull List<AssociationInfo> getAssociationsForPackage(
- @UserIdInt int userId, @NonNull String packageName) {
- final List<AssociationInfo> associationsForUser = getAssociationsForUser(userId);
- final List<AssociationInfo> associationsForPackage =
- CollectionUtils.filter(associationsForUser,
- it -> it.getPackageName().equals(packageName));
- return Collections.unmodifiableList(associationsForPackage);
+ @NonNull
+ public List<AssociationInfo> getActiveAssociationsByPackage(@UserIdInt int userId,
+ @NonNull String packageName) {
+ synchronized (mLock) {
+ return CollectionUtils.filter(getActiveAssociationsByUser(userId),
+ a -> a.getPackageName().equals(packageName));
+ }
}
/**
- * Get associations by mac address for the package.
+ * Get the first active association with the mac address.
*/
- public @Nullable AssociationInfo getAssociationsForPackageWithAddress(
+ @Nullable
+ public AssociationInfo getFirstAssociationByAddress(
@UserIdInt int userId, @NonNull String packageName, @NonNull String macAddress) {
- final List<AssociationInfo> associations = getAssociationsByAddress(macAddress);
- return CollectionUtils.find(associations,
- it -> it.belongsToPackage(userId, packageName));
+ synchronized (mLock) {
+ return CollectionUtils.find(getActiveAssociationsByPackage(userId, packageName),
+ a -> a.getDeviceMacAddress() != null && a.getDeviceMacAddress()
+ .equals(MacAddress.fromString(macAddress)));
+ }
}
/**
- * Get association by id.
+ * Get the association by id.
*/
- public @Nullable AssociationInfo getAssociationById(int id) {
+ @Nullable
+ public AssociationInfo getAssociationById(int id) {
synchronized (mLock) {
- return mIdMap.get(id);
+ return mIdToAssociationMap.get(id);
}
}
/**
- * Get associations by mac address.
+ * Get a copy of active associations by mac address.
*/
@NonNull
- public List<AssociationInfo> getAssociationsByAddress(@NonNull String macAddress) {
- final MacAddress address = MacAddress.fromString(macAddress);
-
+ public List<AssociationInfo> getActiveAssociationsByAddress(@NonNull String macAddress) {
synchronized (mLock) {
- final Set<Integer> ids = mAddressMap.get(address);
- if (ids == null) return Collections.emptyList();
+ return CollectionUtils.filter(getActiveAssociations(),
+ a -> a.getDeviceMacAddress() != null && a.getDeviceMacAddress()
+ .equals(MacAddress.fromString(macAddress)));
+ }
+ }
- final List<AssociationInfo> associations = new ArrayList<>(ids.size());
- for (Integer id : ids) {
- associations.add(mIdMap.get(id));
- }
+ /**
+ * Get a copy of revoked associations.
+ */
+ @NonNull
+ public List<AssociationInfo> getRevokedAssociations() {
+ synchronized (mLock) {
+ return CollectionUtils.filter(getAssociations(), AssociationInfo::isRevoked);
+ }
+ }
- return Collections.unmodifiableList(associations);
+ /**
+ * Get a copy of revoked associations for the package.
+ */
+ @NonNull
+ public List<AssociationInfo> getRevokedAssociations(@UserIdInt int userId,
+ @NonNull String packageName) {
+ synchronized (mLock) {
+ return CollectionUtils.filter(getAssociations(),
+ a -> packageName.equals(a.getPackageName()) && a.getUserId() == userId
+ && a.isRevoked());
}
}
- @GuardedBy("mLock")
+ /**
+ * Get a copy of active associations.
+ */
@NonNull
- private List<AssociationInfo> getAssociationsForUserLocked(@UserIdInt int userId) {
- final List<AssociationInfo> cached = mCachedPerUser.get(userId);
- if (cached != null) {
- return cached;
+ public List<AssociationInfo> getPendingAssociations(@UserIdInt int userId,
+ @NonNull String packageName) {
+ synchronized (mLock) {
+ return CollectionUtils.filter(getAssociations(),
+ a -> packageName.equals(a.getPackageName()) && a.getUserId() == userId
+ && a.isPending());
}
+ }
- final List<AssociationInfo> associationsForUser = new ArrayList<>();
- for (AssociationInfo association : mIdMap.values()) {
- if (association.getUserId() == userId) {
- associationsForUser.add(association);
- }
+ /**
+ * Register a local listener for association changes.
+ */
+ public void registerLocalListener(@NonNull OnChangeListener listener) {
+ synchronized (mLocalListeners) {
+ mLocalListeners.add(listener);
}
- final List<AssociationInfo> set = Collections.unmodifiableList(associationsForUser);
- mCachedPerUser.set(userId, set);
- return set;
}
- @GuardedBy("mLock")
- private void invalidateCacheForUserLocked(@UserIdInt int userId) {
- mCachedPerUser.delete(userId);
+ /**
+ * Unregister a local listener previously registered for association changes.
+ */
+ public void unregisterLocalListener(@NonNull OnChangeListener listener) {
+ synchronized (mLocalListeners) {
+ mLocalListeners.remove(listener);
+ }
}
/**
- * Register a listener for association changes.
+ * Register a remote listener for association changes.
*/
- public void registerListener(@NonNull OnChangeListener listener) {
- synchronized (mListeners) {
- mListeners.add(listener);
+ public void registerRemoteListener(@NonNull IOnAssociationsChangedListener listener,
+ int userId) {
+ synchronized (mRemoteListeners) {
+ mRemoteListeners.register(listener, userId);
}
}
/**
- * Unregister a listener previously registered for association changes.
+ * Unregister a remote listener previously registered for association changes.
*/
- public void unregisterListener(@NonNull OnChangeListener listener) {
- synchronized (mListeners) {
- mListeners.remove(listener);
+ public void unregisterRemoteListener(@NonNull IOnAssociationsChangedListener listener) {
+ synchronized (mRemoteListeners) {
+ mRemoteListeners.unregister(listener);
}
}
@@ -350,52 +490,41 @@ public class AssociationStore {
*/
public void dump(@NonNull PrintWriter out) {
out.append("Companion Device Associations: ");
- if (getAssociations().isEmpty()) {
+ if (getActiveAssociations().isEmpty()) {
out.append("<empty>\n");
} else {
out.append("\n");
- for (AssociationInfo a : getAssociations()) {
+ for (AssociationInfo a : getActiveAssociations()) {
out.append(" ").append(a.toString()).append('\n');
}
}
}
private void broadcastChange(@ChangeType int changeType, AssociationInfo association) {
- synchronized (mListeners) {
- for (OnChangeListener listener : mListeners) {
+ Slog.i(TAG, "Broadcasting association changes - changeType=[" + changeType + "]...");
+
+ synchronized (mLocalListeners) {
+ for (OnChangeListener listener : mLocalListeners) {
listener.onAssociationChanged(changeType, association);
}
}
- }
-
- /**
- * Set associations to cache. It will clear the existing cache.
- */
- public void setAssociationsToCache(Collection<AssociationInfo> associations) {
- // Validity check first.
- associations.forEach(AssociationStore::checkNotRevoked);
-
- synchronized (mLock) {
- mIdMap.clear();
- mAddressMap.clear();
- mCachedPerUser.clear();
-
- for (AssociationInfo association : associations) {
- final int id = association.getId();
- mIdMap.put(id, association);
-
- final MacAddress address = association.getDeviceMacAddress();
- if (address != null) {
- mAddressMap.computeIfAbsent(address, it -> new HashSet<>()).add(id);
- }
+ synchronized (mRemoteListeners) {
+ final int userId = association.getUserId();
+ final List<AssociationInfo> updatedAssociations = getActiveAssociationsByUser(userId);
+ // Notify listeners if ADDED, REMOVED or UPDATED_ADDRESS_CHANGED.
+ // Do NOT notify when UPDATED_ADDRESS_UNCHANGED, which means a minor tweak in
+ // association's configs, which "listeners" won't (and shouldn't) be able to see.
+ if (changeType != CHANGE_TYPE_UPDATED_ADDRESS_UNCHANGED) {
+ mRemoteListeners.broadcast((listener, callbackUserId) -> {
+ int listenerUserId = (int) callbackUserId;
+ if (listenerUserId == userId || listenerUserId == UserHandle.USER_ALL) {
+ try {
+ listener.onAssociationsChanged(updatedAssociations);
+ } catch (RemoteException ignored) {
+ }
+ }
+ });
}
}
}
-
- private static void checkNotRevoked(@NonNull AssociationInfo association) {
- if (association.isRevoked()) {
- throw new IllegalArgumentException(
- "Revoked (removed) associations MUST NOT appear in the AssociationStore");
- }
- }
}
diff --git a/services/companion/java/com/android/server/companion/association/Associations.java b/services/companion/java/com/android/server/companion/association/Associations.java
new file mode 100644
index 000000000000..7da3699dba8d
--- /dev/null
+++ b/services/companion/java/com/android/server/companion/association/Associations.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.companion.association;
+
+import android.companion.AssociationInfo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Represents associations per user. Should be only used by Association stores.
+ */
+public class Associations {
+
+ private int mVersion = 0;
+
+ private List<AssociationInfo> mAssociations = new ArrayList<>();
+
+ private int mMaxId = 0;
+
+ public Associations() {
+ }
+
+ public void setVersion(int version) {
+ mVersion = version;
+ }
+
+ /**
+ * Add an association.
+ */
+ public void addAssociation(AssociationInfo association) {
+ mAssociations.add(association);
+ }
+
+ public void setMaxId(int maxId) {
+ mMaxId = maxId;
+ }
+
+ public void setAssociations(List<AssociationInfo> associations) {
+ mAssociations = List.copyOf(associations);
+ }
+
+ public int getVersion() {
+ return mVersion;
+ }
+
+ public int getMaxId() {
+ return mMaxId;
+ }
+
+ public List<AssociationInfo> getAssociations() {
+ return mAssociations;
+ }
+}
diff --git a/services/companion/java/com/android/server/companion/association/DisassociationProcessor.java b/services/companion/java/com/android/server/companion/association/DisassociationProcessor.java
new file mode 100644
index 000000000000..ec8977918c56
--- /dev/null
+++ b/services/companion/java/com/android/server/companion/association/DisassociationProcessor.java
@@ -0,0 +1,218 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.companion.association;
+
+import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE;
+import static android.companion.AssociationRequest.DEVICE_PROFILE_AUTOMOTIVE_PROJECTION;
+
+import static com.android.internal.util.CollectionUtils.any;
+import static com.android.server.companion.utils.RolesUtils.removeRoleHolderForAssociation;
+
+import android.annotation.NonNull;
+import android.annotation.SuppressLint;
+import android.annotation.UserIdInt;
+import android.app.ActivityManager;
+import android.companion.AssociationInfo;
+import android.content.Context;
+import android.content.pm.PackageManagerInternal;
+import android.os.Binder;
+import android.os.UserHandle;
+import android.util.Slog;
+
+import com.android.server.companion.CompanionApplicationController;
+import com.android.server.companion.datatransfer.SystemDataTransferRequestStore;
+import com.android.server.companion.presence.CompanionDevicePresenceMonitor;
+import com.android.server.companion.transport.CompanionTransportManager;
+
+/**
+ * A class response for Association removal.
+ */
+@SuppressLint("LongLogTag")
+public class DisassociationProcessor {
+
+ private static final String TAG = "CDM_DisassociationProcessor";
+ @NonNull
+ private final Context mContext;
+ @NonNull
+ private final AssociationStore mAssociationStore;
+ @NonNull
+ private final PackageManagerInternal mPackageManagerInternal;
+ @NonNull
+ private final CompanionDevicePresenceMonitor mDevicePresenceMonitor;
+ @NonNull
+ private final SystemDataTransferRequestStore mSystemDataTransferRequestStore;
+ @NonNull
+ private final CompanionApplicationController mCompanionAppController;
+ @NonNull
+ private final CompanionTransportManager mTransportManager;
+ private final OnPackageVisibilityChangeListener mOnPackageVisibilityChangeListener;
+ private final ActivityManager mActivityManager;
+
+ public DisassociationProcessor(@NonNull Context context,
+ @NonNull ActivityManager activityManager,
+ @NonNull AssociationStore associationStore,
+ @NonNull PackageManagerInternal packageManager,
+ @NonNull CompanionDevicePresenceMonitor devicePresenceMonitor,
+ @NonNull CompanionApplicationController applicationController,
+ @NonNull SystemDataTransferRequestStore systemDataTransferRequestStore,
+ @NonNull CompanionTransportManager companionTransportManager) {
+ mContext = context;
+ mActivityManager = activityManager;
+ mAssociationStore = associationStore;
+ mPackageManagerInternal = packageManager;
+ mOnPackageVisibilityChangeListener =
+ new OnPackageVisibilityChangeListener();
+ mDevicePresenceMonitor = devicePresenceMonitor;
+ mCompanionAppController = applicationController;
+ mSystemDataTransferRequestStore = systemDataTransferRequestStore;
+ mTransportManager = companionTransportManager;
+ }
+
+ /**
+ * Disassociate an association by id.
+ */
+ // TODO: also revoke notification access
+ public void disassociate(int id) {
+ Slog.i(TAG, "Disassociating id=[" + id + "]...");
+
+ final AssociationInfo association = mAssociationStore.getAssociationById(id);
+ if (association == null) {
+ Slog.e(TAG, "Can't disassociate id=[" + id + "]. It doesn't exist.");
+ return;
+ }
+
+ final int userId = association.getUserId();
+ final String packageName = association.getPackageName();
+ final String deviceProfile = association.getDeviceProfile();
+
+ final boolean isRoleInUseByOtherAssociations = deviceProfile != null
+ && any(mAssociationStore.getActiveAssociationsByPackage(userId, packageName),
+ it -> deviceProfile.equals(it.getDeviceProfile()) && id != it.getId());
+
+ final int packageProcessImportance = getPackageProcessImportance(userId, packageName);
+ if (packageProcessImportance <= IMPORTANCE_VISIBLE && deviceProfile != null
+ && !isRoleInUseByOtherAssociations) {
+ // Need to remove the app from the list of role holders, but the process is visible
+ // to the user at the moment, so we'll need to do it later.
+ Slog.i(TAG, "Cannot disassociate id=[" + id + "] now - process is visible. "
+ + "Start listening to package importance...");
+
+ AssociationInfo revokedAssociation = (new AssociationInfo.Builder(
+ association)).setRevoked(true).build();
+ mAssociationStore.updateAssociation(revokedAssociation);
+ startListening();
+ return;
+ }
+
+ // Association cleanup.
+ mAssociationStore.removeAssociation(association.getId());
+ mSystemDataTransferRequestStore.removeRequestsByAssociationId(userId, id);
+
+ // Detach transport if exists
+ mTransportManager.detachSystemDataTransport(packageName, userId, id);
+
+ // If role is not in use by other associations, revoke the role.
+ // Do not need to remove the system role since it was pre-granted by the system.
+ if (!isRoleInUseByOtherAssociations && deviceProfile != null && !deviceProfile.equals(
+ DEVICE_PROFILE_AUTOMOTIVE_PROJECTION)) {
+ removeRoleHolderForAssociation(mContext, association.getUserId(),
+ association.getPackageName(), association.getDeviceProfile());
+ }
+
+ // Unbind the app if needed.
+ final boolean wasPresent = mDevicePresenceMonitor.isDevicePresent(id);
+ if (!wasPresent || !association.isNotifyOnDeviceNearby()) {
+ return;
+ }
+ final boolean shouldStayBound = any(
+ mAssociationStore.getActiveAssociationsByPackage(userId, packageName),
+ it -> it.isNotifyOnDeviceNearby()
+ && mDevicePresenceMonitor.isDevicePresent(it.getId()));
+ if (!shouldStayBound) {
+ mCompanionAppController.unbindCompanionApplication(userId, packageName);
+ }
+ }
+
+ @SuppressLint("MissingPermission")
+ private int getPackageProcessImportance(@UserIdInt int userId, @NonNull String packageName) {
+ return Binder.withCleanCallingIdentity(() -> {
+ final int uid =
+ mPackageManagerInternal.getPackageUid(packageName, /* flags */0, userId);
+ return mActivityManager.getUidImportance(uid);
+ });
+ }
+
+ private void startListening() {
+ Slog.i(TAG, "Start listening to uid importance changes...");
+ try {
+ Binder.withCleanCallingIdentity(
+ () -> mActivityManager.addOnUidImportanceListener(
+ mOnPackageVisibilityChangeListener,
+ ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE));
+ } catch (IllegalArgumentException e) {
+ Slog.e(TAG, "Failed to start listening to uid importance changes.");
+ }
+ }
+
+ private void stopListening() {
+ Slog.i(TAG, "Stop listening to uid importance changes.");
+ try {
+ Binder.withCleanCallingIdentity(() -> mActivityManager.removeOnUidImportanceListener(
+ mOnPackageVisibilityChangeListener));
+ } catch (IllegalArgumentException e) {
+ Slog.e(TAG, "Failed to stop listening to uid importance changes.");
+ }
+ }
+
+ /**
+ * An OnUidImportanceListener class which watches the importance of the packages.
+ * In this class, we ONLY interested in the importance of the running process is greater than
+ * {@link ActivityManager.RunningAppProcessInfo#IMPORTANCE_VISIBLE}.
+ *
+ * Lastly remove the role holder for the revoked associations for the same packages.
+ *
+ * @see #disassociate(int)
+ */
+ private class OnPackageVisibilityChangeListener implements
+ ActivityManager.OnUidImportanceListener {
+
+ @Override
+ public void onUidImportance(int uid, int importance) {
+ if (importance <= ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE) {
+ // The lower the importance value the more "important" the process is.
+ // We are only interested when the process ceases to be visible.
+ return;
+ }
+
+ final String packageName = mPackageManagerInternal.getNameForUid(uid);
+ if (packageName == null) {
+ // Not interested in this uid.
+ return;
+ }
+
+ int userId = UserHandle.getUserId(uid);
+ for (AssociationInfo association : mAssociationStore.getRevokedAssociations(userId,
+ packageName)) {
+ disassociate(association.getId());
+ }
+
+ if (mAssociationStore.getRevokedAssociations().isEmpty()) {
+ stopListening();
+ }
+ }
+ }
+}
diff --git a/services/companion/java/com/android/server/companion/association/InactiveAssociationsRemovalService.java b/services/companion/java/com/android/server/companion/association/InactiveAssociationsRemovalService.java
index 894c49a2b5cf..f28731548dcc 100644
--- a/services/companion/java/com/android/server/companion/association/InactiveAssociationsRemovalService.java
+++ b/services/companion/java/com/android/server/companion/association/InactiveAssociationsRemovalService.java
@@ -33,7 +33,7 @@ import com.android.server.companion.CompanionDeviceManagerServiceInternal;
* A Job Service responsible for clean up idle self-managed associations.
*
* The job will be executed only if the device is charging and in idle mode due to the application
- * will be killed if association/role are revoked. See {@link AssociationRevokeProcessor}
+ * will be killed if association/role are revoked. See {@link DisassociationProcessor}
*/
public class InactiveAssociationsRemovalService extends JobService {
diff --git a/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java b/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java
index a08e0da90d49..c5ca0bf7e9c5 100644
--- a/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java
+++ b/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java
@@ -186,18 +186,14 @@ public class SystemDataTransferProcessor {
intent.putExtras(extras);
// Create a PendingIntent
- final long token = Binder.clearCallingIdentity();
- try {
- return PendingIntent.getActivityAsUser(mContext, /*requestCode */ associationId, intent,
- FLAG_ONE_SHOT | FLAG_CANCEL_CURRENT | FLAG_IMMUTABLE,
- ActivityOptions.makeBasic()
- .setPendingIntentCreatorBackgroundActivityStartMode(
- ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED)
- .toBundle(),
- UserHandle.CURRENT);
- } finally {
- Binder.restoreCallingIdentity(token);
- }
+ return Binder.withCleanCallingIdentity(() ->
+ PendingIntent.getActivityAsUser(mContext, /*requestCode */ associationId,
+ intent, FLAG_ONE_SHOT | FLAG_CANCEL_CURRENT | FLAG_IMMUTABLE,
+ ActivityOptions.makeBasic()
+ .setPendingIntentCreatorBackgroundActivityStartMode(
+ ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED)
+ .toBundle(),
+ UserHandle.CURRENT));
}
/**
@@ -228,8 +224,7 @@ public class SystemDataTransferProcessor {
}
// Start permission sync
- final long callingIdentityToken = Binder.clearCallingIdentity();
- try {
+ Binder.withCleanCallingIdentity(() -> {
// TODO: refactor to work with streams of data
mPermissionControllerManager.getRuntimePermissionBackup(UserHandle.of(userId),
mExecutor, backup -> {
@@ -237,39 +232,31 @@ public class SystemDataTransferProcessor {
.requestPermissionRestore(associationId, backup);
translateFutureToCallback(future, callback);
});
- } finally {
- Binder.restoreCallingIdentity(callingIdentityToken);
- }
+ });
}
/**
* Enable perm sync for the association
*/
public void enablePermissionsSync(int associationId) {
- final long callingIdentityToken = Binder.clearCallingIdentity();
- try {
+ Binder.withCleanCallingIdentity(() -> {
int userId = mAssociationStore.getAssociationById(associationId).getUserId();
PermissionSyncRequest request = new PermissionSyncRequest(associationId);
request.setUserConsented(true);
mSystemDataTransferRequestStore.writeRequest(userId, request);
- } finally {
- Binder.restoreCallingIdentity(callingIdentityToken);
- }
+ });
}
/**
* Disable perm sync for the association
*/
public void disablePermissionsSync(int associationId) {
- final long callingIdentityToken = Binder.clearCallingIdentity();
- try {
+ Binder.withCleanCallingIdentity(() -> {
int userId = mAssociationStore.getAssociationById(associationId).getUserId();
PermissionSyncRequest request = new PermissionSyncRequest(associationId);
request.setUserConsented(false);
mSystemDataTransferRequestStore.writeRequest(userId, request);
- } finally {
- Binder.restoreCallingIdentity(callingIdentityToken);
- }
+ });
}
/**
@@ -277,8 +264,7 @@ public class SystemDataTransferProcessor {
*/
@Nullable
public PermissionSyncRequest getPermissionSyncRequest(int associationId) {
- final long callingIdentityToken = Binder.clearCallingIdentity();
- try {
+ return Binder.withCleanCallingIdentity(() -> {
int userId = mAssociationStore.getAssociationById(associationId).getUserId();
List<SystemDataTransferRequest> requests =
mSystemDataTransferRequestStore.readRequestsByAssociationId(userId,
@@ -289,22 +275,17 @@ public class SystemDataTransferProcessor {
}
}
return null;
- } finally {
- Binder.restoreCallingIdentity(callingIdentityToken);
- }
+ });
}
/**
* Remove perm sync request for the association.
*/
public void removePermissionSyncRequest(int associationId) {
- final long callingIdentityToken = Binder.clearCallingIdentity();
- try {
+ Binder.withCleanCallingIdentity(() -> {
int userId = mAssociationStore.getAssociationById(associationId).getUserId();
mSystemDataTransferRequestStore.removeRequestsByAssociationId(userId, associationId);
- } finally {
- Binder.restoreCallingIdentity(callingIdentityToken);
- }
+ });
}
private void onReceivePermissionRestore(byte[] message) {
@@ -318,14 +299,12 @@ public class SystemDataTransferProcessor {
Slog.i(LOG_TAG, "Applying permissions.");
// Start applying permissions
UserHandle user = mContext.getUser();
- final long callingIdentityToken = Binder.clearCallingIdentity();
- try {
+
+ Binder.withCleanCallingIdentity(() -> {
// TODO: refactor to work with streams of data
mPermissionControllerManager.stageAndApplyRuntimePermissionsBackup(
message, user);
- } finally {
- Binder.restoreCallingIdentity(callingIdentityToken);
- }
+ });
}
private static void translateFutureToCallback(@NonNull Future<?> future,
diff --git a/services/companion/java/com/android/server/companion/presence/BleCompanionDeviceScanner.java b/services/companion/java/com/android/server/companion/presence/BleCompanionDeviceScanner.java
index 99466a966647..c89ce11c169d 100644
--- a/services/companion/java/com/android/server/companion/presence/BleCompanionDeviceScanner.java
+++ b/services/companion/java/com/android/server/companion/presence/BleCompanionDeviceScanner.java
@@ -106,7 +106,7 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener {
checkBleState();
registerBluetoothStateBroadcastReceiver(context);
- mAssociationStore.registerListener(this);
+ mAssociationStore.registerLocalListener(this);
}
@MainThread
@@ -183,7 +183,7 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener {
// Collect MAC addresses from all associations.
final Set<String> macAddresses = new HashSet<>();
- for (AssociationInfo association : mAssociationStore.getAssociations()) {
+ for (AssociationInfo association : mAssociationStore.getActiveAssociations()) {
if (!association.isNotifyOnDeviceNearby()) continue;
// Beware that BT stack does not consider low-case MAC addresses valid, while
@@ -255,7 +255,7 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener {
if (DEBUG) Log.i(TAG, "notifyDevice_Found()" + btDeviceToString(device));
final List<AssociationInfo> associations =
- mAssociationStore.getAssociationsByAddress(device.getAddress());
+ mAssociationStore.getActiveAssociationsByAddress(device.getAddress());
if (DEBUG) Log.d(TAG, " > associations=" + Arrays.toString(associations.toArray()));
for (AssociationInfo association : associations) {
@@ -268,7 +268,7 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener {
if (DEBUG) Log.i(TAG, "notifyDevice_Lost()" + btDeviceToString(device));
final List<AssociationInfo> associations =
- mAssociationStore.getAssociationsByAddress(device.getAddress());
+ mAssociationStore.getActiveAssociationsByAddress(device.getAddress());
if (DEBUG) Log.d(TAG, " > associations=" + Arrays.toString(associations.toArray()));
for (AssociationInfo association : associations) {
@@ -319,7 +319,7 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener {
Log.v(TAG, " > scanResult=" + result);
final List<AssociationInfo> associations =
- mAssociationStore.getAssociationsByAddress(device.getAddress());
+ mAssociationStore.getActiveAssociationsByAddress(device.getAddress());
Log.v(TAG, " > associations=" + Arrays.toString(associations.toArray()));
}
diff --git a/services/companion/java/com/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener.java b/services/companion/java/com/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener.java
index 4da3f9bead4e..cb363a7c9d7f 100644
--- a/services/companion/java/com/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener.java
+++ b/services/companion/java/com/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener.java
@@ -93,7 +93,7 @@ public class BluetoothCompanionDeviceConnectionListener
btAdapter.registerBluetoothConnectionCallback(
new HandlerExecutor(Handler.getMain()), /* callback */this);
- mAssociationStore.registerListener(this);
+ mAssociationStore.registerLocalListener(this);
}
/**
@@ -168,7 +168,7 @@ public class BluetoothCompanionDeviceConnectionListener
private void onDeviceConnectivityChanged(@NonNull BluetoothDevice device, boolean connected) {
int userId = UserHandle.myUserId();
final List<AssociationInfo> associations =
- mAssociationStore.getAssociationsByAddress(device.getAddress());
+ mAssociationStore.getActiveAssociationsByAddress(device.getAddress());
final List<ObservableUuid> observableUuids =
mObservableUuidStore.getObservableUuidsForUser(userId);
final ParcelUuid[] bluetoothDeviceUuids = device.getUuids();
diff --git a/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java b/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java
index 37bbb937d1b5..7a1a83f53315 100644
--- a/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java
+++ b/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java
@@ -145,7 +145,7 @@ public class CompanionDevicePresenceMonitor implements AssociationStore.OnChange
Log.w(TAG, "BluetoothAdapter is NOT available.");
}
- mAssociationStore.registerListener(this);
+ mAssociationStore.registerLocalListener(this);
}
/**
@@ -481,7 +481,7 @@ public class CompanionDevicePresenceMonitor implements AssociationStore.OnChange
* BT connected and BLE presence and are not pending to report BLE lost.
*/
private boolean canStopBleScan() {
- for (AssociationInfo ai : mAssociationStore.getAssociations()) {
+ for (AssociationInfo ai : mAssociationStore.getActiveAssociations()) {
int id = ai.getId();
synchronized (mBtDisconnectedDevices) {
if (ai.isNotifyOnDeviceNearby() && !(isBtConnected(id)
diff --git a/services/companion/java/com/android/server/companion/presence/ObservableUuidStore.java b/services/companion/java/com/android/server/companion/presence/ObservableUuidStore.java
index ee8b1065b42c..db15da2922cf 100644
--- a/services/companion/java/com/android/server/companion/presence/ObservableUuidStore.java
+++ b/services/companion/java/com/android/server/companion/presence/ObservableUuidStore.java
@@ -90,6 +90,8 @@ public class ObservableUuidStore {
* Remove the observable uuid.
*/
public void removeObservableUuid(@UserIdInt int userId, ParcelUuid uuid, String packageName) {
+ Slog.i(TAG, "Removing uuid=[" + uuid.getUuid() + "] from store...");
+
List<ObservableUuid> cachedObservableUuids;
synchronized (mLock) {
@@ -108,7 +110,7 @@ public class ObservableUuidStore {
* Write the observable uuid.
*/
public void writeObservableUuid(@UserIdInt int userId, ObservableUuid uuid) {
- Slog.i(TAG, "Writing uuid=" + uuid.getUuid() + " to store.");
+ Slog.i(TAG, "Writing uuid=[" + uuid.getUuid() + "] to store...");
List<ObservableUuid> cachedObservableUuids;
synchronized (mLock) {
diff --git a/services/companion/java/com/android/server/companion/utils/DataStoreUtils.java b/services/companion/java/com/android/server/companion/utils/DataStoreUtils.java
index c75b1a57206e..369a92504948 100644
--- a/services/companion/java/com/android/server/companion/utils/DataStoreUtils.java
+++ b/services/companion/java/com/android/server/companion/utils/DataStoreUtils.java
@@ -64,8 +64,8 @@ public final class DataStoreUtils {
* IMPORTANT: the method will ALWAYS return the same {@link AtomicFile} object, which makes it
* possible to synchronize reads and writes to the file using the returned object.
*
- * @param userId the userId to retrieve the storage file
- * @param fileName the storage file name
+ * @param userId the userId to retrieve the storage file
+ * @param fileName the storage file name
* @return an AtomicFile for the user
*/
@NonNull
diff --git a/services/companion/java/com/android/server/companion/utils/PackageUtils.java b/services/companion/java/com/android/server/companion/utils/PackageUtils.java
index d38590e0a251..81dc36ddcff1 100644
--- a/services/companion/java/com/android/server/companion/utils/PackageUtils.java
+++ b/services/companion/java/com/android/server/companion/utils/PackageUtils.java
@@ -26,6 +26,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.AppOpsManager;
+import android.app.ecm.EnhancedConfirmationManager;
import android.companion.CompanionDeviceService;
import android.content.ComponentName;
import android.content.Context;
@@ -41,6 +42,7 @@ import android.content.pm.ServiceInfo;
import android.content.pm.Signature;
import android.os.Binder;
import android.os.Process;
+import android.permission.flags.Flags;
import android.util.Slog;
import com.android.internal.util.ArrayUtils;
@@ -227,9 +229,19 @@ public final class PackageUtils {
*/
public static boolean isRestrictedSettingsAllowed(
Context context, String packageName, int uid) {
- final int mode = context.getSystemService(AppOpsManager.class).noteOpNoThrow(
- AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS, uid,
- packageName, /* attributionTag= */ null, /* message= */ null);
- return mode == AppOpsManager.MODE_ALLOWED;
+ if (Flags.enhancedConfirmationModeApisEnabled()) {
+ EnhancedConfirmationManager ecm = context.getSystemService(
+ EnhancedConfirmationManager.class);
+ try {
+ return !ecm.isRestricted(packageName, AppOpsManager.OPSTR_ACCESS_NOTIFICATIONS);
+ } catch (PackageManager.NameNotFoundException e) {
+ return true;
+ }
+ } else {
+ final int mode = context.getSystemService(AppOpsManager.class).noteOpNoThrow(
+ AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS, uid,
+ packageName, /* attributionTag= */ null, /* message= */ null);
+ return mode == AppOpsManager.MODE_ALLOWED;
+ }
}
}
diff --git a/services/companion/java/com/android/server/companion/utils/RolesUtils.java b/services/companion/java/com/android/server/companion/utils/RolesUtils.java
index f798e218e8e0..dd12e0406089 100644
--- a/services/companion/java/com/android/server/companion/utils/RolesUtils.java
+++ b/services/companion/java/com/android/server/companion/utils/RolesUtils.java
@@ -93,8 +93,8 @@ public final class RolesUtils {
Slog.i(TAG, "Removing CDM role=" + deviceProfile
+ " for userId=" + userId + ", packageName=" + packageName);
- final long identity = Binder.clearCallingIdentity();
- try {
+
+ Binder.withCleanCallingIdentity(() ->
roleManager.removeRoleHolderAsUser(deviceProfile, packageName,
MANAGE_HOLDERS_FLAG_DONT_KILL_APP, userHandle, context.getMainExecutor(),
success -> {
@@ -103,11 +103,9 @@ public final class RolesUtils {
+ packageName + " from the list of " + deviceProfile
+ " holders.");
}
- });
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
+ })
+ );
}
- private RolesUtils() {};
+ private RolesUtils() {}
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 447dfd95e034..f1195f3fe350 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -1192,14 +1192,17 @@ public class ActivityManagerService extends IActivityManager.Stub
public int originalCallingUid;
/** The snapshot process state of the app who sent this broadcast */
public int originalCallingAppProcessState;
+ public String resolvedDataType;
public static StickyBroadcast create(Intent intent, boolean deferUntilActive,
- int originalCallingUid, int originalCallingAppProcessState) {
+ int originalCallingUid, int originalCallingAppProcessState,
+ String resolvedDataType) {
final StickyBroadcast b = new StickyBroadcast();
b.intent = intent;
b.deferUntilActive = deferUntilActive;
b.originalCallingUid = originalCallingUid;
b.originalCallingAppProcessState = originalCallingAppProcessState;
+ b.resolvedDataType = resolvedDataType;
return b;
}
@@ -1207,7 +1210,7 @@ public class ActivityManagerService extends IActivityManager.Stub
public String toString() {
return "{intent=" + intent + ", defer=" + deferUntilActive + ", originalCallingUid="
+ originalCallingUid + ", originalCallingAppProcessState="
- + originalCallingAppProcessState + "}";
+ + originalCallingAppProcessState + ", type=" + resolvedDataType + "}";
}
}
@@ -14528,7 +14531,16 @@ public class ActivityManagerService extends IActivityManager.Stub
// provider that needs to lock mProviderMap in ActivityThread
// and also it may need to wait application response, so we
// cannot lock ActivityManagerService here.
- if (filter.match(resolver, intent, true, TAG) >= 0) {
+ final int match;
+ if (Flags.avoidResolvingType()) {
+ match = filter.match(intent.getAction(), broadcast.resolvedDataType,
+ intent.getScheme(), intent.getData(), intent.getCategories(),
+ TAG, false /* supportsWildcards */, null /* ignoreActions */,
+ intent.getExtras());
+ } else {
+ match = filter.match(resolver, intent, true, TAG);
+ }
+ if (match >= 0) {
if (allSticky == null) {
allSticky = new ArrayList<>();
}
@@ -15542,13 +15554,13 @@ public class ActivityManagerService extends IActivityManager.Stub
if (intent.filterEquals(list.get(i).intent)) {
// This sticky already exists, replace it.
list.set(i, StickyBroadcast.create(new Intent(intent), deferUntilActive,
- callingUid, callerAppProcessState));
+ callingUid, callerAppProcessState, resolvedType));
break;
}
}
if (i >= stickiesCount) {
list.add(StickyBroadcast.create(new Intent(intent), deferUntilActive,
- callingUid, callerAppProcessState));
+ callingUid, callerAppProcessState, resolvedType));
}
}
}
@@ -20303,12 +20315,6 @@ public class ActivityManagerService extends IActivityManager.Stub
Settings.Global.BROADCAST_BG_CONSTANTS);
backConstants.TIMEOUT = BROADCAST_BG_TIMEOUT;
- final BroadcastConstants offloadConstants = new BroadcastConstants(
- Settings.Global.BROADCAST_OFFLOAD_CONSTANTS);
- offloadConstants.TIMEOUT = BROADCAST_BG_TIMEOUT;
- // by default, no "slow" policy in this queue
- offloadConstants.SLOW_TIME = Integer.MAX_VALUE;
-
return new BroadcastQueueModernImpl(service, service.mHandler,
foreConstants, backConstants);
}
diff --git a/services/core/java/com/android/server/am/BroadcastConstants.java b/services/core/java/com/android/server/am/BroadcastConstants.java
index 57080f8b2d42..91cfb8fe45eb 100644
--- a/services/core/java/com/android/server/am/BroadcastConstants.java
+++ b/services/core/java/com/android/server/am/BroadcastConstants.java
@@ -53,19 +53,11 @@ public class BroadcastConstants {
// Value element names within the Settings record
static final String KEY_TIMEOUT = "bcast_timeout";
- static final String KEY_SLOW_TIME = "bcast_slow_time";
- static final String KEY_DEFERRAL = "bcast_deferral";
- static final String KEY_DEFERRAL_DECAY_FACTOR = "bcast_deferral_decay_factor";
- static final String KEY_DEFERRAL_FLOOR = "bcast_deferral_floor";
static final String KEY_ALLOW_BG_ACTIVITY_START_TIMEOUT =
"bcast_allow_bg_activity_start_timeout";
// All time intervals are in milliseconds
private static final long DEFAULT_TIMEOUT = 10_000 * Build.HW_TIMEOUT_MULTIPLIER;
- private static final long DEFAULT_SLOW_TIME = 5_000 * Build.HW_TIMEOUT_MULTIPLIER;
- private static final long DEFAULT_DEFERRAL = 5_000 * Build.HW_TIMEOUT_MULTIPLIER;
- private static final float DEFAULT_DEFERRAL_DECAY_FACTOR = 0.75f;
- private static final long DEFAULT_DEFERRAL_FLOOR = 0;
private static final long DEFAULT_ALLOW_BG_ACTIVITY_START_TIMEOUT =
10_000 * Build.HW_TIMEOUT_MULTIPLIER;
@@ -114,15 +106,6 @@ public class BroadcastConstants {
// Timeout period for this broadcast queue
public long TIMEOUT = DEFAULT_TIMEOUT;
- // Handling time above which we declare that a broadcast recipient was "slow". Any
- // value <= zero is interpreted as disabling broadcast deferral policy entirely.
- public long SLOW_TIME = DEFAULT_SLOW_TIME;
- // How long to initially defer broadcasts, if an app is slow to handle one
- public long DEFERRAL = DEFAULT_DEFERRAL;
- // Decay factor for successive broadcasts' deferral time
- public float DEFERRAL_DECAY_FACTOR = DEFAULT_DEFERRAL_DECAY_FACTOR;
- // Minimum that the deferral time can decay to until the backlog fully clears
- public long DEFERRAL_FLOOR = DEFAULT_DEFERRAL_FLOOR;
// For a receiver that has been allowed to start background activities, how long after it
// started its process can start a background activity.
public long ALLOW_BG_ACTIVITY_START_TIMEOUT = DEFAULT_ALLOW_BG_ACTIVITY_START_TIMEOUT;
@@ -278,7 +261,7 @@ public class BroadcastConstants {
/**
* For {@link BroadcastRecord}: Default to treating all broadcasts sent by
- * the system as be {@link BroadcastOptions#DEFERRAL_POLICY_UNTIL_ACTIVE}.
+ * the system as be {@link android.app.BroadcastOptions#DEFERRAL_POLICY_UNTIL_ACTIVE}.
*/
public boolean CORE_DEFER_UNTIL_ACTIVE = DEFAULT_CORE_DEFER_UNTIL_ACTIVE;
private static final String KEY_CORE_DEFER_UNTIL_ACTIVE = "bcast_core_defer_until_active";
@@ -361,18 +344,13 @@ public class BroadcastConstants {
// Unspecified fields retain their current value rather than revert to default
TIMEOUT = mParser.getLong(KEY_TIMEOUT, TIMEOUT);
- SLOW_TIME = mParser.getLong(KEY_SLOW_TIME, SLOW_TIME);
- DEFERRAL = mParser.getLong(KEY_DEFERRAL, DEFERRAL);
- DEFERRAL_DECAY_FACTOR = mParser.getFloat(KEY_DEFERRAL_DECAY_FACTOR,
- DEFERRAL_DECAY_FACTOR);
- DEFERRAL_FLOOR = mParser.getLong(KEY_DEFERRAL_FLOOR, DEFERRAL_FLOOR);
ALLOW_BG_ACTIVITY_START_TIMEOUT = mParser.getLong(KEY_ALLOW_BG_ACTIVITY_START_TIMEOUT,
ALLOW_BG_ACTIVITY_START_TIMEOUT);
}
}
/**
- * Return the {@link SystemProperty} name for the given key in our
+ * Return the {@link SystemProperties} name for the given key in our
* {@link DeviceConfig} namespace.
*/
private static @NonNull String propertyFor(@NonNull String key) {
@@ -380,7 +358,7 @@ public class BroadcastConstants {
}
/**
- * Return the {@link SystemProperty} name for the given key in our
+ * Return the {@link SystemProperties} name for the given key in our
* {@link DeviceConfig} namespace, but with a different prefix that can be
* used to locally override the {@link DeviceConfig} value.
*/
@@ -475,10 +453,6 @@ public class BroadcastConstants {
pw.println("):");
pw.increaseIndent();
pw.print(KEY_TIMEOUT, TimeUtils.formatDuration(TIMEOUT)).println();
- pw.print(KEY_SLOW_TIME, TimeUtils.formatDuration(SLOW_TIME)).println();
- pw.print(KEY_DEFERRAL, TimeUtils.formatDuration(DEFERRAL)).println();
- pw.print(KEY_DEFERRAL_DECAY_FACTOR, DEFERRAL_DECAY_FACTOR).println();
- pw.print(KEY_DEFERRAL_FLOOR, DEFERRAL_FLOOR).println();
pw.print(KEY_ALLOW_BG_ACTIVITY_START_TIMEOUT,
TimeUtils.formatDuration(ALLOW_BG_ACTIVITY_START_TIMEOUT)).println();
pw.decreaseIndent();
diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java
index c1f1dfd4fe75..6386af673e8b 100644
--- a/services/core/java/com/android/server/am/BroadcastQueue.java
+++ b/services/core/java/com/android/server/am/BroadcastQueue.java
@@ -75,12 +75,6 @@ public abstract class BroadcastQueue {
}
}
- static void checkStateWtf(boolean expression, @NonNull String msg) {
- if (!expression) {
- Slog.wtf(TAG, new IllegalStateException(msg));
- }
- }
-
static int traceBegin(@NonNull String methodName) {
final int cookie = methodName.hashCode();
Trace.asyncTraceForTrackBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER,
@@ -100,8 +94,6 @@ public abstract class BroadcastQueue {
public abstract void start(@NonNull ContentResolver resolver);
- public abstract boolean isDelayBehindServices();
-
/**
* Return the preferred scheduling group for the given process, typically
* influenced by a broadcast being actively dispatched.
diff --git a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
index 5521381e8908..a6f6b3422066 100644
--- a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
+++ b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
@@ -286,9 +286,6 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
// when the flag is fused on.
private static final int MSG_DELIVERY_TIMEOUT_SOFT = 8;
- // TODO: Use the trunk stable flag.
- private static final boolean DEFER_FROZEN_OUTGOING_BCASTS = false;
-
private void enqueueUpdateRunningList() {
mLocalHandler.removeMessages(MSG_UPDATE_RUNNING_LIST);
mLocalHandler.sendEmptyMessage(MSG_UPDATE_RUNNING_LIST);
@@ -361,6 +358,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
* Return the total number of active queues contained inside
* {@link #mRunning}.
*/
+ @GuardedBy("mService")
private int getRunningSize() {
int size = 0;
for (int i = 0; i < mRunning.length; i++) {
@@ -372,6 +370,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
/**
* Return the number of active queues that are delivering "urgent" broadcasts
*/
+ @GuardedBy("mService")
private int getRunningUrgentCount() {
int count = 0;
for (int i = 0; i < mRunning.length; i++) {
@@ -386,6 +385,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
* Return the first index of the given value contained inside
* {@link #mRunning}, otherwise {@code -1}.
*/
+ @GuardedBy("mService")
private int getRunningIndexOf(@Nullable BroadcastProcessQueue test) {
for (int i = 0; i < mRunning.length; i++) {
if (mRunning[i] == test) return i;
@@ -585,6 +585,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
traceEnd(cookie);
}
+ @GuardedBy("mService")
private boolean isPendingColdStartValid() {
if (mRunningColdStart.app.getPid() > 0) {
// If the process has already started, check if it wasn't killed.
@@ -595,6 +596,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
}
}
+ @GuardedBy("mService")
private void clearInvalidPendingColdStart() {
logw("Clearing invalid pending cold start: " + mRunningColdStart);
if (mRunningColdStart.wasActiveBroadcastReEnqueued()) {
@@ -629,6 +631,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
}
}
+ @GuardedBy("mService")
private void finishOrReEnqueueActiveBroadcast(@NonNull BroadcastProcessQueue queue) {
checkState(queue.isActive(), "isActive");
@@ -646,6 +649,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
}
}
+ @GuardedBy("mService")
@Override
public boolean onApplicationAttachedLocked(@NonNull ProcessRecord app)
throws BroadcastRetryException {
@@ -689,16 +693,19 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
return didSomething;
}
+ @GuardedBy("mService")
@Override
public void onApplicationTimeoutLocked(@NonNull ProcessRecord app) {
onApplicationCleanupLocked(app);
}
+ @GuardedBy("mService")
@Override
public void onApplicationProblemLocked(@NonNull ProcessRecord app) {
onApplicationCleanupLocked(app);
}
+ @GuardedBy("mService")
@Override
public void onApplicationCleanupLocked(@NonNull ProcessRecord app) {
if (DEBUG_BROADCAST) {
@@ -735,6 +742,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
}
}
+ @GuardedBy("mService")
private void clearRunningColdStart() {
mRunningColdStart.traceProcessEnd();
@@ -746,12 +754,14 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
enqueueUpdateRunningList();
}
+ @GuardedBy("mService")
@Override
public void onProcessFreezableChangedLocked(@NonNull ProcessRecord app) {
mLocalHandler.removeMessages(MSG_PROCESS_FREEZABLE_CHANGED, app);
mLocalHandler.obtainMessage(MSG_PROCESS_FREEZABLE_CHANGED, app).sendToTarget();
}
+ @GuardedBy("mService")
@Override
public int getPreferredSchedulingGroupLocked(@NonNull ProcessRecord app) {
final BroadcastProcessQueue queue = getProcessQueue(app);
@@ -761,12 +771,13 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
return ProcessList.SCHED_GROUP_UNDEFINED;
}
+ @GuardedBy("mService")
@Override
public void enqueueBroadcastLocked(@NonNull BroadcastRecord r) {
// TODO: Apply delivery group policies and FLAG_REPLACE_PENDING to collapse the
// outgoing broadcasts.
// TODO: Add traces/logs for the enqueueing outgoing broadcasts logic.
- if (DEFER_FROZEN_OUTGOING_BCASTS && isProcessFreezable(r.callerApp)) {
+ if (Flags.deferOutgoingBroadcasts() && isProcessFreezable(r.callerApp)) {
final BroadcastProcessQueue queue = getOrCreateProcessQueue(
r.callerApp.processName, r.callerApp.uid);
if (queue.getOutgoingBroadcastCount() >= mConstants.MAX_FROZEN_OUTGOING_BROADCASTS) {
@@ -846,6 +857,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
traceEnd(cookie);
}
+ @GuardedBy("mService")
private void skipAndCancelReplacedBroadcasts(ArraySet<BroadcastRecord> replacedBroadcasts) {
for (int i = 0; i < replacedBroadcasts.size(); ++i) {
final BroadcastRecord r = replacedBroadcasts.valueAt(i);
@@ -858,6 +870,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
}
}
+ @GuardedBy("mService")
private void applyDeliveryGroupPolicy(@NonNull BroadcastRecord r) {
if (mService.shouldIgnoreDeliveryGroupPolicy(r.intent.getAction())) {
return;
@@ -921,6 +934,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
mRecordsLookupCache.compareAndSet(null, recordsLookupCache);
}
+ @GuardedBy("mService")
@NonNull
private ArrayMap<BroadcastRecord, Boolean> getRecordsLookupCache() {
ArrayMap<BroadcastRecord, Boolean> recordsLookupCache =
@@ -931,6 +945,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
return recordsLookupCache;
}
+ @GuardedBy("mService")
private boolean containsAllReceivers(@NonNull BroadcastRecord record,
@NonNull BroadcastRecord testRecord,
@NonNull ArrayMap<BroadcastRecord, Boolean> recordsLookupCache) {
@@ -1064,6 +1079,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
* Consults {@link BroadcastSkipPolicy} and the receiver process state to decide whether or
* not the broadcast to a receiver can be skipped.
*/
+ @GuardedBy("mService")
private String shouldSkipReceiver(@NonNull BroadcastProcessQueue queue,
@NonNull BroadcastRecord r, int index) {
final int oldDeliveryState = getDeliveryState(r, index);
@@ -1104,6 +1120,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
* finishReceiver() to be called before moving to the next broadcast. Otherwise,
* {@code false}.
*/
+ @GuardedBy("mService")
@CheckResult
private boolean dispatchReceivers(@NonNull BroadcastProcessQueue queue,
@NonNull BroadcastRecord r, int index) throws BroadcastRetryException {
@@ -1215,6 +1232,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
* Schedule the final {@link BroadcastRecord#resultTo} delivery for an
* ordered broadcast; assumes the sender is still a warm process.
*/
+ @GuardedBy("mService")
private void scheduleResultTo(@NonNull BroadcastRecord r) {
if (r.resultTo == null) return;
final ProcessRecord app = r.resultToApp;
@@ -1248,6 +1266,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
// Required when Flags.anrTimerServiceEnabled is false. This function can be replaced with a
// single call to {@code mAnrTimer.start()} if and when the flag is fused on.
+ @GuardedBy("mService")
private void startDeliveryTimeoutLocked(@NonNull BroadcastProcessQueue queue,
int softTimeoutMillis) {
if (mAnrTimer.serviceEnabled()) {
@@ -1261,6 +1280,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
// Required when Flags.anrTimerServiceEnabled is false. This function can be replaced with a
// single call to {@code mAnrTimer.cancel()} if and when the flag is fused on.
+ @GuardedBy("mService")
private void cancelDeliveryTimeoutLocked(@NonNull BroadcastProcessQueue queue) {
mAnrTimer.cancel(queue);
if (!mAnrTimer.serviceEnabled()) {
@@ -1270,6 +1290,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
// Required when Flags.anrTimerServiceEnabled is false. This function can be deleted entirely
// if and when the flag is fused on.
+ @GuardedBy("mService")
private void deliveryTimeoutSoftLocked(@NonNull BroadcastProcessQueue queue,
int softTimeoutMillis) {
if (queue.app != null) {
@@ -1292,6 +1313,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
traceEnd(cookie);
}
+ @GuardedBy("mService")
private void deliveryTimeoutLocked(@NonNull BroadcastProcessQueue queue) {
finishReceiverActiveLocked(queue, BroadcastRecord.DELIVERY_TIMEOUT,
"deliveryTimeoutLocked");
@@ -1309,6 +1331,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
}
}
+ @GuardedBy("mService")
@Override
public boolean finishReceiverLocked(@NonNull ProcessRecord app, int resultCode,
@Nullable String resultData, @Nullable Bundle resultExtras, boolean resultAbort,
@@ -1369,6 +1392,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
/**
* Return true if there are no more broadcasts in the queue or if the queue is not runnable.
*/
+ @GuardedBy("mService")
private boolean shouldRetire(@NonNull BroadcastProcessQueue queue) {
// If we've made reasonable progress, periodically retire ourselves to
// avoid starvation of other processes and stack overflow when a
@@ -1392,6 +1416,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
/**
* Terminate all active broadcasts on the queue.
*/
+ @GuardedBy("mService")
private void finishReceiverActiveLocked(@NonNull BroadcastProcessQueue queue,
@DeliveryState int deliveryState, @NonNull String reason) {
if (!queue.isActive()) {
@@ -1493,6 +1518,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
* Set the delivery state on the given broadcast, then apply any additional
* bookkeeping related to ordered broadcasts.
*/
+ @GuardedBy("mService")
private void setDeliveryState(@Nullable BroadcastProcessQueue queue,
@Nullable ProcessRecord app, @NonNull BroadcastRecord r, int index,
@NonNull Object receiver, @DeliveryState int newDeliveryState,
@@ -1558,10 +1584,12 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
traceEnd(cookie);
}
+ @GuardedBy("mService")
private @DeliveryState int getDeliveryState(@NonNull BroadcastRecord r, int index) {
return r.getDeliveryState(index);
}
+ @GuardedBy("mService")
@Override
public boolean cleanupDisabledPackageReceiversLocked(@Nullable String packageName,
@Nullable Set<String> filterByClasses, int userId) {
@@ -1627,6 +1655,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
* Typical consumer that will skip the given broadcast, usually as a result
* of it matching a predicate.
*/
+ @GuardedBy("mService")
private final BroadcastConsumer mBroadcastConsumerSkip = (r, i) -> {
setDeliveryState(null, null, r, i, r.receivers.get(i), BroadcastRecord.DELIVERY_SKIPPED,
"mBroadcastConsumerSkip");
@@ -1636,6 +1665,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
* Typical consumer that will both skip the given broadcast and mark it as
* cancelled, usually as a result of it matching a predicate.
*/
+ @GuardedBy("mService")
private final BroadcastConsumer mBroadcastConsumerSkipAndCanceled = (r, i) -> {
setDeliveryState(null, null, r, i, r.receivers.get(i), BroadcastRecord.DELIVERY_SKIPPED,
"mBroadcastConsumerSkipAndCanceled");
@@ -1645,23 +1675,27 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
};
@VisibleForTesting
+ @GuardedBy("mService")
final BroadcastConsumer mBroadcastConsumerDeferApply = (r, i) -> {
setDeliveryState(null, null, r, i, r.receivers.get(i), BroadcastRecord.DELIVERY_DEFERRED,
"mBroadcastConsumerDeferApply");
};
@VisibleForTesting
+ @GuardedBy("mService")
final BroadcastConsumer mBroadcastConsumerDeferClear = (r, i) -> {
setDeliveryState(null, null, r, i, r.receivers.get(i), BroadcastRecord.DELIVERY_PENDING,
"mBroadcastConsumerDeferClear");
};
+ @GuardedBy("mService")
final BroadcastRecordConsumer mBroadcastRecordConsumerEnqueue = this::enqueueBroadcastLocked;
/**
* Verify that all known {@link #mProcessQueues} are in the state tested by
* the given {@link Predicate}.
*/
+ @GuardedBy("mService")
private boolean testAllProcessQueues(@NonNull Predicate<BroadcastProcessQueue> test,
@NonNull String label, @NonNull PrintWriter pw) {
for (int i = 0; i < mProcessQueues.size(); i++) {
@@ -1685,6 +1719,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
return true;
}
+ @GuardedBy("mService")
private boolean forEachMatchingBroadcast(
@NonNull Predicate<BroadcastProcessQueue> queuePredicate,
@NonNull BroadcastPredicate broadcastPredicate,
@@ -1709,6 +1744,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
return didSomething;
}
+ @GuardedBy("mService")
private boolean forEachMatchingQueue(
@NonNull Predicate<BroadcastProcessQueue> queuePredicate,
@NonNull Consumer<BroadcastProcessQueue> queueConsumer) {
@@ -1730,6 +1766,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
return didSomething;
}
+ @GuardedBy("mService")
@Override
public void start(@NonNull ContentResolver resolver) {
mFgConstants.startObserving(mHandler, resolver);
@@ -1750,35 +1787,42 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
mLocalHandler.sendEmptyMessage(MSG_CHECK_HEALTH);
}
+ @GuardedBy("mService")
@Override
public boolean isIdleLocked() {
return isIdleLocked(LOG_WRITER_INFO);
}
+ @GuardedBy("mService")
public boolean isIdleLocked(@NonNull PrintWriter pw) {
return testAllProcessQueues(q -> q.isIdle(), "idle", pw);
}
+ @GuardedBy("mService")
@Override
public boolean isBeyondBarrierLocked(@UptimeMillisLong long barrierTime) {
return isBeyondBarrierLocked(barrierTime, LOG_WRITER_INFO);
}
+ @GuardedBy("mService")
public boolean isBeyondBarrierLocked(@UptimeMillisLong long barrierTime,
@NonNull PrintWriter pw) {
return testAllProcessQueues(q -> q.isBeyondBarrierLocked(barrierTime), "barrier", pw);
}
+ @GuardedBy("mService")
@Override
public boolean isDispatchedLocked(@NonNull Intent intent) {
return isDispatchedLocked(intent, LOG_WRITER_INFO);
}
+ @GuardedBy("mService")
public boolean isDispatchedLocked(@NonNull Intent intent, @NonNull PrintWriter pw) {
return testAllProcessQueues(q -> q.isDispatched(intent),
"dispatch of " + intent, pw);
}
+ @GuardedBy("mService")
@Override
public void waitForIdle(@NonNull PrintWriter pw) {
waitFor(() -> isIdleLocked(pw));
@@ -1801,6 +1845,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
}
}
+ @GuardedBy("mService")
@Override
public void waitForDispatched(@NonNull Intent intent, @NonNull PrintWriter pw) {
waitFor(() -> isDispatchedLocked(intent, pw));
@@ -1819,6 +1864,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
}
}
+ @GuardedBy("mService")
private void checkAndRemoveWaitingFor() {
if (!mWaitingFor.isEmpty()) {
mWaitingFor.removeIf((pair) -> {
@@ -1847,13 +1893,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
return getRunningSize() + " running";
}
- @Override
- public boolean isDelayBehindServices() {
- // Modern queue does not alter the broadcasts delivery behavior based on background
- // services, so ignore.
- return false;
- }
-
+ @GuardedBy("mService")
@Override
public void backgroundServicesFinishedLocked(int userId) {
// Modern queue does not alter the broadcasts delivery behavior based on background
@@ -1866,6 +1906,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
}
}
+ @GuardedBy("mService")
private void checkHealthLocked() {
try {
assertHealthLocked();
@@ -1888,6 +1929,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
* current state once and stop future health checks to avoid spamming.
*/
@VisibleForTesting
+ @GuardedBy("mService")
void assertHealthLocked() {
// Verify all runnable queues are sorted
BroadcastProcessQueue prev = null;
@@ -1927,6 +1969,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
}
@SuppressWarnings("CheckResult")
+ @GuardedBy("mService")
private void updateWarmProcess(@NonNull BroadcastProcessQueue queue) {
if (!queue.isProcessWarm()) {
// This is a bit awkward; we're in the middle of traversing the
@@ -1946,6 +1989,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
* {@link BroadcastProcessQueue}. Also updates any runnable status that
* might have changed as a side-effect.
*/
+ @GuardedBy("mService")
private void setQueueProcess(@NonNull BroadcastProcessQueue queue,
@Nullable ProcessRecord app) {
if (queue.setProcessAndUidState(app, mUidForeground.get(queue.uid, false),
@@ -2008,6 +2052,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
* Inform other parts of OS that the given broadcast queue has started
* running, typically for internal bookkeeping.
*/
+ @GuardedBy("mService")
private void notifyStartedRunning(@NonNull BroadcastProcessQueue queue) {
if (queue.app != null) {
queue.app.mReceivers.incrementCurReceivers();
@@ -2032,6 +2077,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
* Inform other parts of OS that the given broadcast queue has stopped
* running, typically for internal bookkeeping.
*/
+ @GuardedBy("mService")
private void notifyStoppedRunning(@NonNull BroadcastProcessQueue queue) {
if (queue.app != null) {
queue.app.mReceivers.decrementCurReceivers();
@@ -2046,6 +2092,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
* Inform other parts of OS that the given broadcast was just scheduled for
* a registered receiver, typically for internal bookkeeping.
*/
+ @GuardedBy("mService")
private void notifyScheduleRegisteredReceiver(@NonNull ProcessRecord app,
@NonNull BroadcastRecord r, @NonNull BroadcastFilter receiver) {
reportUsageStatsBroadcastDispatched(app, r);
@@ -2055,6 +2102,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
* Inform other parts of OS that the given broadcast was just scheduled for
* a manifest receiver, typically for internal bookkeeping.
*/
+ @GuardedBy("mService")
private void notifyScheduleReceiver(@NonNull ProcessRecord app,
@NonNull BroadcastRecord r, @NonNull ResolveInfo receiver) {
reportUsageStatsBroadcastDispatched(app, r);
@@ -2077,6 +2125,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
receiverPackageName, r.userId, r.callerPackage, r.toString());
}
+ @GuardedBy("mService")
private void reportUsageStatsBroadcastDispatched(@NonNull ProcessRecord app,
@NonNull BroadcastRecord r) {
final long idForResponseEvent = (r.options != null)
@@ -2102,6 +2151,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
* Inform other parts of OS that the given broadcast was just finished,
* typically for internal bookkeeping.
*/
+ @GuardedBy("mService")
private void notifyFinishReceiver(@Nullable BroadcastProcessQueue queue,
@Nullable ProcessRecord app, @NonNull BroadcastRecord r, int index,
@NonNull Object receiver) {
@@ -2115,6 +2165,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
}
}
+ @GuardedBy("mService")
private void logBroadcastDeliveryEventReported(@Nullable BroadcastProcessQueue queue,
@Nullable ProcessRecord app, @NonNull BroadcastRecord r, int index,
@NonNull Object receiver) {
@@ -2165,6 +2216,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
}
}
+ @GuardedBy("mService")
private void notifyFinishBroadcast(@NonNull BroadcastRecord r) {
mService.notifyBroadcastFinishedLocked(r);
r.finishTime = SystemClock.uptimeMillis();
@@ -2193,11 +2245,13 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
}
@VisibleForTesting
+ @GuardedBy("mService")
@NonNull BroadcastProcessQueue getOrCreateProcessQueue(@NonNull ProcessRecord app) {
return getOrCreateProcessQueue(app.processName, app.info.uid);
}
@VisibleForTesting
+ @GuardedBy("mService")
@NonNull BroadcastProcessQueue getOrCreateProcessQueue(@NonNull String processName,
int uid) {
BroadcastProcessQueue leaf = mProcessQueues.get(uid);
@@ -2222,11 +2276,13 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
}
@VisibleForTesting
+ @GuardedBy("mService")
@Nullable BroadcastProcessQueue getProcessQueue(@NonNull ProcessRecord app) {
return getProcessQueue(app.processName, app.info.uid);
}
@VisibleForTesting
+ @GuardedBy("mService")
@Nullable BroadcastProcessQueue getProcessQueue(@NonNull String processName, int uid) {
BroadcastProcessQueue leaf = mProcessQueues.get(uid);
while (leaf != null) {
@@ -2239,11 +2295,13 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
}
@VisibleForTesting
+ @GuardedBy("mService")
@Nullable BroadcastProcessQueue removeProcessQueue(@NonNull ProcessRecord app) {
return removeProcessQueue(app.processName, app.info.uid);
}
@VisibleForTesting
+ @GuardedBy("mService")
@Nullable BroadcastProcessQueue removeProcessQueue(@NonNull String processName,
int uid) {
BroadcastProcessQueue prev = null;
@@ -2267,6 +2325,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
return null;
}
+ @GuardedBy("mService")
private void logBootCompletedBroadcastCompletionLatencyIfPossible(BroadcastRecord r) {
// Only log after last receiver.
// In case of split BOOT_COMPLETED broadcast, make sure only call this method on the
@@ -2322,6 +2381,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
@Override
@NeverCompile
+ @GuardedBy("mService")
public void dumpDebug(@NonNull ProtoOutputStream proto, long fieldId) {
long token = proto.start(fieldId);
proto.write(BroadcastQueueProto.QUEUE_NAME, mQueueName);
@@ -2331,6 +2391,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
@Override
@NeverCompile
+ @GuardedBy("mService")
public boolean dumpLocked(@NonNull FileDescriptor fd, @NonNull PrintWriter pw,
@NonNull String[] args, int opti, boolean dumpConstants, boolean dumpHistory,
boolean dumpAll, @Nullable String dumpPackage, boolean needSep) {
diff --git a/services/core/java/com/android/server/am/BroadcastRecord.java b/services/core/java/com/android/server/am/BroadcastRecord.java
index 99b91ffb1c2f..edb04c5c00bc 100644
--- a/services/core/java/com/android/server/am/BroadcastRecord.java
+++ b/services/core/java/com/android/server/am/BroadcastRecord.java
@@ -16,7 +16,6 @@
package com.android.server.am;
-import static android.app.ActivityManager.RESTRICTION_LEVEL_BACKGROUND_RESTRICTED;
import static android.app.AppProtoEnums.BROADCAST_TYPE_ALARM;
import static android.app.AppProtoEnums.BROADCAST_TYPE_BACKGROUND;
import static android.app.AppProtoEnums.BROADCAST_TYPE_DEFERRABLE_UNTIL_ACTIVE;
@@ -31,12 +30,6 @@ import static android.app.AppProtoEnums.BROADCAST_TYPE_PUSH_MESSAGE_OVER_QUOTA;
import static android.app.AppProtoEnums.BROADCAST_TYPE_RESULT_TO;
import static android.app.AppProtoEnums.BROADCAST_TYPE_STICKY;
-import static com.android.server.am.BroadcastConstants.DEFER_BOOT_COMPLETED_BROADCAST_ALL;
-import static com.android.server.am.BroadcastConstants.DEFER_BOOT_COMPLETED_BROADCAST_BACKGROUND_RESTRICTED_ONLY;
-import static com.android.server.am.BroadcastConstants.DEFER_BOOT_COMPLETED_BROADCAST_CHANGE_ID;
-import static com.android.server.am.BroadcastConstants.DEFER_BOOT_COMPLETED_BROADCAST_NONE;
-import static com.android.server.am.BroadcastConstants.DEFER_BOOT_COMPLETED_BROADCAST_TARGET_T_ONLY;
-
import android.annotation.CheckResult;
import android.annotation.CurrentTimeMillisLong;
import android.annotation.ElapsedRealtimeLong;
@@ -45,12 +38,10 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UptimeMillisLong;
import android.app.ActivityManager.ProcessState;
-import android.app.ActivityManagerInternal;
import android.app.AppOpsManager;
import android.app.BackgroundStartPrivileges;
import android.app.BroadcastOptions;
import android.app.BroadcastOptions.DeliveryGroupPolicy;
-import android.app.compat.CompatChanges;
import android.content.ComponentName;
import android.content.IIntentReceiver;
import android.content.Intent;
@@ -63,7 +54,6 @@ import android.os.SystemClock;
import android.os.UserHandle;
import android.util.ArrayMap;
import android.util.PrintWriterPrinter;
-import android.util.SparseArray;
import android.util.TimeUtils;
import android.util.proto.ProtoOutputStream;
@@ -75,13 +65,11 @@ import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Set;
-import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.BiFunction;
/**
@@ -125,9 +113,6 @@ final class BroadcastRecord extends Binder {
final int[] blockedUntilBeyondCount; // blocked until count of each receiver
@Nullable ProcessRecord resultToApp; // who receives final result if non-null
@Nullable IIntentReceiver resultTo; // who receives final result if non-null
- boolean deferred;
- int splitCount; // refcount for result callback, when split
- int splitToken; // identifier for cross-BroadcastRecord refcount
@UptimeMillisLong long enqueueTime; // when broadcast enqueued
@ElapsedRealtimeLong long enqueueRealTime; // when broadcast enqueued
@CurrentTimeMillisLong long enqueueClockTime; // when broadcast enqueued
@@ -276,15 +261,6 @@ final class BroadcastRecord extends Binder {
BroadcastFilter curFilter; // the registered receiver currently running.
Bundle curFilteredExtras; // the bundle that has been filtered by the package visibility rules
- int curAppLastProcessState; // The last process state of the current receiver before receiving
-
- boolean mIsReceiverAppRunning; // Was the receiver's app already running.
-
- boolean mWasReceiverAppStopped; // Was the receiver app stopped prior to starting
-
- // Private refcount-management bookkeeping; start > 0
- static AtomicInteger sNextToken = new AtomicInteger(1);
-
@NeverCompile
void dump(PrintWriter pw, String prefix, SimpleDateFormat sdf) {
final long now = SystemClock.uptimeMillis();
@@ -582,129 +558,6 @@ final class BroadcastRecord extends Binder {
}
/**
- * Split off a new BroadcastRecord that clones this one, but contains only the
- * recipient records for the current (just-finished) receiver's app, starting
- * after the just-finished receiver [i.e. at r.nextReceiver]. Returns null
- * if there are no matching subsequent receivers in this BroadcastRecord.
- */
- BroadcastRecord splitRecipientsLocked(int slowAppUid, int startingAt) {
- // Do we actually have any matching receivers down the line...?
- ArrayList splitReceivers = null;
- for (int i = startingAt; i < receivers.size(); ) {
- Object o = receivers.get(i);
- if (getReceiverUid(o) == slowAppUid) {
- if (splitReceivers == null) {
- splitReceivers = new ArrayList<>();
- }
- splitReceivers.add(o);
- receivers.remove(i);
- } else {
- i++;
- }
- }
-
- // No later receivers in the same app, so we have no more to do
- if (splitReceivers == null) {
- return null;
- }
-
- // build a new BroadcastRecord around that single-target list
- BroadcastRecord split = new BroadcastRecord(queue, intent, callerApp, callerPackage,
- callerFeatureId, callingPid, callingUid, callerInstantApp, resolvedType,
- requiredPermissions, excludedPermissions, excludedPackages, appOp, options,
- splitReceivers, resultToApp, resultTo, resultCode, resultData, resultExtras,
- ordered, sticky, initialSticky, userId,
- mBackgroundStartPrivileges, timeoutExempt, filterExtrasForReceiver,
- callerProcState);
- split.enqueueTime = this.enqueueTime;
- split.enqueueRealTime = this.enqueueRealTime;
- split.enqueueClockTime = this.enqueueClockTime;
- split.splitToken = this.splitToken;
- return split;
- }
-
- /**
- * Split a BroadcastRecord to a map of deferred receiver UID to deferred BroadcastRecord.
- *
- * The receivers that are deferred are removed from original BroadcastRecord's receivers list.
- * The receivers that are not deferred are kept in original BroadcastRecord's receivers list.
- *
- * Only used to split LOCKED_BOOT_COMPLETED or BOOT_COMPLETED BroadcastRecord.
- * LOCKED_BOOT_COMPLETED or BOOT_COMPLETED broadcast can be deferred until the first time
- * the receiver's UID has a process started.
- *
- * @param ams The ActivityManagerService object.
- * @param deferType Defer what UID?
- * @return the deferred UID to BroadcastRecord map, the BroadcastRecord has the list of
- * receivers in that UID.
- */
- @NonNull SparseArray<BroadcastRecord> splitDeferredBootCompletedBroadcastLocked(
- ActivityManagerInternal activityManagerInternal,
- @BroadcastConstants.DeferBootCompletedBroadcastType int deferType) {
- final SparseArray<BroadcastRecord> ret = new SparseArray<>();
- if (deferType == DEFER_BOOT_COMPLETED_BROADCAST_NONE) {
- 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)) {
- return ret;
- }
-
- final SparseArray<List<Object>> uid2receiverList = new SparseArray<>();
- for (int i = receivers.size() - 1; i >= 0; i--) {
- final Object receiver = receivers.get(i);
- final int uid = getReceiverUid(receiver);
- if (deferType != DEFER_BOOT_COMPLETED_BROADCAST_ALL) {
- if ((deferType & DEFER_BOOT_COMPLETED_BROADCAST_BACKGROUND_RESTRICTED_ONLY) != 0) {
- if (activityManagerInternal.getRestrictionLevel(uid)
- < RESTRICTION_LEVEL_BACKGROUND_RESTRICTED) {
- // skip if the UID is not background restricted.
- continue;
- }
- }
- if ((deferType & DEFER_BOOT_COMPLETED_BROADCAST_TARGET_T_ONLY) != 0) {
- if (!CompatChanges.isChangeEnabled(DEFER_BOOT_COMPLETED_BROADCAST_CHANGE_ID,
- uid)) {
- // skip if the UID is not targetSdkVersion T+.
- continue;
- }
- }
- }
- // Remove receiver from original BroadcastRecord's receivers list.
- receivers.remove(i);
- final List<Object> receiverList = uid2receiverList.get(uid);
- if (receiverList != null) {
- receiverList.add(0, receiver);
- } else {
- ArrayList<Object> splitReceivers = new ArrayList<>();
- splitReceivers.add(0, receiver);
- uid2receiverList.put(uid, splitReceivers);
- }
- }
- final int uidSize = uid2receiverList.size();
- for (int i = 0; i < uidSize; i++) {
- final BroadcastRecord br = new BroadcastRecord(queue, intent, callerApp, callerPackage,
- callerFeatureId, callingPid, callingUid, callerInstantApp, resolvedType,
- requiredPermissions, excludedPermissions, excludedPackages, appOp, options,
- uid2receiverList.valueAt(i), null /* _resultToApp */, null /* _resultTo */,
- resultCode, resultData, resultExtras, ordered, sticky, initialSticky, userId,
- mBackgroundStartPrivileges, timeoutExempt,
- filterExtrasForReceiver, callerProcState);
- br.enqueueTime = this.enqueueTime;
- br.enqueueRealTime = this.enqueueRealTime;
- br.enqueueClockTime = this.enqueueClockTime;
- ret.put(uid2receiverList.keyAt(i), br);
- }
- return ret;
- }
-
- /**
* Update the delivery state of the given {@link #receivers} index.
* Automatically updates any time measurements related to state changes.
*
@@ -876,7 +729,7 @@ final class BroadcastRecord extends Binder {
}
/**
- * Determine if the result of {@link #calculateBlockedUntilTerminalCount}
+ * Determine if the result of {@link #calculateBlockedUntilBeyondCount(List, boolean)}
* has prioritized tranches of receivers.
*/
@VisibleForTesting
diff --git a/services/core/java/com/android/server/am/BroadcastSkipPolicy.java b/services/core/java/com/android/server/am/BroadcastSkipPolicy.java
index 5f918cfa3478..66abb4238726 100644
--- a/services/core/java/com/android/server/am/BroadcastSkipPolicy.java
+++ b/services/core/java/com/android/server/am/BroadcastSkipPolicy.java
@@ -61,20 +61,6 @@ public class BroadcastSkipPolicy {
/**
* Determine if the given {@link BroadcastRecord} is eligible to be sent to
* the given {@link BroadcastFilter} or {@link ResolveInfo}.
- */
- public boolean shouldSkip(@NonNull BroadcastRecord r, @NonNull Object target) {
- final String msg = shouldSkipMessage(r, target);
- if (msg != null) {
- Slog.w(TAG, msg);
- return true;
- } else {
- return false;
- }
- }
-
- /**
- * Determine if the given {@link BroadcastRecord} is eligible to be sent to
- * the given {@link BroadcastFilter} or {@link ResolveInfo}.
*
* @return message indicating why the argument should be skipped, otherwise
* {@code null} if it can proceed.
diff --git a/services/core/java/com/android/server/am/PendingIntentController.java b/services/core/java/com/android/server/am/PendingIntentController.java
index 5df910716ba6..fb0d6957129a 100644
--- a/services/core/java/com/android/server/am/PendingIntentController.java
+++ b/services/core/java/com/android/server/am/PendingIntentController.java
@@ -146,6 +146,21 @@ public class PendingIntentController {
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_SYSTEM_DEFINED);
}
+ if (opts != null && opts.isPendingIntentBackgroundActivityLaunchAllowedByPermission()) {
+ Slog.wtf(TAG,
+ "Resetting option pendingIntentBackgroundActivityLaunchAllowedByPermission"
+ + " which is set by the pending intent creator ("
+ + packageName
+ + ") because this option is meant for the pending intent sender");
+ if (CompatChanges.isChangeEnabled(PendingIntent.PENDING_INTENT_OPTIONS_CHECK,
+ callingUid)) {
+ throw new IllegalArgumentException(
+ "pendingIntentBackgroundActivityLaunchAllowedByPermission "
+ + "can not be set by creator of a PendingIntent");
+ }
+ opts.setPendingIntentBackgroundActivityLaunchAllowedByPermission(false);
+ }
+
final boolean noCreate = (flags & PendingIntent.FLAG_NO_CREATE) != 0;
final boolean cancelCurrent = (flags & PendingIntent.FLAG_CANCEL_CURRENT) != 0;
final boolean updateCurrent = (flags & PendingIntent.FLAG_UPDATE_CURRENT) != 0;
diff --git a/services/core/java/com/android/server/am/ProcessReceiverRecord.java b/services/core/java/com/android/server/am/ProcessReceiverRecord.java
index 34a2b03f1d7d..c80918a4b634 100644
--- a/services/core/java/com/android/server/am/ProcessReceiverRecord.java
+++ b/services/core/java/com/android/server/am/ProcessReceiverRecord.java
@@ -95,10 +95,6 @@ final class ProcessReceiverRecord {
return mReceivers.size();
}
- ReceiverList getReceiverAt(int index) {
- return mReceivers.valueAt(index);
- }
-
void addReceiver(ReceiverList receiver) {
mReceivers.add(receiver);
}
diff --git a/services/core/java/com/android/server/am/flags.aconfig b/services/core/java/com/android/server/am/flags.aconfig
index e955b00566b8..0209944f9fd0 100644
--- a/services/core/java/com/android/server/am/flags.aconfig
+++ b/services/core/java/com/android/server/am/flags.aconfig
@@ -52,6 +52,14 @@ flag {
flag {
namespace: "backstage_power"
+ name: "defer_outgoing_broadcasts"
+ description: "Defer outgoing broadcasts from processes in freezable state"
+ bug: "327496592"
+ is_fixed_read_only: true
+}
+
+flag {
+ namespace: "backstage_power"
name: "avoid_repeated_bcast_re_enqueues"
description: "Avoid re-enqueueing a broadcast repeatedly"
bug: "319225224"
@@ -60,3 +68,21 @@ flag {
purpose: PURPOSE_BUGFIX
}
}
+
+flag {
+ namespace: "backstage_power"
+ name: "log_excessive_binder_proxies"
+ description: "Log the excessive incoming binder proxies into statsd"
+ bug: "298263955"
+}
+
+flag {
+ namespace: "backstage_power"
+ name: "avoid_resolving_type"
+ description: "Avoid resolving data type for sticky broadcasts"
+ bug: "323817802"
+ is_fixed_read_only: true
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
index 2a487856bfb8..51a8aeff96c6 100644
--- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
@@ -33,6 +33,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.app.ActivityManager;
+import android.app.AppOpsManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
@@ -115,6 +116,7 @@ class MediaRouter2ServiceImpl {
private final Context mContext;
private final UserManagerInternal mUserManagerInternal;
private final Object mLock = new Object();
+ private final AppOpsManager mAppOpsManager;
final AtomicInteger mNextRouterOrManagerId = new AtomicInteger(1);
final ActivityManager mActivityManager;
final PowerManager mPowerManager;
@@ -152,7 +154,30 @@ class MediaRouter2ServiceImpl {
}
};
- @RequiresPermission(Manifest.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS)
+ private final AppOpsManager.OnOpChangedListener mOnOpChangedListener =
+ new AppOpsManager.OnOpChangedListener() {
+ @Override
+ public void onOpChanged(String op, String packageName) {
+ // Do nothing.
+ }
+
+ @Override
+ public void onOpChanged(
+ @NonNull String op, @NonNull String packageName, int userId) {
+ if (!TextUtils.equals(op, AppOpsManager.OPSTR_MEDIA_ROUTING_CONTROL)) {
+ return;
+ }
+ synchronized (mLock) {
+ revokeManagerRecordAccessIfNeededLocked(packageName, userId);
+ }
+ }
+ };
+
+ @RequiresPermission(
+ allOf = {
+ Manifest.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS,
+ Manifest.permission.WATCH_APPOPS
+ })
/* package */ MediaRouter2ServiceImpl(Context context) {
mContext = context;
mActivityManager = mContext.getSystemService(ActivityManager.class);
@@ -160,6 +185,7 @@ class MediaRouter2ServiceImpl {
REQUIRED_PACKAGE_IMPORTANCE_FOR_SCANNING);
mPowerManager = mContext.getSystemService(PowerManager.class);
mUserManagerInternal = LocalServices.getService(UserManagerInternal.class);
+ mAppOpsManager = mContext.getSystemService(AppOpsManager.class);
if (!Flags.disableScreenOffBroadcastReceiver()) {
IntentFilter screenOnOffIntentFilter = new IntentFilter();
@@ -168,6 +194,12 @@ class MediaRouter2ServiceImpl {
mContext.registerReceiver(mScreenOnOffReceiver, screenOnOffIntentFilter);
}
+ // Passing null package name to listen to all events.
+ mAppOpsManager.startWatchingMode(
+ AppOpsManager.OP_MEDIA_ROUTING_CONTROL,
+ /* packageName */ null,
+ mOnOpChangedListener);
+
mContext.getPackageManager().addOnPermissionsChangeListener(this::onPermissionsChanged);
}
@@ -523,7 +555,6 @@ class MediaRouter2ServiceImpl {
final int callerPid = Binder.getCallingPid();
final UserHandle callerUser = Binder.getCallingUserHandle();
- // TODO (b/305919655) - Handle revoking of MEDIA_ROUTING_CONTROL at runtime.
enforcePrivilegedRoutingPermissions(callerUid, callerPid, callerPackageName);
final long token = Binder.clearCallingIdentity();
@@ -564,7 +595,6 @@ class MediaRouter2ServiceImpl {
final long token = Binder.clearCallingIdentity();
try {
- // TODO (b/305919655) - Handle revoking of MEDIA_ROUTING_CONTROL at runtime.
enforcePrivilegedRoutingPermissions(callerUid, callerPid, callerPackageName);
enforceCrossUserPermissions(callerUid, callerPid, targetUser);
if (!verifyPackageExistsForUser(targetPackageName, targetUser)) {
@@ -835,9 +865,7 @@ class MediaRouter2ServiceImpl {
})
private void enforcePrivilegedRoutingPermissions(
int callerUid, int callerPid, @Nullable String callerPackageName) {
- if (mContext.checkPermission(
- Manifest.permission.MEDIA_CONTENT_CONTROL, callerPid, callerUid)
- == PackageManager.PERMISSION_GRANTED) {
+ if (hasMediaContentControlPermission(callerUid, callerPid)) {
return;
}
@@ -851,6 +879,13 @@ class MediaRouter2ServiceImpl {
}
}
+ @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL)
+ private boolean hasMediaContentControlPermission(int callerUid, int callerPid) {
+ return mContext.checkPermission(
+ Manifest.permission.MEDIA_CONTENT_CONTROL, callerPid, callerUid)
+ == PackageManager.PERMISSION_GRANTED;
+ }
+
private boolean checkMediaRoutingControlPermission(
int callerUid, int callerPid, @Nullable String callerPackageName) {
return PermissionChecker.checkPermissionForDataDelivery(
@@ -966,6 +1001,68 @@ class MediaRouter2ServiceImpl {
return mUserManagerInternal.getProfileParentId(userId) == mCurrentActiveUserId;
}
+ @GuardedBy("mLock")
+ private void revokeManagerRecordAccessIfNeededLocked(@NonNull String packageName, int userId) {
+ UserRecord userRecord = mUserRecords.get(userId);
+ if (userRecord == null) {
+ return;
+ }
+
+ List<ManagerRecord> managers =
+ userRecord.mManagerRecords.stream()
+ .filter(r -> !r.mHasMediaContentControl)
+ .filter(r -> TextUtils.equals(r.mOwnerPackageName, packageName))
+ .collect(Collectors.toList());
+
+ if (managers.isEmpty()) {
+ return;
+ }
+
+ ManagerRecord record = managers.getFirst();
+
+ // Uid and package name are shared across all manager records in the list.
+ boolean isAppOpAllowed =
+ mAppOpsManager.unsafeCheckOp(
+ AppOpsManager.OPSTR_MEDIA_ROUTING_CONTROL,
+ record.mOwnerUid,
+ record.mOwnerPackageName)
+ == AppOpsManager.MODE_ALLOWED;
+
+ if (isAppOpAllowed) {
+ return;
+ }
+
+ for (ManagerRecord manager : managers) {
+ boolean isRegularPermission =
+ mContext.checkPermission(
+ Manifest.permission.MEDIA_ROUTING_CONTROL,
+ manager.mOwnerPid,
+ manager.mOwnerUid)
+ == PackageManager.PERMISSION_GRANTED;
+
+ if (isRegularPermission) {
+ // We should check the regular permission for all manager records, as different PIDs
+ // might yield different permission results.
+ continue;
+ }
+
+ Log.w(
+ TAG,
+ TextUtils.formatSimple(
+ "Revoking access to manager record id: %d, package: %s, userId:"
+ + " %d",
+ manager.mManagerId, manager.mOwnerPackageName, userRecord.mUserId));
+
+ unregisterManagerLocked(manager.mManager, /* died */ false);
+
+ try {
+ manager.mManager.invalidateInstance();
+ } catch (RemoteException ex) {
+ Slog.w(TAG, "Failed to notify manager= " + manager + " of permission revocation.");
+ }
+ }
+ }
+
// Start of locked methods that are used by MediaRouter2.
@GuardedBy("mLock")
@@ -1423,6 +1520,8 @@ class MediaRouter2ServiceImpl {
boolean hasMediaRoutingControl =
checkMediaRoutingControlPermission(callerUid, callerPid, callerPackageName);
+ boolean hasMediaContentControl = hasMediaContentControlPermission(callerUid, callerPid);
+
Slog.i(
TAG,
TextUtils.formatSimple(
@@ -1446,7 +1545,8 @@ class MediaRouter2ServiceImpl {
callerPid,
callerPackageName,
targetPackageName,
- hasMediaRoutingControl);
+ hasMediaRoutingControl,
+ hasMediaContentControl);
try {
binder.linkToDeath(managerRecord, 0);
} catch (RemoteException ex) {
@@ -2123,6 +2223,7 @@ class MediaRouter2ServiceImpl {
@Nullable public final String mTargetPackageName;
public final boolean mHasMediaRoutingControl;
+ public final boolean mHasMediaContentControl;
@Nullable public SessionCreationRequest mLastSessionCreationRequest;
public @ScanningState int mScanningState = SCANNING_STATE_NOT_SCANNING;
@@ -2134,7 +2235,8 @@ class MediaRouter2ServiceImpl {
int ownerPid,
@NonNull String ownerPackageName,
@Nullable String targetPackageName,
- boolean hasMediaRoutingControl) {
+ boolean hasMediaRoutingControl,
+ boolean hasMediaContentControl) {
mUserRecord = userRecord;
mManager = manager;
mOwnerUid = ownerUid;
@@ -2143,6 +2245,7 @@ class MediaRouter2ServiceImpl {
mTargetPackageName = targetPackageName;
mManagerId = mNextRouterOrManagerId.getAndIncrement();
mHasMediaRoutingControl = hasMediaRoutingControl;
+ mHasMediaContentControl = hasMediaContentControl;
}
public void dispose() {
diff --git a/services/core/java/com/android/server/om/OverlayManagerService.java b/services/core/java/com/android/server/om/OverlayManagerService.java
index 872952299055..4b8e4852aee7 100644
--- a/services/core/java/com/android/server/om/OverlayManagerService.java
+++ b/services/core/java/com/android/server/om/OverlayManagerService.java
@@ -1344,7 +1344,8 @@ public final class OverlayManagerService extends SystemService {
ApkAssets apkAssets = null;
try {
- apkAssets = ApkAssets.loadFromPath(pkg.getSplits().get(0).getPath());
+ apkAssets = ApkAssets.loadFromPath(pkg.getSplits().get(0).getPath(),
+ ApkAssets.PROPERTY_ONLY_OVERLAYABLES);
return apkAssets.definesOverlayable();
} finally {
if (apkAssets != null) {
diff --git a/services/core/java/com/android/server/om/OverlayManagerShellCommand.java b/services/core/java/com/android/server/om/OverlayManagerShellCommand.java
index d9c8ec6e5ed1..b7f21125148c 100644
--- a/services/core/java/com/android/server/om/OverlayManagerShellCommand.java
+++ b/services/core/java/com/android/server/om/OverlayManagerShellCommand.java
@@ -147,7 +147,7 @@ final class OverlayManagerShellCommand extends ShellCommand {
out.println(" For a more fine-grained alternative, use 'idmap2 lookup'.");
out.println(" fabricate [--user USER_ID] [--target-name OVERLAYABLE] --target PACKAGE");
out.println(" --name NAME [--file FILE] ");
- out.println(" PACKAGE:TYPE/NAME ENCODED-TYPE-ID/TYPE-NAME ENCODED-VALUE");
+ out.println(" PACKAGE:TYPE/NAME ENCODED-TYPE-ID|TYPE-NAME ENCODED-VALUE");
out.println(" Create an overlay from a single resource. Caller must be root. Example:");
out.println(" fabricate --target android --name LighterGray \\");
out.println(" android:color/lighter_gray 0x1c 0xffeeeeee");
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java
index 4bec61acc38f..ae68018c90b3 100644
--- a/services/core/java/com/android/server/pm/InstallPackageHelper.java
+++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java
@@ -3601,7 +3601,8 @@ final class InstallPackageHelper {
continue;
}
if ((scanFlags & SCAN_DROP_CACHE) != 0) {
- final PackageCacher cacher = new PackageCacher(mPm.getCacheDir());
+ final PackageCacher cacher = new PackageCacher(mPm.getCacheDir(),
+ mPm.mPackageParserCallback);
Log.w(TAG, "Dropping cache of " + file.getAbsolutePath());
cacher.cleanCachedResult(file);
}
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 7c51707f7280..35cb5b000219 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -1739,7 +1739,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
() -> LocalServices.getService(UserManagerInternal.class)),
(i, pm) -> new DisplayMetrics(),
(i, pm) -> new PackageParser2(pm.mSeparateProcesses, i.getDisplayMetrics(),
- new PackageCacher(pm.mCacheDir),
+ new PackageCacher(pm.mCacheDir, pm.mPackageParserCallback),
pm.mPackageParserCallback) /* scanningCachingPackageParserProducer */,
(i, pm) -> new PackageParser2(pm.mSeparateProcesses, i.getDisplayMetrics(), null,
pm.mPackageParserCallback) /* scanningPackageParserProducer */,
diff --git a/services/core/java/com/android/server/pm/parsing/PackageCacher.java b/services/core/java/com/android/server/pm/parsing/PackageCacher.java
index b6267c499c07..2db454aa4c41 100644
--- a/services/core/java/com/android/server/pm/parsing/PackageCacher.java
+++ b/services/core/java/com/android/server/pm/parsing/PackageCacher.java
@@ -17,6 +17,7 @@
package com.android.server.pm.parsing;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.content.pm.PackageParserCacheHelper;
import android.os.Environment;
import android.os.FileUtils;
@@ -29,8 +30,10 @@ import android.util.Slog;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.pm.parsing.IPackageCacher;
+import com.android.internal.pm.parsing.PackageParser2;
import com.android.internal.pm.parsing.pkg.PackageImpl;
import com.android.internal.pm.parsing.pkg.ParsedPackage;
+import com.android.internal.pm.pkg.parsing.ParsingPackageUtils;
import com.android.server.pm.ApexManager;
import libcore.io.IoUtils;
@@ -51,9 +54,16 @@ public class PackageCacher implements IPackageCacher {
@NonNull
private final File mCacheDir;
+ @Nullable
+ private final PackageParser2.Callback mCallback;
- public PackageCacher(@NonNull File cacheDir) {
+ public PackageCacher(File cacheDir) {
+ this(cacheDir, null);
+ }
+
+ public PackageCacher(File cacheDir, @Nullable PackageParser2.Callback callback) {
this.mCacheDir = cacheDir;
+ this.mCallback = callback;
}
/**
@@ -71,12 +81,17 @@ public class PackageCacher implements IPackageCacher {
@VisibleForTesting
protected ParsedPackage fromCacheEntry(byte[] bytes) {
- return fromCacheEntryStatic(bytes);
+ return fromCacheEntryStatic(bytes, mCallback);
}
/** static version of {@link #fromCacheEntry} for unit tests. */
@VisibleForTesting
public static ParsedPackage fromCacheEntryStatic(byte[] bytes) {
+ return fromCacheEntryStatic(bytes, null);
+ }
+
+ private static ParsedPackage fromCacheEntryStatic(byte[] bytes,
+ @Nullable ParsingPackageUtils.Callback callback) {
final Parcel p = Parcel.obtain();
p.unmarshall(bytes, 0, bytes.length);
p.setDataPosition(0);
@@ -85,7 +100,7 @@ public class PackageCacher implements IPackageCacher {
new PackageParserCacheHelper.ReadHelper(p);
helper.startAndInstall();
- ParsedPackage pkg = new PackageImpl(p);
+ ParsedPackage pkg = new PackageImpl(p, callback);
p.recycle();
diff --git a/services/core/java/com/android/server/power/hint/HintManagerService.java b/services/core/java/com/android/server/power/hint/HintManagerService.java
index 35717af962ef..aa1a41eee220 100644
--- a/services/core/java/com/android/server/power/hint/HintManagerService.java
+++ b/services/core/java/com/android/server/power/hint/HintManagerService.java
@@ -24,6 +24,7 @@ import android.app.ActivityManagerInternal;
import android.app.StatsManager;
import android.app.UidObserver;
import android.content.Context;
+import android.hardware.power.WorkDuration;
import android.os.Binder;
import android.os.IBinder;
import android.os.IHintManager;
@@ -32,7 +33,6 @@ import android.os.PerformanceHintManager;
import android.os.Process;
import android.os.RemoteException;
import android.os.SystemProperties;
-import android.os.WorkDuration;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
@@ -198,8 +198,8 @@ public final class HintManagerService extends SystemService {
private static native void nativeSetMode(long halPtr, int mode, boolean enabled);
- private static native void nativeReportActualWorkDuration(long halPtr,
- WorkDuration[] workDurations);
+ private static native void nativeReportActualWorkDuration(
+ long halPtr, WorkDuration[] workDurations);
/** Wrapper for HintManager.nativeInit */
public void halInit() {
@@ -670,46 +670,46 @@ public final class HintManagerService extends SystemService {
void validateWorkDuration(WorkDuration workDuration) {
if (DEBUG) {
- Slogf.d(TAG, "WorkDuration(" + workDuration.getTimestampNanos() + ", "
- + workDuration.getWorkPeriodStartTimestampNanos() + ", "
- + workDuration.getActualTotalDurationNanos() + ", "
- + workDuration.getActualCpuDurationNanos() + ", "
- + workDuration.getActualGpuDurationNanos() + ")");
+ Slogf.d(TAG, "WorkDuration("
+ + workDuration.durationNanos + ", "
+ + workDuration.workPeriodStartTimestampNanos + ", "
+ + workDuration.cpuDurationNanos + ", "
+ + workDuration.gpuDurationNanos + ")");
}
// Allow work period start timestamp to be zero in system server side because
// legacy API call will use zero value. It can not be estimated with the timestamp
// the sample is received because the samples could stack up.
- if (workDuration.getWorkPeriodStartTimestampNanos() < 0) {
+ if (workDuration.durationNanos <= 0) {
throw new IllegalArgumentException(
- TextUtils.formatSimple(
- "Work period start timestamp (%d) should be greater than 0",
- workDuration.getWorkPeriodStartTimestampNanos()));
+ TextUtils.formatSimple("Actual total duration (%d) should be greater than 0",
+ workDuration.durationNanos));
}
- if (workDuration.getActualTotalDurationNanos() <= 0) {
+ if (workDuration.workPeriodStartTimestampNanos < 0) {
throw new IllegalArgumentException(
- TextUtils.formatSimple("Actual total duration (%d) should be greater than 0",
- workDuration.getActualTotalDurationNanos()));
+ TextUtils.formatSimple(
+ "Work period start timestamp (%d) should be greater than 0",
+ workDuration.workPeriodStartTimestampNanos));
}
- if (workDuration.getActualCpuDurationNanos() < 0) {
+ if (workDuration.cpuDurationNanos < 0) {
throw new IllegalArgumentException(
TextUtils.formatSimple(
"Actual CPU duration (%d) should be greater than or equal to 0",
- workDuration.getActualCpuDurationNanos()));
+ workDuration.cpuDurationNanos));
}
- if (workDuration.getActualGpuDurationNanos() < 0) {
+ if (workDuration.gpuDurationNanos < 0) {
throw new IllegalArgumentException(
TextUtils.formatSimple(
"Actual GPU duration (%d) should greater than or equal to 0",
- workDuration.getActualGpuDurationNanos()));
+ workDuration.gpuDurationNanos));
}
- if (workDuration.getActualCpuDurationNanos()
- + workDuration.getActualGpuDurationNanos() <= 0) {
+ if (workDuration.cpuDurationNanos
+ + workDuration.gpuDurationNanos <= 0) {
throw new IllegalArgumentException(
TextUtils.formatSimple(
"The actual CPU duration (%d) and the actual GPU duration (%d)"
- + " should not both be 0", workDuration.getActualCpuDurationNanos(),
- workDuration.getActualGpuDurationNanos()));
+ + " should not both be 0", workDuration.cpuDurationNanos,
+ workDuration.gpuDurationNanos));
}
}
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 6fa6957f2949..23f9743619e3 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -118,6 +118,7 @@ import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
import static android.view.Display.INVALID_DISPLAY;
import static android.view.Surface.ROTATION_270;
import static android.view.Surface.ROTATION_90;
+import static android.view.WindowManager.ACTIVITY_EMBEDDING_GUARD_WITH_ANDROID_15;
import static android.view.WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD;
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
@@ -125,10 +126,12 @@ import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
import static android.view.WindowManager.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED;
import static android.view.WindowManager.PROPERTY_ALLOW_UNTRUSTED_ACTIVITY_EMBEDDING_STATE_SHARING;
+import static android.view.WindowManager.ENABLE_ACTIVITY_EMBEDDING_FOR_ANDROID_15;
import static android.view.WindowManager.TRANSIT_CLOSE;
import static android.view.WindowManager.TRANSIT_FLAG_OPEN_BEHIND;
import static android.view.WindowManager.TRANSIT_OLD_UNSET;
import static android.view.WindowManager.TRANSIT_RELAUNCH;
+import static android.view.WindowManager.hasWindowExtensionsEnabled;
import static android.window.TransitionInfo.FLAGS_IS_OCCLUDED_NO_ANIMATION;
import static android.window.TransitionInfo.FLAG_IS_OCCLUDED;
import static android.window.TransitionInfo.FLAG_STARTING_WINDOW_TRANSFER_RECIPIENT;
@@ -282,6 +285,7 @@ import android.app.WaitResult;
import android.app.WindowConfiguration;
import android.app.admin.DevicePolicyManager;
import android.app.assist.ActivityId;
+import android.app.compat.CompatChanges;
import android.app.servertransaction.ActivityConfigurationChangeItem;
import android.app.servertransaction.ActivityLifecycleItem;
import android.app.servertransaction.ActivityRelaunchItem;
@@ -2266,16 +2270,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
mActivityRecordInputSink = new ActivityRecordInputSink(this, sourceRecord);
- boolean appActivityEmbeddingEnabled = false;
- try {
- appActivityEmbeddingEnabled = WindowManager.hasWindowExtensionsEnabled()
- && mAtmService.mContext.getPackageManager()
- .getProperty(PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED, packageName)
- .getBoolean();
- } catch (PackageManager.NameNotFoundException e) {
- // No such property name.
- }
- mAppActivityEmbeddingSplitsEnabled = appActivityEmbeddingEnabled;
+ mAppActivityEmbeddingSplitsEnabled = isAppActivityEmbeddingSplitsEnabled();
mAllowUntrustedEmbeddingStateSharing = getAllowUntrustedEmbeddingStateSharingProperty();
mOptInOnBackInvoked = WindowOnBackInvokedDispatcher
@@ -2294,6 +2289,28 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
mCallerState = new ActivityCallerState(mAtmService);
}
+ private boolean isAppActivityEmbeddingSplitsEnabled() {
+ if (!hasWindowExtensionsEnabled()) {
+ // WM Extensions disabled.
+ return false;
+ }
+ if (ACTIVITY_EMBEDDING_GUARD_WITH_ANDROID_15 && !CompatChanges.isChangeEnabled(
+ ENABLE_ACTIVITY_EMBEDDING_FOR_ANDROID_15,
+ info.packageName,
+ UserHandle.getUserHandleForUid(getUid()))) {
+ // Activity Embedding is guarded with Android 15+, but this app is not qualified.
+ return false;
+ }
+ try {
+ return mAtmService.mContext.getPackageManager()
+ .getProperty(PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED, packageName)
+ .getBoolean();
+ } catch (PackageManager.NameNotFoundException e) {
+ // No such property name.
+ return false;
+ }
+ }
+
/**
* Generate the task affinity with uid and activity launch mode. For b/35954083, Limit task
* affinity to uid to avoid issues associated with sharing affinity across uids.
diff --git a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java
index f7baa7914f86..2788342cb097 100644
--- a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java
+++ b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java
@@ -449,7 +449,48 @@ public class BackgroundActivityStartController {
this.mResultForRealCaller = resultForRealCaller;
}
- private String dump() {
+ public boolean isPendingIntentBalAllowedByPermission() {
+ return PendingIntentRecord.isPendingIntentBalAllowedByPermission(mCheckedOptions);
+ }
+
+ public boolean callerExplicitOptInOrAutoOptIn() {
+ if (mAutoOptInCaller) {
+ return !callerExplicitOptOut();
+ }
+ return mCheckedOptions.getPendingIntentCreatorBackgroundActivityStartMode()
+ == MODE_BACKGROUND_ACTIVITY_START_ALLOWED;
+ }
+
+ public boolean realCallerExplicitOptInOrAutoOptIn() {
+ if (mAutoOptInReason != null) {
+ return !realCallerExplicitOptOut();
+ }
+ return mCheckedOptions.getPendingIntentBackgroundActivityStartMode()
+ == MODE_BACKGROUND_ACTIVITY_START_ALLOWED;
+ }
+
+ public boolean callerExplicitOptOut() {
+ return mCheckedOptions.getPendingIntentCreatorBackgroundActivityStartMode()
+ == MODE_BACKGROUND_ACTIVITY_START_DENIED;
+ }
+
+ public boolean realCallerExplicitOptOut() {
+ return mCheckedOptions.getPendingIntentBackgroundActivityStartMode()
+ == MODE_BACKGROUND_ACTIVITY_START_DENIED;
+ }
+
+ public boolean callerExplicitOptInOrOut() {
+ return mCheckedOptions.getPendingIntentCreatorBackgroundActivityStartMode()
+ != MODE_BACKGROUND_ACTIVITY_START_SYSTEM_DEFINED;
+ }
+
+ public boolean realCallerExplicitOptInOrOut() {
+ return mCheckedOptions.getPendingIntentBackgroundActivityStartMode()
+ != MODE_BACKGROUND_ACTIVITY_START_SYSTEM_DEFINED;
+ }
+
+ @Override
+ public String toString() {
StringBuilder sb = new StringBuilder(2048);
sb.append("[callingPackage: ")
.append(getDebugPackageName(mCallingPackage, mCallingUid));
@@ -501,51 +542,6 @@ public class BackgroundActivityStartController {
sb.append("]");
return sb.toString();
}
-
- public boolean isPendingIntentBalAllowedByPermission() {
- return PendingIntentRecord.isPendingIntentBalAllowedByPermission(mCheckedOptions);
- }
-
- public boolean callerExplicitOptInOrAutoOptIn() {
- if (mAutoOptInCaller) {
- return !callerExplicitOptOut();
- }
- return mCheckedOptions.getPendingIntentCreatorBackgroundActivityStartMode()
- == MODE_BACKGROUND_ACTIVITY_START_ALLOWED;
- }
-
- public boolean realCallerExplicitOptInOrAutoOptIn() {
- if (mAutoOptInReason != null) {
- return !realCallerExplicitOptOut();
- }
- return mCheckedOptions.getPendingIntentBackgroundActivityStartMode()
- == MODE_BACKGROUND_ACTIVITY_START_ALLOWED;
- }
-
- public boolean callerExplicitOptOut() {
- return mCheckedOptions.getPendingIntentCreatorBackgroundActivityStartMode()
- == MODE_BACKGROUND_ACTIVITY_START_DENIED;
- }
-
- public boolean realCallerExplicitOptOut() {
- return mCheckedOptions.getPendingIntentBackgroundActivityStartMode()
- == MODE_BACKGROUND_ACTIVITY_START_DENIED;
- }
-
- public boolean callerExplicitOptInOrOut() {
- return mCheckedOptions.getPendingIntentCreatorBackgroundActivityStartMode()
- != MODE_BACKGROUND_ACTIVITY_START_SYSTEM_DEFINED;
- }
-
- public boolean realCallerExplicitOptInOrOut() {
- return mCheckedOptions.getPendingIntentBackgroundActivityStartMode()
- != MODE_BACKGROUND_ACTIVITY_START_SYSTEM_DEFINED;
- }
-
- @Override
- public String toString() {
- return dump();
- }
}
static class BalVerdict {
@@ -700,8 +696,7 @@ public class BackgroundActivityStartController {
if (!state.hasRealCaller()) {
if (resultForCaller.allows()) {
if (DEBUG_ACTIVITY_STARTS) {
- Slog.d(TAG, "Background activity start allowed. "
- + state.dump());
+ Slog.d(TAG, "Background activity start allowed. " + state);
}
return allowBasedOnCaller(state);
}
@@ -729,15 +724,13 @@ public class BackgroundActivityStartController {
// Handle cases with explicit opt-in
if (resultForCaller.allows() && state.callerExplicitOptInOrAutoOptIn()) {
if (DEBUG_ACTIVITY_STARTS) {
- Slog.d(TAG, "Activity start explicitly allowed by caller. "
- + state.dump());
+ Slog.d(TAG, "Activity start explicitly allowed by caller. " + state);
}
return allowBasedOnCaller(state);
}
if (resultForRealCaller.allows() && state.realCallerExplicitOptInOrAutoOptIn()) {
if (DEBUG_ACTIVITY_STARTS) {
- Slog.d(TAG, "Activity start explicitly allowed by real caller. "
- + state.dump());
+ Slog.d(TAG, "Activity start explicitly allowed by real caller. " + state);
}
return allowBasedOnRealCaller(state);
}
@@ -750,7 +743,7 @@ public class BackgroundActivityStartController {
if (state.mBalAllowedByPiCreator.allowsBackgroundActivityStarts()) {
Slog.wtf(TAG, "With Android 15 BAL hardening this activity start may be blocked"
+ " if the PI creator upgrades target_sdk to 35+! "
- + " (missing opt in by PI creator)!" + state.dump());
+ + " (missing opt in by PI creator)!" + state);
return allowBasedOnCaller(state);
}
}
@@ -759,7 +752,7 @@ public class BackgroundActivityStartController {
if (state.mBalAllowedByPiSender.allowsBackgroundActivityStarts()) {
Slog.wtf(TAG, "With Android 14 BAL hardening this activity start will be blocked"
+ " if the PI sender upgrades target_sdk to 34+! "
- + " (missing opt in by PI sender)!" + state.dump());
+ + " (missing opt in by PI sender)!" + state);
return allowBasedOnRealCaller(state);
}
}
@@ -773,23 +766,20 @@ public class BackgroundActivityStartController {
private BalVerdict allowBasedOnCaller(BalState state) {
if (DEBUG_ACTIVITY_STARTS) {
- Slog.d(TAG, "Background activity launch allowed based on caller. "
- + state.dump());
+ Slog.d(TAG, "Background activity launch allowed based on caller. " + state);
}
return statsLog(state.mResultForCaller, state);
}
private BalVerdict allowBasedOnRealCaller(BalState state) {
if (DEBUG_ACTIVITY_STARTS) {
- Slog.d(TAG, "Background activity launch allowed based on real caller. "
- + state.dump());
+ Slog.d(TAG, "Background activity launch allowed based on real caller. " + state);
}
return statsLog(state.mResultForRealCaller, state);
}
private BalVerdict abortLaunch(BalState state) {
- Slog.wtf(TAG, "Background activity launch blocked! "
- + state.dump());
+ Slog.wtf(TAG, "Background activity launch blocked! " + state);
if (balShowToastsBlocked()
&& (state.mResultForCaller.allows() || state.mResultForRealCaller.allows())) {
// only show a toast if either caller or real caller could launch if they opted in
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java
index 080479db035e..6d8b03020561 100644
--- a/services/core/java/com/android/server/wm/Transition.java
+++ b/services/core/java/com/android/server/wm/Transition.java
@@ -2468,15 +2468,7 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
for (WindowContainer<?> p = getAnimatableParent(wc); p != null;
p = getAnimatableParent(p)) {
final ChangeInfo parentChange = changes.get(p);
- if (parentChange == null) {
- break;
- }
- if (!parentChange.hasChanged()) {
- // In case the target is collected after the parent has been changed, it could
- // be too late to snapshot the parent change. Skip to see if there is any
- // parent window further up to be considered as change parent.
- continue;
- }
+ if (parentChange == null || !parentChange.hasChanged()) break;
if (p.mRemoteToken == null) {
// Intermediate parents must be those that has window to be managed by Shell.
continue;
diff --git a/services/core/jni/com_android_server_hint_HintManagerService.cpp b/services/core/jni/com_android_server_hint_HintManagerService.cpp
index b2bdaa35f28c..5b8ef19ea179 100644
--- a/services/core/jni/com_android_server_hint_HintManagerService.cpp
+++ b/services/core/jni/com_android_server_hint_HintManagerService.cpp
@@ -19,8 +19,11 @@
//#define LOG_NDEBUG 0
#include <aidl/android/hardware/power/IPower.h>
+#include <aidl/android/os/IHintManager.h>
#include <android-base/stringprintf.h>
-#include <inttypes.h>
+#include <android/binder_manager.h>
+#include <android/binder_parcel.h>
+#include <android/binder_parcel_utils.h>
#include <nativehelper/JNIHelp.h>
#include <nativehelper/ScopedPrimitiveArray.h>
#include <powermanager/PowerHalController.h>
@@ -43,15 +46,16 @@ namespace android {
static struct {
jclass clazz{};
jfieldID workPeriodStartTimestampNanos{};
- jfieldID actualTotalDurationNanos{};
- jfieldID actualCpuDurationNanos{};
- jfieldID actualGpuDurationNanos{};
- jfieldID timestampNanos{};
+ jfieldID durationNanos{};
+ jfieldID cpuDurationNanos{};
+ jfieldID gpuDurationNanos{};
+ jfieldID timeStampNanos{};
} gWorkDurationInfo;
static power::PowerHalController gPowerHalController;
-static std::unordered_map<jlong, std::shared_ptr<PowerHintSessionWrapper>> gSessionMap;
static std::mutex gSessionMapLock;
+static std::unordered_map<jlong, std::shared_ptr<PowerHintSessionWrapper>> gSessionMap
+ GUARDED_BY(gSessionMapLock);
static int64_t getHintSessionPreferredRate() {
int64_t rate = -1;
@@ -63,15 +67,15 @@ static int64_t getHintSessionPreferredRate() {
}
static jlong createHintSession(JNIEnv* env, int32_t tgid, int32_t uid,
- std::vector<int32_t> threadIds, int64_t durationNanos) {
+ std::vector<int32_t>& threadIds, int64_t durationNanos) {
auto result = gPowerHalController.createHintSession(tgid, uid, threadIds, durationNanos);
if (result.isOk()) {
- auto session_ptr = reinterpret_cast<jlong>(result.value().get());
- {
- std::unique_lock<std::mutex> sessionLock(gSessionMapLock);
- auto res = gSessionMap.insert({session_ptr, result.value()});
- return res.second ? session_ptr : 0;
- }
+ jlong session_ptr = reinterpret_cast<jlong>(result.value().get());
+ std::scoped_lock sessionLock(gSessionMapLock);
+ auto res = gSessionMap.insert({session_ptr, result.value()});
+ return res.second ? session_ptr : 0;
+ } else if (result.isFailed()) {
+ ALOGW("createHintSession failed with message: %s", result.errorMessage());
}
return 0;
}
@@ -89,7 +93,7 @@ static void resumeHintSession(JNIEnv* env, int64_t session_ptr) {
static void closeHintSession(JNIEnv* env, int64_t session_ptr) {
auto appSession = reinterpret_cast<PowerHintSessionWrapper*>(session_ptr);
appSession->close();
- std::unique_lock<std::mutex> sessionLock(gSessionMapLock);
+ std::scoped_lock sessionLock(gSessionMapLock);
gSessionMap.erase(session_ptr);
}
@@ -135,11 +139,8 @@ static jlong nativeCreateHintSession(JNIEnv* env, jclass /* clazz */, jint tgid,
ALOGW("GetIntArrayElements returns nullptr.");
return 0;
}
- std::vector<int32_t> threadIds(tidArray.size());
- for (size_t i = 0; i < tidArray.size(); i++) {
- threadIds[i] = tidArray[i];
- }
- return createHintSession(env, tgid, uid, std::move(threadIds), durationNanos);
+ std::vector<int32_t> threadIds(tidArray.get(), tidArray.get() + tidArray.size());
+ return createHintSession(env, tgid, uid, threadIds, durationNanos);
}
static void nativePauseHintSession(JNIEnv* env, jclass /* clazz */, jlong session_ptr) {
@@ -177,12 +178,9 @@ static void nativeSendHint(JNIEnv* env, jclass /* clazz */, jlong session_ptr, j
}
static void nativeSetThreads(JNIEnv* env, jclass /* clazz */, jlong session_ptr, jintArray tids) {
- ScopedIntArrayRO arrayThreadIds(env, tids);
+ ScopedIntArrayRO tidArray(env, tids);
- std::vector<int32_t> threadIds(arrayThreadIds.size());
- for (size_t i = 0; i < arrayThreadIds.size(); i++) {
- threadIds[i] = arrayThreadIds[i];
- }
+ std::vector<int32_t> threadIds(tidArray.get(), tidArray.get() + tidArray.size());
setThreads(session_ptr, threadIds);
}
@@ -200,13 +198,13 @@ static void nativeReportActualWorkDuration2(JNIEnv* env, jclass /* clazz */, jlo
workDurations[i].workPeriodStartTimestampNanos =
env->GetLongField(workDuration, gWorkDurationInfo.workPeriodStartTimestampNanos);
workDurations[i].durationNanos =
- env->GetLongField(workDuration, gWorkDurationInfo.actualTotalDurationNanos);
+ env->GetLongField(workDuration, gWorkDurationInfo.durationNanos);
workDurations[i].cpuDurationNanos =
- env->GetLongField(workDuration, gWorkDurationInfo.actualCpuDurationNanos);
+ env->GetLongField(workDuration, gWorkDurationInfo.cpuDurationNanos);
workDurations[i].gpuDurationNanos =
- env->GetLongField(workDuration, gWorkDurationInfo.actualGpuDurationNanos);
+ env->GetLongField(workDuration, gWorkDurationInfo.gpuDurationNanos);
workDurations[i].timeStampNanos =
- env->GetLongField(workDuration, gWorkDurationInfo.timestampNanos);
+ env->GetLongField(workDuration, gWorkDurationInfo.timeStampNanos);
}
reportActualWorkDuration(session_ptr, workDurations);
}
@@ -225,22 +223,22 @@ static const JNINativeMethod sHintManagerServiceMethods[] = {
{"nativeSendHint", "(JI)V", (void*)nativeSendHint},
{"nativeSetThreads", "(J[I)V", (void*)nativeSetThreads},
{"nativeSetMode", "(JIZ)V", (void*)nativeSetMode},
- {"nativeReportActualWorkDuration", "(J[Landroid/os/WorkDuration;)V",
+ {"nativeReportActualWorkDuration", "(J[Landroid/hardware/power/WorkDuration;)V",
(void*)nativeReportActualWorkDuration2},
};
int register_android_server_HintManagerService(JNIEnv* env) {
- gWorkDurationInfo.clazz = env->FindClass("android/os/WorkDuration");
+ gWorkDurationInfo.clazz = env->FindClass("android/hardware/power/WorkDuration");
gWorkDurationInfo.workPeriodStartTimestampNanos =
- env->GetFieldID(gWorkDurationInfo.clazz, "mWorkPeriodStartTimestampNanos", "J");
- gWorkDurationInfo.actualTotalDurationNanos =
- env->GetFieldID(gWorkDurationInfo.clazz, "mActualTotalDurationNanos", "J");
- gWorkDurationInfo.actualCpuDurationNanos =
- env->GetFieldID(gWorkDurationInfo.clazz, "mActualCpuDurationNanos", "J");
- gWorkDurationInfo.actualGpuDurationNanos =
- env->GetFieldID(gWorkDurationInfo.clazz, "mActualGpuDurationNanos", "J");
- gWorkDurationInfo.timestampNanos =
- env->GetFieldID(gWorkDurationInfo.clazz, "mTimestampNanos", "J");
+ env->GetFieldID(gWorkDurationInfo.clazz, "workPeriodStartTimestampNanos", "J");
+ gWorkDurationInfo.durationNanos =
+ env->GetFieldID(gWorkDurationInfo.clazz, "durationNanos", "J");
+ gWorkDurationInfo.cpuDurationNanos =
+ env->GetFieldID(gWorkDurationInfo.clazz, "cpuDurationNanos", "J");
+ gWorkDurationInfo.gpuDurationNanos =
+ env->GetFieldID(gWorkDurationInfo.clazz, "gpuDurationNanos", "J");
+ gWorkDurationInfo.timeStampNanos =
+ env->GetFieldID(gWorkDurationInfo.clazz, "timeStampNanos", "J");
return jniRegisterNativeMethods(env,
"com/android/server/power/hint/"
diff --git a/services/permission/java/com/android/server/permission/access/AccessCheckingService.kt b/services/permission/java/com/android/server/permission/access/AccessCheckingService.kt
index fd2e8c8fc9e7..f957bab435f5 100644
--- a/services/permission/java/com/android/server/permission/access/AccessCheckingService.kt
+++ b/services/permission/java/com/android/server/permission/access/AccessCheckingService.kt
@@ -106,8 +106,6 @@ class AccessCheckingService(context: Context) : SystemService(context) {
persistence.read(state)
this.state = state
- mutateState { with(policy) { onInitialized() } }
-
appOpService.initialize()
permissionService.initialize()
}
diff --git a/services/permission/java/com/android/server/permission/access/AccessPolicy.kt b/services/permission/java/com/android/server/permission/access/AccessPolicy.kt
index 29fe95c1e252..36bea7d2eea2 100644
--- a/services/permission/java/com/android/server/permission/access/AccessPolicy.kt
+++ b/services/permission/java/com/android/server/permission/access/AccessPolicy.kt
@@ -98,10 +98,6 @@ private constructor(
forEachSchemePolicy { with(it) { onStateMutated() } }
}
- fun MutateStateScope.onInitialized() {
- forEachSchemePolicy { with(it) { onInitialized() } }
- }
-
fun MutateStateScope.onUserAdded(userId: Int) {
newState.mutateExternalState().mutateUserIds() += userId
newState.mutateUserStatesNoWrite()[userId] = MutableUserState()
@@ -443,8 +439,6 @@ abstract class SchemePolicy {
open fun GetStateScope.onStateMutated() {}
- open fun MutateStateScope.onInitialized() {}
-
open fun MutateStateScope.onUserAdded(userId: Int) {}
open fun MutateStateScope.onUserRemoved(userId: Int) {}
diff --git a/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPersistence.kt b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPersistence.kt
index 1f40f01ffef4..4a9da90b2ab3 100644
--- a/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPersistence.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPersistence.kt
@@ -101,10 +101,6 @@ class AppIdPermissionPersistence {
val type = getAttributeIntOrThrow(ATTR_TYPE)
when (type) {
Permission.TYPE_MANIFEST -> {}
- Permission.TYPE_CONFIG -> {
- Slog.w(LOG_TAG, "Ignoring unexpected config permission $name")
- return
- }
Permission.TYPE_DYNAMIC -> {
permissionInfo.apply {
icon = getAttributeIntHexOrDefault(ATTR_ICON, 0)
@@ -134,20 +130,11 @@ class AppIdPermissionPersistence {
}
private fun BinaryXmlSerializer.serializePermission(permission: Permission) {
- val type = permission.type
- when (type) {
- Permission.TYPE_MANIFEST,
- Permission.TYPE_DYNAMIC -> {}
- Permission.TYPE_CONFIG -> return
- else -> {
- Slog.w(LOG_TAG, "Skipping serializing permission $name with unknown type $type")
- return
- }
- }
tag(TAG_PERMISSION) {
attributeInterned(ATTR_NAME, permission.name)
attributeInterned(ATTR_PACKAGE_NAME, permission.packageName)
attributeIntHex(ATTR_PROTECTION_LEVEL, permission.protectionLevel)
+ val type = permission.type
attributeInt(ATTR_TYPE, type)
if (type == Permission.TYPE_DYNAMIC) {
val permissionInfo = permission.permissionInfo
diff --git a/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt
index 761874042be8..47fd970c760e 100644
--- a/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt
@@ -79,46 +79,6 @@ class AppIdPermissionPolicy : SchemePolicy() {
onPermissionFlagsChangedListeners.forEachIndexed { _, it -> it.onStateMutated() }
}
- override fun MutateStateScope.onInitialized() {
- if (!Flags.newPermissionGidEnabled()) {
- newState.externalState.configPermissions.forEach { (permissionName, permissionEntry) ->
- val oldPermission = newState.systemState.permissions[permissionName]
- val newPermission =
- if (oldPermission != null) {
- if (permissionEntry.gids != null) {
- oldPermission.copy(
- gids = permissionEntry.gids,
- areGidsPerUser = permissionEntry.perUser
- )
- } else {
- return@forEach
- }
- } else {
- @Suppress("DEPRECATION")
- val permissionInfo =
- PermissionInfo().apply {
- name = permissionName
- packageName = PLATFORM_PACKAGE_NAME
- protectionLevel = PermissionInfo.PROTECTION_SIGNATURE
- }
- if (permissionEntry.gids != null) {
- Permission(
- permissionInfo,
- false,
- Permission.TYPE_CONFIG,
- 0,
- permissionEntry.gids,
- permissionEntry.perUser
- )
- } else {
- Permission(permissionInfo, false, Permission.TYPE_CONFIG, 0)
- }
- }
- newState.mutateSystemState().mutatePermissions()[permissionName] = newPermission
- }
- }
- }
-
override fun MutateStateScope.onUserAdded(userId: Int) {
newState.externalState.packageStates.forEach { (_, packageState) ->
evaluateAllPermissionStatesForPackageAndUser(packageState, userId, null)
@@ -507,6 +467,7 @@ class AppIdPermissionPolicy : SchemePolicy() {
} else {
newState.systemState.permissions[permissionName]
}
+
// Different from the old implementation, which may add an (incomplete) signature
// permission inside another package's permission tree, we now consistently ignore such
// permissions.
@@ -521,8 +482,9 @@ class AppIdPermissionPolicy : SchemePolicy() {
)
return@forEachIndexed
}
- var newPermission =
- if (oldPermission != null && newPackageName != oldPermission.packageName) {
+
+ if (oldPermission != null) {
+ if (newPackageName != oldPermission.packageName) {
val oldPackageName = oldPermission.packageName
// Only allow system apps to redefine non-system permissions.
if (!packageState.isSystem) {
@@ -534,45 +496,7 @@ class AppIdPermissionPolicy : SchemePolicy() {
)
return@forEachIndexed
}
- if (
- oldPermission.type == Permission.TYPE_CONFIG && !oldPermission.isReconciled
- ) {
- // It's a config permission and has no owner, take ownership now.
- oldPermission.copy(
- permissionInfo = newPermissionInfo,
- isReconciled = true,
- type = Permission.TYPE_MANIFEST,
- appId = packageState.appId
- )
- } else if (
- newState.externalState.packageStates[oldPackageName]?.isSystem != true
- ) {
- Slog.w(
- LOG_TAG,
- "Overriding permission $permissionName with new declaration in" +
- " system package $newPackageName: originally declared in another" +
- " package $oldPackageName"
- )
- // Remove permission state on owner change.
- newState.externalState.userIds.forEachIndexed { _, userId ->
- newState.externalState.appIdPackageNames.forEachIndexed { _, appId, _ ->
- setPermissionFlags(appId, userId, permissionName, 0)
- }
- }
- // Different from the old implementation, which removes the GIDs upon
- // permission
- // override, but adds them back on the next boot, we now just consistently
- // keep
- // the GIDs.
- Permission(
- newPermissionInfo,
- true,
- Permission.TYPE_MANIFEST,
- packageState.appId,
- oldPermission.gids,
- oldPermission.areGidsPerUser
- )
- } else {
+ if (newState.externalState.packageStates[oldPackageName]?.isSystem == true) {
Slog.w(
LOG_TAG,
"Ignoring permission $permissionName declared in system package" +
@@ -581,84 +505,72 @@ class AppIdPermissionPolicy : SchemePolicy() {
)
return@forEachIndexed
}
- } else {
- if (oldPermission != null && oldPermission.isReconciled) {
- val isPermissionGroupChanged =
- newPermissionInfo.isRuntime &&
- newPermissionInfo.group != null &&
- newPermissionInfo.group != oldPermission.groupName
- val isPermissionProtectionChanged =
- oldPermission.type != Permission.TYPE_CONFIG &&
- ((newPermissionInfo.isRuntime && !oldPermission.isRuntime) ||
- (newPermissionInfo.isInternal && !oldPermission.isInternal))
- if (isPermissionGroupChanged || isPermissionProtectionChanged) {
- newState.externalState.userIds.forEachIndexed { _, userId ->
- newState.externalState.appIdPackageNames.forEachIndexed {
- _,
- appId,
- _ ->
- if (isPermissionGroupChanged) {
- // We might auto-grant permissions if any permission of
- // the group is already granted. Hence if the group of
- // a granted permission changes we need to revoke it to
- // avoid having permissions of the new group auto-granted.
- Slog.w(
- LOG_TAG,
- "Revoking runtime permission $permissionName for" +
- " appId $appId and userId $userId as the permission" +
- " group changed from ${oldPermission.groupName}" +
- " to ${newPermissionInfo.group}"
- )
- }
- if (isPermissionProtectionChanged) {
- Slog.w(
- LOG_TAG,
- "Revoking permission $permissionName for" +
- " appId $appId and userId $userId as the permission" +
- " protection changed."
- )
- }
- setPermissionFlags(appId, userId, permissionName, 0)
+ Slog.w(
+ LOG_TAG,
+ "Overriding permission $permissionName with new declaration in" +
+ " system package $newPackageName: originally declared in another" +
+ " package $oldPackageName"
+ )
+ // Remove permission state on owner change.
+ newState.externalState.userIds.forEachIndexed { _, userId ->
+ newState.externalState.appIdPackageNames.forEachIndexed { _, appId, _ ->
+ setPermissionFlags(appId, userId, permissionName, 0)
+ }
+ }
+ } else if (oldPermission.isReconciled) {
+ val isPermissionGroupChanged =
+ newPermissionInfo.isRuntime &&
+ newPermissionInfo.group != null &&
+ newPermissionInfo.group != oldPermission.groupName
+ val isPermissionProtectionChanged =
+ (newPermissionInfo.isRuntime && !oldPermission.isRuntime) ||
+ (newPermissionInfo.isInternal && !oldPermission.isInternal)
+ if (isPermissionGroupChanged || isPermissionProtectionChanged) {
+ newState.externalState.userIds.forEachIndexed { _, userId ->
+ newState.externalState.appIdPackageNames.forEachIndexed { _, appId, _ ->
+ if (isPermissionGroupChanged) {
+ // We might auto-grant permissions if any permission of
+ // the group is already granted. Hence if the group of
+ // a granted permission changes we need to revoke it to
+ // avoid having permissions of the new group auto-granted.
+ Slog.w(
+ LOG_TAG,
+ "Revoking runtime permission $permissionName for" +
+ " appId $appId and userId $userId as the permission" +
+ " group changed from ${oldPermission.groupName}" +
+ " to ${newPermissionInfo.group}"
+ )
+ }
+ if (isPermissionProtectionChanged) {
+ Slog.w(
+ LOG_TAG,
+ "Revoking permission $permissionName for" +
+ " appId $appId and userId $userId as the permission" +
+ " protection changed."
+ )
}
+ setPermissionFlags(appId, userId, permissionName, 0)
}
}
}
-
- // Different from the old implementation, which doesn't update the permission
- // definition upon app update, but does update it on the next boot, we now
- // consistently update the permission definition upon app update.
- @Suppress("IfThenToElvis")
- if (oldPermission != null) {
- oldPermission.copy(
- permissionInfo = newPermissionInfo,
- isReconciled = true,
- type = Permission.TYPE_MANIFEST,
- appId = packageState.appId
- )
- } else {
- Permission(
- newPermissionInfo,
- true,
- Permission.TYPE_MANIFEST,
- packageState.appId
- )
- }
}
- if (Flags.newPermissionGidEnabled()) {
- var gids = EmptyArray.INT
- var areGidsPerUser = false
- if (!parsedPermission.isTree && packageState.isSystem) {
- newState.externalState.configPermissions[permissionName]?.let {
- // PermissionEntry.gids may return null when parsing legacy config trying
- // to work around an issue about upgrading from L platfrm. We can just
- // ignore such entries now.
- if (it.gids != null) {
- gids = it.gids
- areGidsPerUser = it.perUser
- }
+ }
+
+ var gids = EmptyArray.INT
+ var areGidsPerUser = false
+ if (!parsedPermission.isTree && packageState.isSystem) {
+ newState.externalState.configPermissions[permissionName]?.let {
+ // PermissionEntry.gids may return null when parsing legacy config trying
+ // to work around an issue about upgrading from L platfrm. We can just
+ // ignore such entries now.
+ if (it.gids != null) {
+ gids = it.gids
+ areGidsPerUser = it.perUser
}
}
- newPermission = Permission(
+ }
+ val newPermission =
+ Permission(
newPermissionInfo,
true,
Permission.TYPE_MANIFEST,
@@ -666,7 +578,6 @@ class AppIdPermissionPolicy : SchemePolicy() {
gids,
areGidsPerUser
)
- }
if (parsedPermission.isTree) {
newState.mutateSystemState().mutatePermissionTrees()[permissionName] = newPermission
diff --git a/services/permission/java/com/android/server/permission/access/permission/Permission.kt b/services/permission/java/com/android/server/permission/access/permission/Permission.kt
index aa569280eadf..4d806e0be9c8 100644
--- a/services/permission/java/com/android/server/permission/access/permission/Permission.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/Permission.kt
@@ -162,15 +162,12 @@ data class Permission(
companion object {
// The permission is defined in an application manifest.
const val TYPE_MANIFEST = 0
- // The permission is defined in a system config.
- const val TYPE_CONFIG = 1
// The permission is defined dynamically.
const val TYPE_DYNAMIC = 2
fun typeToString(type: Int): String =
when (type) {
TYPE_MANIFEST -> "TYPE_MANIFEST"
- TYPE_CONFIG -> "TYPE_CONFIG"
TYPE_DYNAMIC -> "TYPE_DYNAMIC"
else -> type.toString()
}
diff --git a/services/tests/PermissionServiceMockingTests/src/com/android/server/permission/test/AppIdPermissionPolicyPermissionDefinitionsTest.kt b/services/tests/PermissionServiceMockingTests/src/com/android/server/permission/test/AppIdPermissionPolicyPermissionDefinitionsTest.kt
index 925dad8b6661..e6e2257668c2 100644
--- a/services/tests/PermissionServiceMockingTests/src/com/android/server/permission/test/AppIdPermissionPolicyPermissionDefinitionsTest.kt
+++ b/services/tests/PermissionServiceMockingTests/src/com/android/server/permission/test/AppIdPermissionPolicyPermissionDefinitionsTest.kt
@@ -203,23 +203,6 @@ class AppIdPermissionPolicyPermissionDefinitionsTest : BasePermissionPolicyTest(
}
@Test
- fun testPermissionDefinition_configPermission_getsTakenOver() {
- testTakingOverPermissionAndPermissionGroupDefinitions(
- oldPermissionOwnerIsSystem = true,
- newPermissionOwnerIsSystem = true,
- type = Permission.TYPE_CONFIG,
- isReconciled = false
- )
-
- assertWithMessage(
- "After $action is called for a config permission with" +
- " no owner, the ownership is not taken over by a system app $PACKAGE_NAME_0"
- )
- .that(getPermission(PERMISSION_NAME_0)?.packageName)
- .isEqualTo(PACKAGE_NAME_0)
- }
-
- @Test
fun testPermissionDefinition_systemAppTakingOverPermissionDefinition_getsTakenOver() {
testTakingOverPermissionAndPermissionGroupDefinitions(newPermissionOwnerIsSystem = true)
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/ActivityManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/am/ActivityManagerServiceTest.java
index dc5b00a18d7b..a7430e563904 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/ActivityManagerServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/ActivityManagerServiceTest.java
@@ -29,6 +29,8 @@ import static android.app.ActivityManager.PROCESS_STATE_TOP;
import static android.app.ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND;
import static android.app.ActivityManager.PROCESS_STATE_UNKNOWN;
import static android.os.PowerExemptionManager.REASON_DENIED;
+import static android.content.ContentResolver.SCHEME_CONTENT;
+import static android.os.UserHandle.USER_ALL;
import static android.util.DebugUtils.valueToString;
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
@@ -39,6 +41,7 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSess
import static com.android.dx.mockito.inline.extended.ExtendedMockito.when;
import static com.android.server.am.ActivityManagerInternalTest.CustomThread;
import static com.android.server.am.ActivityManagerService.Injector;
+import static com.android.server.am.Flags.FLAG_AVOID_RESOLVING_TYPE;
import static com.android.server.am.ProcessList.NETWORK_STATE_BLOCK;
import static com.android.server.am.ProcessList.NETWORK_STATE_NO_CHANGE;
import static com.android.server.am.ProcessList.NETWORK_STATE_UNBLOCK;
@@ -66,6 +69,9 @@ import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.verifyZeroInteractions;
@@ -83,14 +89,18 @@ import android.app.Notification;
import android.app.NotificationChannel;
import android.app.SyncNotedAppOp;
import android.content.ComponentName;
+import android.content.ContentResolver;
import android.content.Context;
+import android.content.ContextWrapper;
import android.content.Intent;
+import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManagerInternal;
import android.content.pm.ServiceInfo;
import android.graphics.drawable.Icon;
+import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
@@ -181,11 +191,15 @@ public class ActivityManagerServiceTest {
private static final String APPLY_SDK_SANDBOX_NEXT_RESTRICTIONS = ":isSdkSandboxNext";
private static final int TEST_UID = 11111;
private static final int TEST_PID = 22222;
+ private static final String TEST_PACKAGE = "com.test.package";
private static final int USER_ID = 666;
private static final long TEST_PROC_STATE_SEQ1 = 555;
private static final long TEST_PROC_STATE_SEQ2 = 556;
+ private static final String TEST_AUTHORITY = "test_authority";
+ private static final String TEST_MIME_TYPE = "application/test_type";
+
private static final int[] UID_RECORD_CHANGES = {
UidRecord.CHANGE_PROCSTATE,
UidRecord.CHANGE_GONE,
@@ -214,7 +228,7 @@ public class ActivityManagerServiceTest {
@Mock private PackageManagerInternal mPackageManagerInternal;
@Mock private ActivityTaskManagerInternal mActivityTaskManagerInternal;
@Mock private NotificationManagerInternal mNotificationManagerInternal;
-
+ @Mock private ContentResolver mContentResolver;
private TestInjector mInjector;
private ActivityManagerService mAms;
@@ -246,7 +260,7 @@ public class ActivityManagerServiceTest {
mHandlerThread = new HandlerThread(TAG);
mHandlerThread.start();
mHandler = new TestHandler(mHandlerThread.getLooper());
- mInjector = new TestInjector(mContext);
+ mInjector = new TestInjector(new TestContext(mContext, mContentResolver));
doAnswer(invocation -> {
final int userId = invocation.getArgument(2);
return userId;
@@ -495,20 +509,27 @@ public class ActivityManagerServiceTest {
@SuppressWarnings("GuardedBy")
private UidRecord addUidRecord(int uid) {
+ return addUidRecord(uid, "");
+ }
+
+ @SuppressWarnings("GuardedBy")
+ private UidRecord addUidRecord(int uid, String packageName) {
final UidRecord uidRec = new UidRecord(uid, mAms);
uidRec.procStateSeqWaitingForNetwork = 1;
uidRec.hasInternetPermission = true;
mAms.mProcessList.mActiveUids.put(uid, uidRec);
ApplicationInfo info = new ApplicationInfo();
- info.packageName = "";
+ info.packageName = packageName;
+ info.processName = packageName;
info.uid = uid;
- final ProcessRecord appRec = new ProcessRecord(mAms, info, TAG, uid);
+ final ProcessRecord appRec = new ProcessRecord(mAms, info, info.processName, uid);
final ProcessStatsService tracker = mAms.mProcessStats;
final IApplicationThread appThread = mock(IApplicationThread.class);
doReturn(mock(IBinder.class)).when(appThread).asBinder();
appRec.makeActive(appThread, tracker);
+ mAms.mProcessList.addProcessNameLocked(appRec);
mAms.mProcessList.getLruProcessesLSP().add(appRec);
return uidRec;
@@ -877,31 +898,71 @@ public class ActivityManagerServiceTest {
broadcastIntent(intent1, null, true);
assertStickyBroadcasts(mAms.getStickyBroadcastsForTest(TEST_ACTION1, TEST_USER),
- StickyBroadcast.create(intent1, false, Process.myUid(), PROCESS_STATE_UNKNOWN));
+ StickyBroadcast.create(intent1, false, Process.myUid(), PROCESS_STATE_UNKNOWN,
+ null));
assertNull(mAms.getStickyBroadcastsForTest(TEST_ACTION2, TEST_USER));
assertNull(mAms.getStickyBroadcastsForTest(TEST_ACTION3, TEST_USER));
broadcastIntent(intent2, options.toBundle(), true);
assertStickyBroadcasts(mAms.getStickyBroadcastsForTest(TEST_ACTION1, TEST_USER),
- StickyBroadcast.create(intent1, false, Process.myUid(), PROCESS_STATE_UNKNOWN));
+ StickyBroadcast.create(intent1, false, Process.myUid(), PROCESS_STATE_UNKNOWN,
+ null));
assertStickyBroadcasts(mAms.getStickyBroadcastsForTest(TEST_ACTION2, TEST_USER),
- StickyBroadcast.create(intent2, true, Process.myUid(), PROCESS_STATE_UNKNOWN));
+ StickyBroadcast.create(intent2, true, Process.myUid(), PROCESS_STATE_UNKNOWN,
+ null));
assertNull(mAms.getStickyBroadcastsForTest(TEST_ACTION3, TEST_USER));
broadcastIntent(intent3, null, true);
assertStickyBroadcasts(mAms.getStickyBroadcastsForTest(TEST_ACTION1, TEST_USER),
- StickyBroadcast.create(intent1, false, Process.myUid(), PROCESS_STATE_UNKNOWN));
+ StickyBroadcast.create(intent1, false, Process.myUid(), PROCESS_STATE_UNKNOWN,
+ null));
assertStickyBroadcasts(mAms.getStickyBroadcastsForTest(TEST_ACTION2, TEST_USER),
- StickyBroadcast.create(intent2, true, Process.myUid(), PROCESS_STATE_UNKNOWN));
+ StickyBroadcast.create(intent2, true, Process.myUid(), PROCESS_STATE_UNKNOWN,
+ null));
assertStickyBroadcasts(mAms.getStickyBroadcastsForTest(TEST_ACTION3, TEST_USER),
- StickyBroadcast.create(intent3, false, Process.myUid(), PROCESS_STATE_UNKNOWN));
+ StickyBroadcast.create(intent3, false, Process.myUid(), PROCESS_STATE_UNKNOWN,
+ null));
+ }
+
+ @RequiresFlagsEnabled(FLAG_AVOID_RESOLVING_TYPE)
+ @Test
+ @SuppressWarnings("GuardedBy")
+ public void testBroadcastStickyIntent_verifyTypeNotResolved() throws Exception {
+ final Intent intent = new Intent(TEST_ACTION1);
+ final Uri uri = new Uri.Builder()
+ .scheme(SCHEME_CONTENT)
+ .authority(TEST_AUTHORITY)
+ .path("green")
+ .build();
+ intent.setData(uri);
+ broadcastIntent(intent, null, true, TEST_MIME_TYPE, USER_ALL);
+ assertStickyBroadcasts(mAms.getStickyBroadcastsForTest(TEST_ACTION1, USER_ALL),
+ StickyBroadcast.create(intent, false, Process.myUid(), PROCESS_STATE_UNKNOWN,
+ TEST_MIME_TYPE));
+ when(mContentResolver.getType(uri)).thenReturn(TEST_MIME_TYPE);
+
+ addUidRecord(TEST_UID, TEST_PACKAGE);
+ final ProcessRecord procRecord = mAms.getProcessRecordLocked(TEST_PACKAGE, TEST_UID);
+ final IntentFilter intentFilter = new IntentFilter(TEST_ACTION1);
+ intentFilter.addDataType(TEST_MIME_TYPE);
+ final Intent resultIntent = mAms.registerReceiverWithFeature(procRecord.getThread(),
+ TEST_PACKAGE, null, null, null, intentFilter, null, TEST_USER,
+ Context.RECEIVER_EXPORTED);
+ assertNotNull(resultIntent);
+ verify(mContentResolver, never()).getType(any());
}
@SuppressWarnings("GuardedBy")
private void broadcastIntent(Intent intent, Bundle options, boolean sticky) {
- final int res = mAms.broadcastIntentLocked(null, null, null, intent, null, null, 0,
+ broadcastIntent(intent, options, sticky, null, TEST_USER);
+ }
+
+ @SuppressWarnings("GuardedBy")
+ private void broadcastIntent(Intent intent, Bundle options, boolean sticky,
+ String resolvedType, int userId) {
+ final int res = mAms.broadcastIntentLocked(null, null, null, intent, resolvedType, null, 0,
null, null, null, null, null, 0, options, false, sticky,
- Process.myPid(), Process.myUid(), Process.myUid(), Process.myPid(), TEST_USER);
+ Process.myPid(), Process.myUid(), Process.myUid(), Process.myPid(), userId);
assertEquals(ActivityManager.BROADCAST_SUCCESS, res);
}
@@ -930,6 +991,9 @@ public class ActivityManagerServiceTest {
if (a.originalCallingUid != b.originalCallingUid) {
return false;
}
+ if (!Objects.equals(a.resolvedDataType, b.resolvedDataType)) {
+ return false;
+ }
return true;
}
@@ -1460,6 +1524,20 @@ public class ActivityManagerServiceTest {
}
}
+ private static class TestContext extends ContextWrapper {
+ private final ContentResolver mContentResolver;
+
+ TestContext(Context context, ContentResolver contentResolver) {
+ super(context);
+ mContentResolver = contentResolver;
+ }
+
+ @Override
+ public ContentResolver getContentResolver() {
+ return mContentResolver;
+ }
+ }
+
// TODO: [b/302724778] Remove manual JNI load
static {
System.loadLibrary("mockingservicestestjni");
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/BaseBroadcastQueueTest.java b/services/tests/mockingservicestests/src/com/android/server/am/BaseBroadcastQueueTest.java
index bd20ae26821e..ce281daf41c4 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/BaseBroadcastQueueTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/BaseBroadcastQueueTest.java
@@ -56,6 +56,7 @@ import com.android.server.wm.ActivityTaskManagerService;
import org.junit.Rule;
import org.mockito.Mock;
+import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import java.io.File;
@@ -160,6 +161,7 @@ public abstract class BaseBroadcastQueueTest {
realAms.mActivityTaskManager = new ActivityTaskManagerService(mContext);
realAms.mActivityTaskManager.initialize(null, null, mContext.getMainLooper());
realAms.mAtmInternal = spy(realAms.mActivityTaskManager.getAtmInternal());
+ realAms.mOomAdjuster.mCachedAppOptimizer = Mockito.mock(CachedAppOptimizer.class);
realAms.mOomAdjuster = spy(realAms.mOomAdjuster);
ExtendedMockito.doNothing().when(() -> ProcessList.setOomAdj(anyInt(), anyInt(), anyInt()));
realAms.mPackageManagerInt = mPackageManagerInt;
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java
index 66ab8076a217..420af86c4408 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java
@@ -86,7 +86,6 @@ import androidx.test.platform.app.InstrumentationRegistry;
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.mockito.ArgumentMatcher;
import org.mockito.InOrder;
@@ -2335,8 +2334,8 @@ public class BroadcastQueueTest extends BaseBroadcastQueueTest {
.isGreaterThan(getReceiverScheduledTime(prioritizedRecord, receiverBlue));
}
- @Ignore
@Test
+ @RequiresFlagsEnabled(Flags.FLAG_DEFER_OUTGOING_BROADCASTS)
public void testDeferOutgoingBroadcasts() throws Exception {
final ProcessRecord callerApp = makeActiveProcessRecord(PACKAGE_RED);
setProcessFreezable(callerApp, true /* pendingFreeze */, false /* frozen */);
@@ -2350,6 +2349,8 @@ public class BroadcastQueueTest extends BaseBroadcastQueueTest {
makeRegisteredReceiver(receiverGreenApp),
makeManifestReceiver(PACKAGE_BLUE, CLASS_BLUE),
makeManifestReceiver(PACKAGE_YELLOW, CLASS_YELLOW))));
+ // Verify that we invoke the call to freeze the caller app.
+ verify(mAms.mOomAdjuster.mCachedAppOptimizer).freezeAppAsyncImmediateLSP(callerApp);
waitForIdle();
verifyScheduleRegisteredReceiver(never(), receiverGreenApp, timeTick);
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastRecordTest.java b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastRecordTest.java
index 878b945766af..8cd0da721364 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastRecordTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastRecordTest.java
@@ -17,14 +17,7 @@
package com.android.server.am;
import static android.app.ActivityManager.PROCESS_STATE_UNKNOWN;
-import static android.app.ActivityManager.RESTRICTION_LEVEL_BACKGROUND_RESTRICTED;
-import static android.content.Intent.ACTION_BOOT_COMPLETED;
-import static android.content.Intent.ACTION_LOCKED_BOOT_COMPLETED;
-import static android.content.Intent.ACTION_TIME_CHANGED;
-
-import static com.android.server.am.BroadcastConstants.DEFER_BOOT_COMPLETED_BROADCAST_ALL;
-import static com.android.server.am.BroadcastConstants.DEFER_BOOT_COMPLETED_BROADCAST_BACKGROUND_RESTRICTED_ONLY;
-import static com.android.server.am.BroadcastConstants.DEFER_BOOT_COMPLETED_BROADCAST_NONE;
+
import static com.android.server.am.BroadcastRecord.DELIVERY_DEFERRED;
import static com.android.server.am.BroadcastRecord.DELIVERY_DELIVERED;
import static com.android.server.am.BroadcastRecord.DELIVERY_PENDING;
@@ -40,10 +33,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doReturn;
-import android.app.ActivityManagerInternal;
import android.app.BackgroundStartPrivileges;
import android.app.BroadcastOptions;
import android.content.IIntentReceiver;
@@ -57,7 +47,6 @@ import android.os.PersistableBundle;
import android.os.Process;
import android.os.UserHandle;
import android.telephony.SubscriptionManager;
-import android.util.SparseArray;
import androidx.test.filters.SmallTest;
@@ -85,14 +74,9 @@ public class BroadcastRecordTest {
private static final String TAG = "BroadcastRecordTest";
private static final int USER0 = UserHandle.USER_SYSTEM;
- private static final int USER1 = USER0 + 1;
- private static final int[] USER_LIST = new int[] {USER0, USER1};
private static final String PACKAGE1 = "pkg1";
private static final String PACKAGE2 = "pkg2";
private static final String PACKAGE3 = "pkg3";
- private static final String PACKAGE4 = "pkg4";
- private static final String[] PACKAGE_LIST = new String[] {PACKAGE1, PACKAGE2, PACKAGE3,
- PACKAGE4};
private static final int SYSTEM_UID = android.os.Process.SYSTEM_UID;
private static final int APP_UID = android.os.Process.FIRST_APPLICATION_UID;
@@ -103,7 +87,6 @@ public class BroadcastRecordTest {
private static final BroadcastOptions OPT_UNTIL_ACTIVE = BroadcastOptions.makeBasic()
.setDeferralPolicy(BroadcastOptions.DEFERRAL_POLICY_UNTIL_ACTIVE);
- @Mock ActivityManagerInternal mActivityManagerInternal;
@Mock BroadcastQueue mQueue;
@Mock ProcessRecord mProcess;
@@ -503,32 +486,6 @@ public class BroadcastRecordTest {
assertNull(verifyRemaining(recordU0, Collections.emptyList()));
}
- // Test defer BOOT_COMPLETED and LOCKED_BOOT_COMPLETED broaddcasts.
- @Test
- public void testDeferBootCompletedBroadcast() {
- testDeferBootCompletedBroadcast_defer_none(ACTION_BOOT_COMPLETED);
- testDeferBootCompletedBroadcast_defer_all(ACTION_BOOT_COMPLETED);
- testDeferBootCompletedBroadcast_defer_background_restricted_only(ACTION_BOOT_COMPLETED);
- testDeferBootCompletedBroadcast_defer_none(ACTION_LOCKED_BOOT_COMPLETED);
- testDeferBootCompletedBroadcast_defer_all(ACTION_LOCKED_BOOT_COMPLETED);
- testDeferBootCompletedBroadcast_defer_background_restricted_only(
- ACTION_LOCKED_BOOT_COMPLETED);
- }
-
- // non-BOOT_COMPLETED broadcast does not get deferred.
- @Test
- public void testNoDeferOtherBroadcast() {
- // no split for non-BOOT_COMPLETED broadcasts.
- final BroadcastRecord br = createBootCompletedBroadcastRecord(ACTION_TIME_CHANGED);
- final int origReceiversSize = br.receivers.size();
-
- SparseArray<BroadcastRecord> deferred = br.splitDeferredBootCompletedBroadcastLocked(
- mActivityManagerInternal, DEFER_BOOT_COMPLETED_BROADCAST_ALL);
- // No receivers get deferred.
- assertEquals(0, deferred.size());
- assertEquals(origReceiversSize, br.receivers.size());
- }
-
@Test
public void testMatchesDeliveryGroup() {
final List<ResolveInfo> receivers = List.of(createResolveInfo(PACKAGE1, getAppId(1)));
@@ -645,106 +602,6 @@ public class BroadcastRecordTest {
assertTrue(record3.matchesDeliveryGroup(record1));
}
- private BroadcastRecord createBootCompletedBroadcastRecord(String action) {
- final List<ResolveInfo> receivers = createReceiverInfos(PACKAGE_LIST, USER_LIST);
- final BroadcastRecord br = createBroadcastRecord(receivers, UserHandle.USER_ALL,
- new Intent(action));
- assertEquals(PACKAGE_LIST.length * USER_LIST.length, br.receivers.size());
- return br;
- }
-
- // Test type DEFER_BOOT_COMPLETED_BROADCAST_NONE, this type does not defer any receiver.
- private void testDeferBootCompletedBroadcast_defer_none(String action) {
- final BroadcastRecord br = createBootCompletedBroadcastRecord(action);
- final int origReceiversSize = br.receivers.size();
-
- SparseArray<BroadcastRecord> deferred = br.splitDeferredBootCompletedBroadcastLocked(
- mActivityManagerInternal, DEFER_BOOT_COMPLETED_BROADCAST_NONE);
- // No receivers get deferred.
- assertEquals(0, deferred.size());
- assertEquals(origReceiversSize, br.receivers.size());
- }
-
- // Test type DEFER_BOOT_COMPLETED_BROADCAST_ALL, this type defer all receivers.
- private void testDeferBootCompletedBroadcast_defer_all(String action) {
- final BroadcastRecord br = createBootCompletedBroadcastRecord(action);
-
- SparseArray<BroadcastRecord> deferred = br.splitDeferredBootCompletedBroadcastLocked(
- mActivityManagerInternal, DEFER_BOOT_COMPLETED_BROADCAST_ALL);
- // original BroadcastRecord receivers list is empty now.
- assertTrue(br.receivers.isEmpty());
-
- assertEquals(PACKAGE_LIST.length * USER_LIST.length, deferred.size());
- for (int i = 0; i < PACKAGE_LIST.length; i++) {
- for (final int userId : USER_LIST) {
- final int uid = UserHandle.getUid(userId, getAppId(i));
- assertTrue(deferred.contains(uid));
- assertEquals(1, deferred.get(uid).receivers.size());
- final ResolveInfo info = (ResolveInfo) deferred.get(uid).receivers.get(0);
- assertEquals(PACKAGE_LIST[i], info.activityInfo.applicationInfo.packageName);
- assertEquals(uid, info.activityInfo.applicationInfo.uid);
- }
- }
- }
-
- // Test type DEFER_BOOT_COMPLETED_BROADCAST_BACKGROUND_RESTRICTED_ONLY,
- // This type defers receiver whose app package is background restricted.
- private void testDeferBootCompletedBroadcast_defer_background_restricted_only(String action) {
- final BroadcastRecord br = createBootCompletedBroadcastRecord(action);
- final int origReceiversSize = br.receivers.size();
-
- // First half packages in PACKAGE_LIST, return BACKGROUND_RESTRICTED.
- for (int i = 0; i < PACKAGE_LIST.length / 2; i++) {
- for (int u = 0; u < USER_LIST.length; u++) {
- final int uid = UserHandle.getUid(USER_LIST[u], getAppId(i));
- doReturn(RESTRICTION_LEVEL_BACKGROUND_RESTRICTED).when(mActivityManagerInternal)
- .getRestrictionLevel(eq(uid));
- }
- }
-
- // the second half packages in PACKAGE_LIST, return not BACKGROUND_RESTRICTED.
- for (int i = PACKAGE_LIST.length / 2; i < PACKAGE_LIST.length; i++) {
- for (int u = 0; u < USER_LIST.length; u++) {
- final int uid = UserHandle.getUid(USER_LIST[u], getAppId(i));
- doReturn(RESTRICTION_LEVEL_BACKGROUND_RESTRICTED - 10).when(
- mActivityManagerInternal).getRestrictionLevel(eq(uid));
- }
- }
-
- SparseArray<BroadcastRecord> deferred = br.splitDeferredBootCompletedBroadcastLocked(
- mActivityManagerInternal,
- DEFER_BOOT_COMPLETED_BROADCAST_BACKGROUND_RESTRICTED_ONLY);
- // original BroadcastRecord receivers list is half now.
- assertEquals(origReceiversSize / 2, br.receivers.size());
- assertEquals(origReceiversSize / 2, deferred.size());
-
- for (int i = 0; i < PACKAGE_LIST.length / 2; i++) {
- for (int u = 0; u < USER_LIST.length; u++) {
- final int uid = UserHandle.getUid(USER_LIST[u], getAppId(i));
- assertTrue(deferred.contains(uid));
- assertEquals(1, deferred.get(uid).receivers.size());
- final ResolveInfo info = (ResolveInfo) deferred.get(uid).receivers.get(0);
- assertEquals(PACKAGE_LIST[i], info.activityInfo.applicationInfo.packageName);
- assertEquals(uid, info.activityInfo.applicationInfo.uid);
- }
- }
-
- for (int i = PACKAGE_LIST.length / 2; i < PACKAGE_LIST.length; i++) {
- for (int u = 0; u < USER_LIST.length; u++) {
- final int uid = UserHandle.getUid(USER_LIST[u], getAppId(i));
- boolean found = false;
- for (int r = 0; r < br.receivers.size(); r++) {
- final ResolveInfo info = (ResolveInfo) br.receivers.get(r);
- if (uid == info.activityInfo.applicationInfo.uid) {
- found = true;
- break;
- }
- }
- assertTrue(found);
- }
- }
- }
-
private static void cleanupDisabledPackageReceivers(BroadcastRecord record,
String packageName, int userId) {
record.cleanupDisabledPackageReceiversLocked(packageName, null /* filterByClasses */,
diff --git a/services/tests/mockingservicestests/src/com/android/server/backup/PackageManagerBackupAgentTest.java b/services/tests/mockingservicestests/src/com/android/server/backup/PackageManagerBackupAgentTest.java
index d1b6de08db51..20e198c192bf 100644
--- a/services/tests/mockingservicestests/src/com/android/server/backup/PackageManagerBackupAgentTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/backup/PackageManagerBackupAgentTest.java
@@ -55,20 +55,21 @@ public class PackageManagerBackupAgentTest {
@Rule public TemporaryFolder folder = new TemporaryFolder();
+ private PackageManager mPackageManager;
private PackageManagerBackupAgent mPackageManagerBackupAgent;
private ImmutableList<PackageInfo> mPackages;
private File mBackupData, mOldState, mNewState;
@Before
public void setUp() throws Exception {
- PackageManager packageManager = getApplicationContext().getPackageManager();
+ mPackageManager = getApplicationContext().getPackageManager();
PackageInfo existingPackageInfo =
- packageManager.getPackageInfoAsUser(
+ mPackageManager.getPackageInfoAsUser(
EXISTING_PACKAGE_NAME, PackageManager.GET_SIGNING_CERTIFICATES, USER_ID);
mPackages = ImmutableList.of(existingPackageInfo);
mPackageManagerBackupAgent =
- new PackageManagerBackupAgent(packageManager, mPackages, USER_ID);
+ new PackageManagerBackupAgent(mPackageManager, mPackages, USER_ID);
mBackupData = folder.newFile("backup_data");
mOldState = folder.newFile("old_state");
@@ -101,11 +102,8 @@ public class PackageManagerBackupAgentTest {
runBackupAgentOnBackup();
- // We shouldn't have written anything, but a known issue is that we always write the
- // ancestral record version.
ImmutableMap<String, Optional<ByteBuffer>> keyValues = getKeyValues(mBackupData);
- assertThat(keyValues.keySet())
- .containsExactly(PackageManagerBackupAgent.ANCESTRAL_RECORD_KEY);
+ assertThat(keyValues).isEmpty();
assertThat(mNewState.length()).isGreaterThan(0);
assertThat(mNewState.length()).isEqualTo(mOldState.length());
}
@@ -122,9 +120,7 @@ public class PackageManagerBackupAgentTest {
// Note that uninstalledPackageName should not exist, i.e. it did not get deleted.
ImmutableMap<String, Optional<ByteBuffer>> keyValues = getKeyValues(mBackupData);
- assertThat(keyValues.keySet())
- .containsExactly(
- PackageManagerBackupAgent.ANCESTRAL_RECORD_KEY, EXISTING_PACKAGE_NAME);
+ assertThat(keyValues.keySet()).containsExactly(EXISTING_PACKAGE_NAME);
assertThat(mNewState.length()).isGreaterThan(0);
}
@@ -133,7 +129,9 @@ public class PackageManagerBackupAgentTest {
String uninstalledPackageName = "does.not.exist";
writeLegacyStateFile(
mOldState,
- ImmutableList.of(createPackage(uninstalledPackageName, 1), mPackages.getFirst()));
+ ImmutableList.of(createPackage(uninstalledPackageName, 1), mPackages.getFirst()),
+ /* writeStateFileVersion= */ false,
+ /* writeAncestralRecordVersion= */ false);
runBackupAgentOnBackup();
@@ -147,6 +145,30 @@ public class PackageManagerBackupAgentTest {
}
@Test
+ public void onBackup_noAncestralRecordInfo_deletesUninstalledPackagesFromBackup()
+ throws Exception {
+ PackageInfo pkgNotInstalled = createPackage("does.not.exist", 2);
+ PackageInfo pkgInstalled =
+ mPackageManager.getPackageInfoAsUser(
+ EXISTING_PACKAGE_NAME, PackageManager.GET_SIGNING_CERTIFICATES, USER_ID);
+ writeLegacyStateFile(
+ mOldState,
+ ImmutableList.of(pkgInstalled, pkgNotInstalled),
+ /* writeStateFileVersion= */ true,
+ /* writeAncestralRecordVersion= */ false);
+
+ runBackupAgentOnBackup();
+
+ ImmutableMap<String, Optional<ByteBuffer>> keyValues = getKeyValues(mBackupData);
+ assertThat(keyValues.keySet())
+ .containsExactly(
+ PackageManagerBackupAgent.ANCESTRAL_RECORD_KEY,
+ pkgInstalled.packageName,
+ pkgNotInstalled.packageName);
+ assertThat(keyValues).containsEntry(pkgNotInstalled.packageName, Optional.empty());
+ }
+
+ @Test
public void onRestore_recentBackup_restoresBackup() throws Exception {
runBackupAgentOnBackup();
@@ -229,7 +251,11 @@ public class PackageManagerBackupAgentTest {
}
/** This creates a legacy state file in which {@code STATE_FILE_HEADER} was not yet present. */
- private static void writeLegacyStateFile(File stateFile, ImmutableList<PackageInfo> packages)
+ private static void writeLegacyStateFile(
+ File stateFile,
+ ImmutableList<PackageInfo> packages,
+ boolean writeStateFileVersion,
+ boolean writeAncestralRecordVersion)
throws Exception {
try (ParcelFileDescriptor stateFileDescriptor = openForWriting(stateFile);
DataOutputStream out =
@@ -237,6 +263,19 @@ public class PackageManagerBackupAgentTest {
new BufferedOutputStream(
new FileOutputStream(
stateFileDescriptor.getFileDescriptor())))) {
+
+ if (writeStateFileVersion) {
+ // state file version header
+ out.writeUTF(PackageManagerBackupAgent.STATE_FILE_HEADER);
+ out.writeInt(PackageManagerBackupAgent.STATE_FILE_VERSION);
+ }
+
+ if (writeAncestralRecordVersion) {
+ // Record the ancestral record
+ out.writeUTF(PackageManagerBackupAgent.ANCESTRAL_RECORD_KEY);
+ out.writeInt(PackageManagerBackupAgent.ANCESTRAL_RECORD_VERSION);
+ }
+
out.writeUTF(PackageManagerBackupAgent.GLOBAL_METADATA_KEY);
out.writeInt(Build.VERSION.SDK_INT);
out.writeUTF(Build.VERSION.INCREMENTAL);
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/ProxyAccessibilityServiceConnectionTest.java b/services/tests/servicestests/src/com/android/server/accessibility/ProxyAccessibilityServiceConnectionTest.java
index 6ac3658bc3b4..3d0db71ba17f 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/ProxyAccessibilityServiceConnectionTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/ProxyAccessibilityServiceConnectionTest.java
@@ -24,6 +24,13 @@ import static android.accessibilityservice.AccessibilityServiceInfo.FLAG_REQUEST
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assert.assertThrows;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
import android.accessibilityservice.AccessibilityServiceInfo;
import android.accessibilityservice.AccessibilityTrace;
import android.content.ComponentName;
@@ -33,13 +40,6 @@ import android.graphics.Color;
import android.os.Handler;
import android.view.accessibility.AccessibilityEvent;
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.junit.Assert.assertThrows;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
import com.android.server.wm.WindowManagerInternal;
import org.junit.Before;
@@ -225,7 +225,7 @@ public class ProxyAccessibilityServiceConnectionTest {
}
@Test
- public void testDisableSelf_setIllegalOperationExceptionThrown_() {
+ public void testDisableSelf_setIllegalOperationExceptionThrown() {
UnsupportedOperationException thrown =
assertThrows(
UnsupportedOperationException.class,
@@ -233,4 +233,9 @@ public class ProxyAccessibilityServiceConnectionTest {
assertThat(thrown).hasMessageThat().contains("disableSelf is not supported");
}
+
+ @Test
+ public void getInstalledAndEnabledServices_noServices_returnEmpty() {
+ assertThat(mProxyConnection.getInstalledAndEnabledServices()).isEmpty();
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/power/hint/HintManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/power/hint/HintManagerServiceTest.java
index 4ab9d3ecf624..66599e9e9125 100644
--- a/services/tests/servicestests/src/com/android/server/power/hint/HintManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/power/hint/HintManagerServiceTest.java
@@ -39,12 +39,12 @@ import static org.mockito.Mockito.when;
import android.app.ActivityManager;
import android.app.ActivityManagerInternal;
import android.content.Context;
+import android.hardware.power.WorkDuration;
import android.os.Binder;
import android.os.IBinder;
import android.os.IHintSession;
import android.os.PerformanceHintManager;
import android.os.Process;
-import android.os.WorkDuration;
import android.util.Log;
import com.android.server.FgThread;
@@ -76,6 +76,18 @@ import java.util.concurrent.locks.LockSupport;
public class HintManagerServiceTest {
private static final String TAG = "HintManagerServiceTest";
+ private static WorkDuration makeWorkDuration(
+ long timestamp, long duration, long workPeriodStartTime,
+ long cpuDuration, long gpuDuration) {
+ WorkDuration out = new WorkDuration();
+ out.timeStampNanos = timestamp;
+ out.durationNanos = duration;
+ out.workPeriodStartTimestampNanos = workPeriodStartTime;
+ out.cpuDurationNanos = cpuDuration;
+ out.gpuDurationNanos = gpuDuration;
+ return out;
+ }
+
private static final long DEFAULT_HINT_PREFERRED_RATE = 16666666L;
private static final long DEFAULT_TARGET_DURATION = 16666666L;
private static final long CONCURRENCY_TEST_DURATION_SEC = 10;
@@ -91,11 +103,11 @@ public class HintManagerServiceTest {
private static final long[] TIMESTAMPS_ZERO = new long[] {};
private static final long[] TIMESTAMPS_TWO = new long[] {1L, 2L};
private static final WorkDuration[] WORK_DURATIONS_FIVE = new WorkDuration[] {
- new WorkDuration(1L, 11L, 8L, 4L, 1L),
- new WorkDuration(2L, 13L, 8L, 6L, 2L),
- new WorkDuration(3L, 333333333L, 8L, 333333333L, 3L),
- new WorkDuration(2L, 13L, 0L, 6L, 2L),
- new WorkDuration(2L, 13L, 8L, 0L, 2L),
+ makeWorkDuration(1L, 11L, 1L, 8L, 4L),
+ makeWorkDuration(2L, 13L, 2L, 8L, 6L),
+ makeWorkDuration(3L, 333333333L, 3L, 8L, 333333333L),
+ makeWorkDuration(2L, 13L, 2L, 0L, 6L),
+ makeWorkDuration(2L, 13L, 2L, 8L, 0L),
};
@Mock private Context mContext;
@@ -621,20 +633,20 @@ public class HintManagerServiceTest {
assertThrows(IllegalArgumentException.class, () -> {
a.reportActualWorkDuration2(
- new WorkDuration[] {new WorkDuration(-1L, 11L, 8L, 4L, 1L)});
+ new WorkDuration[] {makeWorkDuration(1L, 11L, -1L, 8L, 4L)});
});
assertThrows(IllegalArgumentException.class, () -> {
- a.reportActualWorkDuration2(new WorkDuration[] {new WorkDuration(1L, 0L, 8L, 4L, 1L)});
+ a.reportActualWorkDuration2(new WorkDuration[] {makeWorkDuration(1L, 0L, 1L, 8L, 4L)});
});
assertThrows(IllegalArgumentException.class, () -> {
- a.reportActualWorkDuration2(new WorkDuration[] {new WorkDuration(1L, 11L, 0L, 0L, 1L)});
+ a.reportActualWorkDuration2(new WorkDuration[] {makeWorkDuration(1L, 11L, 1L, 0L, 0L)});
});
assertThrows(IllegalArgumentException.class, () -> {
a.reportActualWorkDuration2(
- new WorkDuration[] {new WorkDuration(1L, 11L, 8L, -1L, 1L)});
+ new WorkDuration[] {makeWorkDuration(1L, 11L, 1L, 8L, -1L)});
});
reset(mNativeWrapperMock);
diff --git a/telephony/common/com/android/internal/telephony/CarrierAppUtils.java b/telephony/common/com/android/internal/telephony/CarrierAppUtils.java
index 8531b507a92f..6482432f4049 100644
--- a/telephony/common/com/android/internal/telephony/CarrierAppUtils.java
+++ b/telephony/common/com/android/internal/telephony/CarrierAppUtils.java
@@ -33,6 +33,7 @@ import android.util.ArrayMap;
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.telephony.flags.Flags;
import com.android.internal.telephony.util.TelephonyUtils;
import java.util.ArrayList;
@@ -41,7 +42,7 @@ import java.util.Map;
import java.util.Set;
/**
- * Utilities for handling carrier applications.
+ * Utilities to control the states of the system bundled (preinstalled) carrier applications.
* @hide
*/
public final class CarrierAppUtils {
@@ -246,17 +247,27 @@ public final class CarrierAppUtils {
// Always re-grant default permissions to carrier apps w/ privileges.
enabledCarrierPackages.add(ai.packageName);
} else { // No carrier privileges
- // Only update enabled state for the app on /system. Once it has been
- // updated we shouldn't touch it.
- if (!isUpdatedSystemApp(ai) && enabledSetting
- == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
- && (ai.flags & ApplicationInfo.FLAG_INSTALLED) != 0) {
- Log.i(TAG, "Update state (" + packageName
- + "): DISABLED_UNTIL_USED for user " + userId);
- context.createContextAsUser(UserHandle.of(userId), 0)
- .getPackageManager()
- .setSystemAppState(
- packageName, PackageManager.SYSTEM_APP_STATE_UNINSTALLED);
+ // Only uninstall system carrier apps that fulfill ALL conditions below:
+ // 1. It has no carrier privileges
+ // 2. It has never been uninstalled before (i.e. we uninstall at most once)
+ // 3. It has not been installed as an update from its system built-in version
+ // 4. It is in default state (not explicitly DISABLED/DISABLED_BY_USER/ENABLED)
+ // 5. It is currently installed for the calling user
+ // TODO(b/329739019):
+ // 1. Merge the nested if conditions below during flag cleaning up phase
+ // 2. Support user case that NEW carrier app is added during OTA, when emerge.
+ if (!Flags.hidePreinstalledCarrierAppAtMostOnce() || !hasRunEver) {
+ if (!isUpdatedSystemApp(ai) && enabledSetting
+ == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
+ && (ai.flags & ApplicationInfo.FLAG_INSTALLED) != 0) {
+ Log.i(TAG, "Update state (" + packageName
+ + "): DISABLED_UNTIL_USED for user " + userId);
+ context.createContextAsUser(UserHandle.of(userId), 0)
+ .getPackageManager()
+ .setSystemAppState(
+ packageName,
+ PackageManager.SYSTEM_APP_STATE_UNINSTALLED);
+ }
}
// Associated apps are more brittle, because we can't rely on the distinction
diff --git a/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/EmbeddedWindowService.java b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/EmbeddedWindowService.java
index 0fb4f90f354f..56fb30ccca9c 100644
--- a/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/EmbeddedWindowService.java
+++ b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/EmbeddedWindowService.java
@@ -135,7 +135,7 @@ public class EmbeddedWindowService extends Service {
c.drawText("Remote", 250, 250, paint);
surface.unlockCanvasAndPost(c);
WindowManager wm = getSystemService(WindowManager.class);
- wm.registerBatchedSurfaceControlInputReceiver(displayId, inputTransferToken,
+ wm.registerBatchedSurfaceControlInputReceiver(inputTransferToken,
mSurfaceControl,
Choreographer.getInstance(), event -> {
Log.d(TAG, "onInputEvent-remote " + event);
diff --git a/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/SurfaceInputTestActivity.java b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/SurfaceInputTestActivity.java
index e700bc2f3d21..ac7dc9e2f31f 100644
--- a/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/SurfaceInputTestActivity.java
+++ b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/SurfaceInputTestActivity.java
@@ -138,7 +138,7 @@ public class SurfaceInputTestActivity extends Activity {
c.drawText("Local SC", 0, 0, paint);
surface.unlockCanvasAndPost(c);
WindowManager wm = getSystemService(WindowManager.class);
- wm.registerBatchedSurfaceControlInputReceiver(getDisplayId(),
+ wm.registerBatchedSurfaceControlInputReceiver(
attachedSurfaceControl.getInputTransferToken(), mLocalSurfaceControl,
Choreographer.getInstance(), event -> {
Log.d(TAG, "onInputEvent-sc " + event);
@@ -159,7 +159,7 @@ public class SurfaceInputTestActivity extends Activity {
holder.unlockCanvasAndPost(c);
WindowManager wm = getSystemService(WindowManager.class);
- wm.registerBatchedSurfaceControlInputReceiver(getDisplayId(),
+ wm.registerBatchedSurfaceControlInputReceiver(
mLocalSurfaceView.getRootSurfaceControl().getInputTransferToken(),
mLocalSurfaceView.getSurfaceControl(),
Choreographer.getInstance(), event -> {