summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apex/blobstore/framework/java/android/app/blob/BlobStoreManagerFrameworkInitializer.java2
-rw-r--r--apex/jobscheduler/framework/java/android/app/DeviceIdleFrameworkInitializer.java35
-rw-r--r--apex/jobscheduler/framework/java/android/app/job/JobSchedulerFrameworkInitializer.java22
-rw-r--r--apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java13
-rw-r--r--apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java2
-rw-r--r--api/current.txt37
-rw-r--r--api/system-current.txt130
-rw-r--r--api/system-lint-baseline.txt27
-rw-r--r--api/test-current.txt2
-rw-r--r--core/java/android/app/IWallpaperManager.aidl10
-rw-r--r--core/java/android/app/SystemServiceRegistry.java234
-rw-r--r--core/java/android/app/WallpaperManager.java9
-rw-r--r--core/java/android/app/admin/DevicePolicyManager.java18
-rw-r--r--core/java/android/bluetooth/BluetoothDevice.java18
-rw-r--r--core/java/android/content/Context.java30
-rw-r--r--core/java/android/content/pm/UserInfo.java3
-rw-r--r--core/java/android/hardware/biometrics/BiometricManager.java4
-rw-r--r--core/java/android/hardware/biometrics/IAuthService.aidl51
-rw-r--r--core/java/android/hardware/biometrics/IBiometricService.aidl5
-rw-r--r--core/java/android/hardware/display/BrightnessChangeEvent.java6
-rw-r--r--core/java/android/hardware/display/BrightnessConfiguration.java54
-rw-r--r--core/java/android/net/StaticIpConfiguration.java9
-rw-r--r--core/java/android/net/util/MultinetworkPolicyTracker.java3
-rw-r--r--core/java/android/os/storage/StorageManager.java96
-rw-r--r--core/java/android/provider/Settings.java71
-rw-r--r--core/java/android/view/ViewRootImpl.java7
-rw-r--r--core/java/com/android/internal/compat/IPlatformCompat.aidl25
-rw-r--r--core/java/com/android/internal/util/ScreenshotHelper.java11
-rw-r--r--core/java/com/android/internal/widget/DecorCaptionView.java2
-rw-r--r--core/res/AndroidManifest.xml21
-rw-r--r--core/res/res/values-af/strings.xml33
-rw-r--r--core/res/res/values-am/strings.xml32
-rw-r--r--core/res/res/values-ar/strings.xml33
-rw-r--r--core/res/res/values-as/strings.xml39
-rw-r--r--core/res/res/values-az/strings.xml33
-rw-r--r--core/res/res/values-b+sr+Latn/strings.xml32
-rw-r--r--core/res/res/values-be/strings.xml33
-rw-r--r--core/res/res/values-bg/strings.xml33
-rw-r--r--core/res/res/values-bn/strings.xml33
-rw-r--r--core/res/res/values-bs/strings.xml36
-rw-r--r--core/res/res/values-ca/strings.xml33
-rw-r--r--core/res/res/values-cs/strings.xml33
-rw-r--r--core/res/res/values-da/strings.xml35
-rw-r--r--core/res/res/values-de/strings.xml39
-rw-r--r--core/res/res/values-el/strings.xml32
-rw-r--r--core/res/res/values-en-rAU/strings.xml32
-rw-r--r--core/res/res/values-en-rCA/strings.xml32
-rw-r--r--core/res/res/values-en-rGB/strings.xml32
-rw-r--r--core/res/res/values-en-rIN/strings.xml32
-rw-r--r--core/res/res/values-en-rXC/strings.xml5
-rw-r--r--core/res/res/values-es-rUS/strings.xml33
-rw-r--r--core/res/res/values-es/strings.xml32
-rw-r--r--core/res/res/values-et/strings.xml35
-rw-r--r--core/res/res/values-eu/strings.xml33
-rw-r--r--core/res/res/values-fa/strings.xml33
-rw-r--r--core/res/res/values-fi/strings.xml33
-rw-r--r--core/res/res/values-fr-rCA/strings.xml33
-rw-r--r--core/res/res/values-fr/strings.xml33
-rw-r--r--core/res/res/values-gl/strings.xml33
-rw-r--r--core/res/res/values-gu/strings.xml37
-rw-r--r--core/res/res/values-hi/strings.xml41
-rw-r--r--core/res/res/values-hr/strings.xml32
-rw-r--r--core/res/res/values-hu/strings.xml33
-rw-r--r--core/res/res/values-hy/strings.xml33
-rw-r--r--core/res/res/values-in/strings.xml32
-rw-r--r--core/res/res/values-is/strings.xml39
-rw-r--r--core/res/res/values-it/strings.xml33
-rw-r--r--core/res/res/values-iw/strings.xml33
-rw-r--r--core/res/res/values-ja/strings.xml32
-rw-r--r--core/res/res/values-ka/strings.xml38
-rw-r--r--core/res/res/values-kk/strings.xml33
-rw-r--r--core/res/res/values-km/strings.xml32
-rw-r--r--core/res/res/values-kn/strings.xml41
-rw-r--r--core/res/res/values-ko/strings.xml33
-rw-r--r--core/res/res/values-ky/strings.xml33
-rw-r--r--core/res/res/values-lo/strings.xml32
-rw-r--r--core/res/res/values-lt/strings.xml33
-rw-r--r--core/res/res/values-lv/strings.xml33
-rw-r--r--core/res/res/values-mk/strings.xml33
-rw-r--r--core/res/res/values-ml/strings.xml41
-rw-r--r--core/res/res/values-mn/strings.xml33
-rw-r--r--core/res/res/values-mr/strings.xml39
-rw-r--r--core/res/res/values-ms/strings.xml33
-rw-r--r--core/res/res/values-my/strings.xml33
-rw-r--r--core/res/res/values-nb/strings.xml33
-rw-r--r--core/res/res/values-ne/strings.xml39
-rw-r--r--core/res/res/values-nl/strings.xml32
-rw-r--r--core/res/res/values-or/strings.xml39
-rw-r--r--core/res/res/values-pa/strings.xml33
-rw-r--r--core/res/res/values-pl/strings.xml46
-rw-r--r--core/res/res/values-pt-rBR/strings.xml33
-rw-r--r--core/res/res/values-pt-rPT/strings.xml33
-rw-r--r--core/res/res/values-pt/strings.xml33
-rw-r--r--core/res/res/values-ro/strings.xml32
-rw-r--r--core/res/res/values-ru/strings.xml33
-rw-r--r--core/res/res/values-si/strings.xml33
-rw-r--r--core/res/res/values-sk/strings.xml33
-rw-r--r--core/res/res/values-sl/strings.xml32
-rw-r--r--core/res/res/values-sq/strings.xml39
-rw-r--r--core/res/res/values-sr/strings.xml32
-rw-r--r--core/res/res/values-sv/strings.xml33
-rw-r--r--core/res/res/values-sw/strings.xml32
-rw-r--r--core/res/res/values-ta/strings.xml35
-rw-r--r--core/res/res/values-te/strings.xml46
-rw-r--r--core/res/res/values-th/strings.xml33
-rw-r--r--core/res/res/values-tl/strings.xml33
-rw-r--r--core/res/res/values-tr/strings.xml33
-rw-r--r--core/res/res/values-uk/strings.xml33
-rw-r--r--core/res/res/values-ur/strings.xml33
-rw-r--r--core/res/res/values-uz/strings.xml32
-rw-r--r--core/res/res/values-vi/strings.xml33
-rw-r--r--core/res/res/values-zh-rCN/strings.xml39
-rw-r--r--core/res/res/values-zh-rHK/strings.xml33
-rw-r--r--core/res/res/values-zh-rTW/strings.xml33
-rw-r--r--core/res/res/values-zu/strings.xml32
-rw-r--r--core/res/res/values/strings.xml46
-rw-r--r--core/res/res/values/symbols.xml2
-rw-r--r--core/tests/coretests/src/android/hardware/display/BrightnessConfigurationTest.java78
-rw-r--r--core/tests/screenshothelpertests/src/com/android/internal/util/ScreenshotHelperTest.java6
-rw-r--r--media/java/android/media/tv/OWNER5
-rw-r--r--media/java/android/media/tv/OWNERS3
-rw-r--r--media/java/android/media/tv/tuner/FrontendSettings.java274
-rw-r--r--media/java/android/media/tv/tuner/Tuner.java9
-rw-r--r--media/java/android/media/tv/tuner/TunerConstants.java15
-rw-r--r--media/jni/android_media_MediaDataSource.cpp5
-rw-r--r--media/jni/android_media_MediaDataSource.h1
-rw-r--r--media/jni/android_media_tv_Tuner.cpp45
-rw-r--r--media/jni/android_media_tv_Tuner.h2
-rw-r--r--packages/CarSystemUI/res/values/integers_car.xml5
-rw-r--r--packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java90
-rw-r--r--packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java11
-rw-r--r--packages/CarSystemUI/src/com/android/systemui/statusbar/car/SwitchToGuestTimer.java116
-rw-r--r--packages/SettingsLib/HelpUtils/Android.bp4
-rw-r--r--packages/SettingsLib/HelpUtils/src/com/android/settingslib/HelpUtils.java32
-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-el/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.xml5
-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-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-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/res/values/strings.xml3
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java2
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractIpAddressPreferenceController.java2
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java2
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java3
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java59
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java4
-rw-r--r--packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java4
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/HelpUtilsTest.java35
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/IpAddressPreferenceControllerTest.java2
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java2
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java2
-rw-r--r--packages/SystemUI/AndroidManifest.xml3
-rw-r--r--packages/SystemUI/res/values-af/strings.xml5
-rw-r--r--packages/SystemUI/res/values-am/strings.xml5
-rw-r--r--packages/SystemUI/res/values-ar/strings.xml7
-rw-r--r--packages/SystemUI/res/values-as/strings.xml7
-rw-r--r--packages/SystemUI/res/values-az/strings.xml7
-rw-r--r--packages/SystemUI/res/values-b+sr+Latn/strings.xml5
-rw-r--r--packages/SystemUI/res/values-be/strings.xml7
-rw-r--r--packages/SystemUI/res/values-bg/strings.xml7
-rw-r--r--packages/SystemUI/res/values-bn/strings.xml7
-rw-r--r--packages/SystemUI/res/values-bs/strings.xml5
-rw-r--r--packages/SystemUI/res/values-ca/strings.xml5
-rw-r--r--packages/SystemUI/res/values-cs/strings.xml7
-rw-r--r--packages/SystemUI/res/values-da/strings.xml5
-rw-r--r--packages/SystemUI/res/values-de/strings.xml7
-rw-r--r--packages/SystemUI/res/values-el/strings.xml5
-rw-r--r--packages/SystemUI/res/values-en-rAU/strings.xml5
-rw-r--r--packages/SystemUI/res/values-en-rCA/strings.xml5
-rw-r--r--packages/SystemUI/res/values-en-rGB/strings.xml5
-rw-r--r--packages/SystemUI/res/values-en-rIN/strings.xml5
-rw-r--r--packages/SystemUI/res/values-en-rXC/strings.xml5
-rw-r--r--packages/SystemUI/res/values-es-rUS/strings.xml5
-rw-r--r--packages/SystemUI/res/values-es/strings.xml5
-rw-r--r--packages/SystemUI/res/values-et/strings.xml7
-rw-r--r--packages/SystemUI/res/values-eu/strings.xml27
-rw-r--r--packages/SystemUI/res/values-fa/strings.xml5
-rw-r--r--packages/SystemUI/res/values-fi/strings.xml5
-rw-r--r--packages/SystemUI/res/values-fr-rCA/strings.xml7
-rw-r--r--packages/SystemUI/res/values-fr/strings.xml7
-rw-r--r--packages/SystemUI/res/values-gl/strings.xml7
-rw-r--r--packages/SystemUI/res/values-gu/strings.xml9
-rw-r--r--packages/SystemUI/res/values-hi/strings.xml9
-rw-r--r--packages/SystemUI/res/values-hr/strings.xml5
-rw-r--r--packages/SystemUI/res/values-hu/strings.xml7
-rw-r--r--packages/SystemUI/res/values-hy/strings.xml7
-rw-r--r--packages/SystemUI/res/values-in/strings.xml5
-rw-r--r--packages/SystemUI/res/values-is/strings.xml5
-rw-r--r--packages/SystemUI/res/values-it/strings.xml5
-rw-r--r--packages/SystemUI/res/values-iw/strings.xml7
-rw-r--r--packages/SystemUI/res/values-ja/strings.xml5
-rw-r--r--packages/SystemUI/res/values-ka/strings.xml5
-rw-r--r--packages/SystemUI/res/values-kk/strings.xml5
-rw-r--r--packages/SystemUI/res/values-km/strings.xml5
-rw-r--r--packages/SystemUI/res/values-kn/strings.xml9
-rw-r--r--packages/SystemUI/res/values-ko/strings.xml7
-rw-r--r--packages/SystemUI/res/values-ky/strings.xml7
-rw-r--r--packages/SystemUI/res/values-lo/strings.xml5
-rw-r--r--packages/SystemUI/res/values-lt/strings.xml5
-rw-r--r--packages/SystemUI/res/values-lv/strings.xml7
-rw-r--r--packages/SystemUI/res/values-mk/strings.xml5
-rw-r--r--packages/SystemUI/res/values-ml/strings.xml11
-rw-r--r--packages/SystemUI/res/values-mn/strings.xml7
-rw-r--r--packages/SystemUI/res/values-mr/strings.xml7
-rw-r--r--packages/SystemUI/res/values-ms/strings.xml5
-rw-r--r--packages/SystemUI/res/values-my/strings.xml7
-rw-r--r--packages/SystemUI/res/values-nb/strings.xml5
-rw-r--r--packages/SystemUI/res/values-ne/strings.xml7
-rw-r--r--packages/SystemUI/res/values-nl/strings.xml5
-rw-r--r--packages/SystemUI/res/values-or/strings.xml7
-rw-r--r--packages/SystemUI/res/values-pa/strings.xml9
-rw-r--r--packages/SystemUI/res/values-pl/strings.xml7
-rw-r--r--packages/SystemUI/res/values-pt-rBR/strings.xml5
-rw-r--r--packages/SystemUI/res/values-pt-rPT/strings.xml5
-rw-r--r--packages/SystemUI/res/values-pt/strings.xml5
-rw-r--r--packages/SystemUI/res/values-ro/strings.xml5
-rw-r--r--packages/SystemUI/res/values-ru/strings.xml5
-rw-r--r--packages/SystemUI/res/values-si/strings.xml7
-rw-r--r--packages/SystemUI/res/values-sk/strings.xml5
-rw-r--r--packages/SystemUI/res/values-sl/strings.xml5
-rw-r--r--packages/SystemUI/res/values-sq/strings.xml7
-rw-r--r--packages/SystemUI/res/values-sr/strings.xml5
-rw-r--r--packages/SystemUI/res/values-sv/strings.xml5
-rw-r--r--packages/SystemUI/res/values-sw/strings.xml5
-rw-r--r--packages/SystemUI/res/values-ta/strings.xml9
-rw-r--r--packages/SystemUI/res/values-te/strings.xml7
-rw-r--r--packages/SystemUI/res/values-th/strings.xml7
-rw-r--r--packages/SystemUI/res/values-tl/strings.xml7
-rw-r--r--packages/SystemUI/res/values-tr/strings.xml7
-rw-r--r--packages/SystemUI/res/values-uk/strings.xml5
-rw-r--r--packages/SystemUI/res/values-ur/strings.xml7
-rw-r--r--packages/SystemUI/res/values-uz/strings.xml5
-rw-r--r--packages/SystemUI/res/values-vi/strings.xml7
-rw-r--r--packages/SystemUI/res/values-zh-rCN/strings.xml7
-rw-r--r--packages/SystemUI/res/values-zh-rHK/strings.xml7
-rw-r--r--packages/SystemUI/res/values-zh-rTW/strings.xml7
-rw-r--r--packages/SystemUI/res/values-zu/strings.xml5
-rw-r--r--packages/SystemUI/src/com/android/systemui/ActivityIntentHelper.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java24
-rw-r--r--packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java21
-rw-r--r--packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/SuperStatusBarViewFactory.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/ActivityLaunchAnimator.java20
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java89
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java58
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarModule.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java174
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowViewController.java276
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java48
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java9
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java24
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallbackTest.java2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java12
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarWindowViewTest.java8
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryControllerTest.java3
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java4
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerShellCommand.java98
-rw-r--r--services/core/java/com/android/server/am/BatteryExternalStatsWorker.java2
-rw-r--r--services/core/java/com/android/server/am/BatteryStatsService.java2
-rw-r--r--services/core/java/com/android/server/biometrics/AuthService.java228
-rw-r--r--services/core/java/com/android/server/biometrics/BiometricService.java54
-rw-r--r--services/core/java/com/android/server/compat/CompatConfig.java84
-rw-r--r--services/core/java/com/android/server/compat/PlatformCompat.java81
-rw-r--r--services/core/java/com/android/server/connectivity/Tethering.java4
-rw-r--r--services/core/java/com/android/server/display/BrightnessTracker.java27
-rw-r--r--services/core/java/com/android/server/display/DisplayPowerController.java4
-rw-r--r--services/core/java/com/android/server/display/WifiDisplayController.java38
-rw-r--r--services/core/java/com/android/server/location/GnssNetworkConnectivityHandler.java6
-rw-r--r--services/core/java/com/android/server/net/NetworkStatsService.java2
-rw-r--r--services/core/java/com/android/server/wallpaper/WallpaperManagerService.java9
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java5
-rw-r--r--services/core/java/com/android/server/wm/ActivityStack.java24
-rw-r--r--services/core/java/com/android/server/wm/ActivityStackSupervisor.java10
-rw-r--r--services/core/java/com/android/server/wm/ActivityStarter.java23
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskManagerService.java14
-rw-r--r--services/core/java/com/android/server/wm/DisplayRotation.java2
-rw-r--r--services/core/java/com/android/server/wm/LockTaskController.java2
-rw-r--r--services/core/java/com/android/server/wm/RecentTasks.java4
-rw-r--r--services/core/java/com/android/server/wm/RecentsAnimation.java4
-rw-r--r--services/core/java/com/android/server/wm/RootActivityContainer.java8
-rw-r--r--services/core/java/com/android/server/wm/Task.java65
-rw-r--r--services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java3
-rw-r--r--services/core/java/com/android/server/wm/TaskPositioner.java13
-rw-r--r--services/core/java/com/android/server/wm/WindowFrames.java10
-rw-r--r--services/core/java/com/android/server/wm/WindowProcessController.java2
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java27
-rw-r--r--services/java/com/android/server/SystemServer.java6
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java23
-rw-r--r--services/tests/servicestests/src/com/android/server/biometrics/AuthServiceTest.java194
-rw-r--r--services/tests/servicestests/src/com/android/server/biometrics/BiometricServiceTest.java44
-rw-r--r--services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java54
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java59
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java271
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityStackSupervisorTests.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java6
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java10
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java8
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java4
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java426
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java29
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TestActivityDisplay.java95
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/WindowFrameTests.java16
-rwxr-xr-xtelephony/java/android/telephony/CarrierConfigManager.java8
-rw-r--r--telephony/java/android/telephony/SmsManager.java5
-rw-r--r--tests/net/java/com/android/server/connectivity/TetheringTest.java6
-rw-r--r--tests/net/java/com/android/server/net/NetworkStatsServiceTest.java4
-rw-r--r--wifi/java/android/net/wifi/WifiConfiguration.java19
-rw-r--r--wifi/java/android/net/wifi/WifiManager.java377
-rw-r--r--wifi/java/android/net/wifi/WifiScanner.java5
-rw-r--r--wifi/java/android/net/wifi/p2p/WifiP2pConfig.java38
-rw-r--r--wifi/java/android/net/wifi/p2p/WifiP2pDevice.java17
-rw-r--r--wifi/java/android/net/wifi/p2p/WifiP2pGroup.java31
-rw-r--r--wifi/java/android/net/wifi/p2p/WifiP2pGroupList.java25
-rw-r--r--wifi/java/android/net/wifi/p2p/WifiP2pManager.java155
-rw-r--r--wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java149
-rw-r--r--wifi/tests/src/android/net/wifi/WifiManagerTest.java48
-rw-r--r--wifi/tests/src/android/net/wifi/p2p/WifiP2pWfdInfoTest.java14
395 files changed, 5476 insertions, 3866 deletions
diff --git a/apex/blobstore/framework/java/android/app/blob/BlobStoreManagerFrameworkInitializer.java b/apex/blobstore/framework/java/android/app/blob/BlobStoreManagerFrameworkInitializer.java
index 6e6d6aee60fa..56c419ab0591 100644
--- a/apex/blobstore/framework/java/android/app/blob/BlobStoreManagerFrameworkInitializer.java
+++ b/apex/blobstore/framework/java/android/app/blob/BlobStoreManagerFrameworkInitializer.java
@@ -26,7 +26,7 @@ import android.content.Context;
public class BlobStoreManagerFrameworkInitializer {
/** Register the BlobStoreManager wrapper class */
public static void initialize() {
- SystemServiceRegistry.registerCachedService(
+ SystemServiceRegistry.registerContextAwareService(
Context.BLOB_STORE_SERVICE, BlobStoreManager.class,
(context, service) ->
new BlobStoreManager(context, IBlobStoreManager.Stub.asInterface(service)));
diff --git a/apex/jobscheduler/framework/java/android/app/DeviceIdleFrameworkInitializer.java b/apex/jobscheduler/framework/java/android/app/DeviceIdleFrameworkInitializer.java
deleted file mode 100644
index c264531c3947..000000000000
--- a/apex/jobscheduler/framework/java/android/app/DeviceIdleFrameworkInitializer.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.app;
-
-import android.content.Context;
-import android.os.DeviceIdleManager;
-import android.os.IDeviceIdleController;
-
-/**
- * @hide
- */
-public class DeviceIdleFrameworkInitializer {
- private static IDeviceIdleController sIDeviceIdleController;
-
- public static void initialize() {
- SystemServiceRegistry.registerCachedService(
- Context.DEVICE_IDLE_CONTROLLER, DeviceIdleManager.class,
- (context, b) -> new DeviceIdleManager(
- context, IDeviceIdleController.Stub.asInterface(b)));
- }
-}
diff --git a/apex/jobscheduler/framework/java/android/app/job/JobSchedulerFrameworkInitializer.java b/apex/jobscheduler/framework/java/android/app/job/JobSchedulerFrameworkInitializer.java
index 175e5f23f761..f3ec5e5752a0 100644
--- a/apex/jobscheduler/framework/java/android/app/job/JobSchedulerFrameworkInitializer.java
+++ b/apex/jobscheduler/framework/java/android/app/job/JobSchedulerFrameworkInitializer.java
@@ -19,14 +19,34 @@ package android.app.job;
import android.app.JobSchedulerImpl;
import android.app.SystemServiceRegistry;
import android.content.Context;
+import android.os.DeviceIdleManager;
+import android.os.IDeviceIdleController;
/**
+ * Class holding initialization code for the job scheduler module.
+ *
* @hide
*/
public class JobSchedulerFrameworkInitializer {
- public static void initialize() {
+ private JobSchedulerFrameworkInitializer() {
+ }
+
+ /**
+ * Called by {@link SystemServiceRegistry}'s static initializer and registers
+ * {@link JobScheduler} and other services to {@link Context}, so
+ * {@link Context#getSystemService} can return them.
+ *
+ * <p>If this is called from other places, it throws a {@link IllegalStateException).
+ *
+ * TODO Make it a system API
+ */
+ public static void registerServiceWrappers() {
SystemServiceRegistry.registerStaticService(
Context.JOB_SCHEDULER_SERVICE, JobScheduler.class,
(b) -> new JobSchedulerImpl(IJobScheduler.Stub.asInterface(b)));
+ SystemServiceRegistry.registerContextAwareService(
+ Context.DEVICE_IDLE_CONTROLLER, DeviceIdleManager.class,
+ (context, b) -> new DeviceIdleManager(
+ context, IDeviceIdleController.Stub.asInterface(b)));
}
}
diff --git a/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java b/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java
index 4ee46f453bca..dfe7a90ba246 100644
--- a/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java
+++ b/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java
@@ -1390,8 +1390,10 @@ public class DeviceIdleController extends SystemService
private static final int MSG_FINISH_IDLE_OP = 8;
private static final int MSG_REPORT_TEMP_APP_WHITELIST_CHANGED = 9;
private static final int MSG_SEND_CONSTRAINT_MONITORING = 10;
- private static final int MSG_UPDATE_PRE_IDLE_TIMEOUT_FACTOR = 11;
- private static final int MSG_RESET_PRE_IDLE_TIMEOUT_FACTOR = 12;
+ @VisibleForTesting
+ static final int MSG_UPDATE_PRE_IDLE_TIMEOUT_FACTOR = 11;
+ @VisibleForTesting
+ static final int MSG_RESET_PRE_IDLE_TIMEOUT_FACTOR = 12;
final class MyHandler extends Handler {
MyHandler(Looper looper) {
@@ -3327,8 +3329,7 @@ public class DeviceIdleController extends SystemService
mHandler.sendEmptyMessage(MSG_RESET_PRE_IDLE_TIMEOUT_FACTOR);
}
- @VisibleForTesting
- void updatePreIdleFactor() {
+ private void updatePreIdleFactor() {
synchronized (this) {
if (!shouldUseIdleTimeoutFactorLocked()) {
return;
@@ -3350,8 +3351,7 @@ public class DeviceIdleController extends SystemService
}
}
- @VisibleForTesting
- void maybeDoImmediateMaintenance() {
+ private void maybeDoImmediateMaintenance() {
synchronized (this) {
if (mState == STATE_IDLE) {
long duration = SystemClock.elapsedRealtime() - mIdleStartTime;
@@ -3377,6 +3377,7 @@ public class DeviceIdleController extends SystemService
void setIdleStartTimeForTest(long idleStartTime) {
synchronized (this) {
mIdleStartTime = idleStartTime;
+ maybeDoImmediateMaintenance();
}
}
diff --git a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
index a0615aac9a54..8a00c8318d58 100644
--- a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
+++ b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
@@ -1179,7 +1179,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
long token = Binder.clearCallingIdentity();
synchronized (this) {
if (mTelephony == null) {
- mTelephony = TelephonyManager.from(mContext);
+ mTelephony = mContext.getSystemService(TelephonyManager.class);
}
}
if (mTelephony != null) {
diff --git a/api/current.txt b/api/current.txt
index 7dccf7f0ecf0..336114737057 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -2035,7 +2035,7 @@ package android {
field public static final int fingerprint_icon_content_description = 17039384; // 0x1040018
field public static final int httpErrorBadUrl = 17039367; // 0x1040007
field public static final int httpErrorUnsupportedScheme = 17039368; // 0x1040008
- field public static final int no = 17039369; // 0x1040009
+ field @Deprecated public static final int no = 17039369; // 0x1040009
field public static final int ok = 17039370; // 0x104000a
field public static final int paste = 17039371; // 0x104000b
field public static final int paste_as_plain_text = 17039385; // 0x1040019
@@ -2045,7 +2045,7 @@ package android {
field public static final int status_bar_notification_info_overflow = 17039383; // 0x1040017
field public static final int unknownName = 17039374; // 0x104000e
field public static final int untitled = 17039375; // 0x104000f
- field public static final int yes = 17039379; // 0x1040013
+ field @Deprecated public static final int yes = 17039379; // 0x1040013
}
public static final class R.style {
@@ -30526,6 +30526,9 @@ package android.net.wifi.p2p {
field public static final int GROUP_OWNER_BAND_2GHZ = 1; // 0x1
field public static final int GROUP_OWNER_BAND_5GHZ = 2; // 0x2
field public static final int GROUP_OWNER_BAND_AUTO = 0; // 0x0
+ field public static final int GROUP_OWNER_INTENT_AUTO = -1; // 0xffffffff
+ field public static final int GROUP_OWNER_INTENT_MAX = 15; // 0xf
+ field public static final int GROUP_OWNER_INTENT_MIN = 0; // 0x0
field public String deviceAddress;
field public int groupOwnerIntent;
field public android.net.wifi.WpsInfo wps;
@@ -30546,6 +30549,7 @@ package android.net.wifi.p2p {
ctor public WifiP2pDevice();
ctor public WifiP2pDevice(android.net.wifi.p2p.WifiP2pDevice);
method public int describeContents();
+ method @Nullable public android.net.wifi.p2p.WifiP2pWfdInfo getWfdInfo();
method public boolean isGroupOwner();
method public boolean isServiceDiscoveryCapable();
method public boolean wpsDisplaySupported();
@@ -30582,6 +30586,7 @@ package android.net.wifi.p2p {
method public java.util.Collection<android.net.wifi.p2p.WifiP2pDevice> getClientList();
method public int getFrequency();
method public String getInterface();
+ method public int getNetworkId();
method public String getNetworkName();
method public android.net.wifi.p2p.WifiP2pDevice getOwner();
method public String getPassphrase();
@@ -30706,6 +30711,28 @@ package android.net.wifi.p2p {
method public void onUpnpServiceAvailable(java.util.List<java.lang.String>, android.net.wifi.p2p.WifiP2pDevice);
}
+ public final class WifiP2pWfdInfo implements android.os.Parcelable {
+ ctor public WifiP2pWfdInfo();
+ ctor public WifiP2pWfdInfo(@Nullable android.net.wifi.p2p.WifiP2pWfdInfo);
+ method public int describeContents();
+ method public int getControlPort();
+ method public int getDeviceType();
+ method public int getMaxThroughput();
+ method public boolean isSessionAvailable();
+ method public boolean isWfdEnabled();
+ method public void setControlPort(int);
+ method public boolean setDeviceType(int);
+ method public void setMaxThroughput(int);
+ method public void setSessionAvailable(boolean);
+ method public void setWfdEnabled(boolean);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.p2p.WifiP2pWfdInfo> CREATOR;
+ field public static final int DEVICE_TYPE_PRIMARY_SINK = 1; // 0x1
+ field public static final int DEVICE_TYPE_SECONDARY_SINK = 2; // 0x2
+ field public static final int DEVICE_TYPE_SOURCE_OR_PRIMARY_SINK = 3; // 0x3
+ field public static final int DEVICE_TYPE_WFD_SOURCE = 0; // 0x0
+ }
+
}
package android.net.wifi.p2p.nsd {
@@ -39024,10 +39051,14 @@ package android.provider {
field public static final String ACTION_VPN_SETTINGS = "android.settings.VPN_SETTINGS";
field public static final String ACTION_VR_LISTENER_SETTINGS = "android.settings.VR_LISTENER_SETTINGS";
field public static final String ACTION_WEBVIEW_SETTINGS = "android.settings.WEBVIEW_SETTINGS";
+ field public static final String ACTION_WIFI_ADD_NETWORKS = "android.settings.WIFI_ADD_NETWORKS";
field public static final String ACTION_WIFI_IP_SETTINGS = "android.settings.WIFI_IP_SETTINGS";
field public static final String ACTION_WIFI_SETTINGS = "android.settings.WIFI_SETTINGS";
field public static final String ACTION_WIRELESS_SETTINGS = "android.settings.WIRELESS_SETTINGS";
field public static final String ACTION_ZEN_MODE_PRIORITY_SETTINGS = "android.settings.ZEN_MODE_PRIORITY_SETTINGS";
+ field public static final int ADD_WIFI_RESULT_ADD_OR_UPDATE_FAILED = 1; // 0x1
+ field public static final int ADD_WIFI_RESULT_ALREADY_EXISTS = 2; // 0x2
+ field public static final int ADD_WIFI_RESULT_SUCCESS = 0; // 0x0
field public static final String AUTHORITY = "settings";
field public static final String EXTRA_ACCOUNT_TYPES = "account_types";
field public static final String EXTRA_AIRPLANE_MODE_ENABLED = "airplane_mode_enabled";
@@ -39040,6 +39071,8 @@ package android.provider {
field public static final String EXTRA_INPUT_METHOD_ID = "input_method_id";
field public static final String EXTRA_NOTIFICATION_LISTENER_COMPONENT_NAME = "android.provider.extra.NOTIFICATION_LISTENER_COMPONENT_NAME";
field public static final String EXTRA_SUB_ID = "android.provider.extra.SUB_ID";
+ field public static final String EXTRA_WIFI_CONFIGURATION_LIST = "android.provider.extra.WIFI_CONFIGURATION_LIST";
+ field public static final String EXTRA_WIFI_CONFIGURATION_RESULT_LIST = "android.provider.extra.WIFI_CONFIGURATION_RESULT_LIST";
field public static final String INTENT_CATEGORY_USAGE_ACCESS_CONFIG = "android.intent.category.USAGE_ACCESS_CONFIG";
field public static final String METADATA_USAGE_ACCESS_REASON = "android.settings.metadata.USAGE_ACCESS_REASON";
}
diff --git a/api/system-current.txt b/api/system-current.txt
index aed13b7b0af2..412e0959570c 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -57,6 +57,7 @@ package android {
field public static final String CHANGE_DEVICE_IDLE_TEMP_WHITELIST = "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST";
field public static final String CLEAR_APP_USER_DATA = "android.permission.CLEAR_APP_USER_DATA";
field public static final String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS";
+ field public static final String CONFIGURE_WIFI_DISPLAY = "android.permission.CONFIGURE_WIFI_DISPLAY";
field public static final String CONNECTIVITY_INTERNAL = "android.permission.CONNECTIVITY_INTERNAL";
field public static final String CONNECTIVITY_USE_RESTRICTED_NETWORKS = "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS";
field public static final String CONTROL_DISPLAY_COLOR_TRANSFORMS = "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS";
@@ -125,8 +126,10 @@ package android {
field public static final String NETWORK_CARRIER_PROVISIONING = "android.permission.NETWORK_CARRIER_PROVISIONING";
field public static final String NETWORK_MANAGED_PROVISIONING = "android.permission.NETWORK_MANAGED_PROVISIONING";
field public static final String NETWORK_SCAN = "android.permission.NETWORK_SCAN";
+ field public static final String NETWORK_SETTINGS = "android.permission.NETWORK_SETTINGS";
field public static final String NETWORK_SETUP_WIZARD = "android.permission.NETWORK_SETUP_WIZARD";
field public static final String NETWORK_SIGNAL_STRENGTH_WAKEUP = "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP";
+ field public static final String NETWORK_STACK = "android.permission.NETWORK_STACK";
field public static final String NOTIFICATION_DURING_SETUP = "android.permission.NOTIFICATION_DURING_SETUP";
field public static final String NOTIFY_TV_INPUTS = "android.permission.NOTIFY_TV_INPUTS";
field public static final String OBSERVE_APP_USAGE = "android.permission.OBSERVE_APP_USAGE";
@@ -2001,6 +2004,7 @@ package android.hardware.display {
method @Nullable public android.hardware.display.BrightnessCorrection getCorrectionByCategory(int);
method @Nullable public android.hardware.display.BrightnessCorrection getCorrectionByPackageName(@NonNull String);
method public android.util.Pair<float[],float[]> getCurve();
+ method public boolean shouldCollectColorSamples();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessConfiguration> CREATOR;
}
@@ -2013,6 +2017,7 @@ package android.hardware.display {
method public int getMaxCorrectionsByCategory();
method public int getMaxCorrectionsByPackageName();
method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setDescription(@Nullable String);
+ method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShouldCollectColorSamples(boolean);
}
public final class BrightnessCorrection implements android.os.Parcelable {
@@ -4121,8 +4126,8 @@ package android.net {
method @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void getLatestTetheringEntitlementResult(int, boolean, @NonNull java.util.concurrent.Executor, @NonNull android.net.ConnectivityManager.OnTetheringEntitlementResultListener);
method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public boolean isTetheringSupported();
method @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void registerTetheringEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.ConnectivityManager.OnTetheringEventCallback);
- method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void setAirplaneMode(boolean);
- method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, "android.permission.NETWORK_STACK"}) public boolean shouldAvoidBadWifi();
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void setAirplaneMode(boolean);
+ method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public boolean shouldAvoidBadWifi();
method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public void startCaptivePortalApp(@NonNull android.net.Network, @NonNull android.os.Bundle);
method @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback);
method @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback, android.os.Handler);
@@ -4830,38 +4835,62 @@ package android.net.wifi {
public class WifiManager {
method @RequiresPermission("android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE") public void addOnWifiUsabilityStatsListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.OnWifiUsabilityStatsListener);
- method @RequiresPermission("android.permission.NETWORK_SETTINGS") public void allowAutojoin(int, boolean);
- method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void connect(@NonNull android.net.wifi.WifiConfiguration, @Nullable android.net.wifi.WifiManager.ActionListener);
- method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void connect(int, @Nullable android.net.wifi.WifiManager.ActionListener);
- method @Deprecated @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void disable(int, @Nullable android.net.wifi.WifiManager.ActionListener);
- method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void forget(int, @Nullable android.net.wifi.WifiManager.ActionListener);
- method @NonNull @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.List<android.util.Pair<android.net.wifi.WifiConfiguration,java.util.Map<java.lang.Integer,java.util.List<android.net.wifi.ScanResult>>>> getAllMatchingWifiConfigs(@NonNull java.util.List<android.net.wifi.ScanResult>);
- method @NonNull @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.Map<android.net.wifi.hotspot2.OsuProvider,java.util.List<android.net.wifi.ScanResult>> getMatchingOsuProviders(@Nullable java.util.List<android.net.wifi.ScanResult>);
- method @NonNull @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.Map<android.net.wifi.hotspot2.OsuProvider,android.net.wifi.hotspot2.PasspointConfiguration> getMatchingPasspointConfigsForOsuProviders(@NonNull java.util.Set<android.net.wifi.hotspot2.OsuProvider>);
+ method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void allowAutojoin(int, boolean);
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void connect(@NonNull android.net.wifi.WifiConfiguration, @Nullable android.net.wifi.WifiManager.ActionListener);
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void connect(int, @Nullable android.net.wifi.WifiManager.ActionListener);
+ method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void disable(int, @Nullable android.net.wifi.WifiManager.ActionListener);
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK}) public void disableEphemeralNetwork(@NonNull String);
+ method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void enableVerboseLogging(int);
+ method @RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL) public void factoryReset();
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void forget(int, @Nullable android.net.wifi.WifiManager.ActionListener);
+ method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.List<android.util.Pair<android.net.wifi.WifiConfiguration,java.util.Map<java.lang.Integer,java.util.List<android.net.wifi.ScanResult>>>> getAllMatchingWifiConfigs(@NonNull java.util.List<android.net.wifi.ScanResult>);
+ method @Nullable @RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL) public String getCountryCode();
+ method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public android.net.Network getCurrentNetwork();
+ method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public String[] getFactoryMacAddresses();
+ method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.Map<android.net.wifi.hotspot2.OsuProvider,java.util.List<android.net.wifi.ScanResult>> getMatchingOsuProviders(@Nullable java.util.List<android.net.wifi.ScanResult>);
+ method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.Map<android.net.wifi.hotspot2.OsuProvider,android.net.wifi.hotspot2.PasspointConfiguration> getMatchingPasspointConfigsForOsuProviders(@NonNull java.util.Set<android.net.wifi.hotspot2.OsuProvider>);
method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_WIFI_STATE, android.Manifest.permission.READ_WIFI_CREDENTIAL}) public java.util.List<android.net.wifi.WifiConfiguration> getPrivilegedConfiguredNetworks();
+ method public int getVerboseLoggingLevel();
method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public android.net.wifi.WifiConfiguration getWifiApConfiguration();
method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public int getWifiApState();
method public boolean isApMacRandomizationSupported();
method public boolean isConnectedMacRandomizationSupported();
method @Deprecated public boolean isDeviceToDeviceRttSupported();
+ method public boolean isDualBandSupported();
+ method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public boolean isDualModeSupported();
method public boolean isPortableHotspotSupported();
method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public boolean isWifiApEnabled();
method public boolean isWifiScannerSupported();
- method @RequiresPermission("android.permission.NETWORK_SETTINGS") public void registerSoftApCallback(@Nullable java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.SoftApCallback);
+ method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void registerNetworkRequestMatchCallback(@NonNull android.net.wifi.WifiManager.NetworkRequestMatchCallback);
+ method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void registerNetworkRequestMatchCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.NetworkRequestMatchCallback);
+ method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void registerSoftApCallback(@NonNull android.net.wifi.WifiManager.SoftApCallback);
+ method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void registerSoftApCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.SoftApCallback);
+ method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void registerTrafficStateCallback(@NonNull android.net.wifi.WifiManager.TrafficStateCallback);
+ method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void registerTrafficStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.TrafficStateCallback);
method @RequiresPermission("android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE") public void removeOnWifiUsabilityStatsListener(@NonNull android.net.wifi.WifiManager.OnWifiUsabilityStatsListener);
- method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void save(@NonNull android.net.wifi.WifiConfiguration, @Nullable android.net.wifi.WifiManager.ActionListener);
+ method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void restoreBackupData(@NonNull byte[]);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void restoreSupplicantBackupData(@NonNull byte[], @NonNull byte[]);
+ method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public byte[] retrieveBackupData();
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void save(@NonNull android.net.wifi.WifiConfiguration, @Nullable android.net.wifi.WifiManager.ActionListener);
method @RequiresPermission("android.permission.WIFI_SET_DEVICE_MOBILITY_STATE") public void setDeviceMobilityState(int);
method @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE) public boolean setWifiApConfiguration(android.net.wifi.WifiConfiguration);
- method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startEasyConnectAsConfiguratorInitiator(@NonNull String, int, int, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.EasyConnectStatusCallback);
- method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startEasyConnectAsEnrolleeInitiator(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.EasyConnectStatusCallback);
- method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startLocalOnlyHotspot(@NonNull android.net.wifi.SoftApConfiguration, @Nullable java.util.concurrent.Executor, @Nullable android.net.wifi.WifiManager.LocalOnlyHotspotCallback);
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startEasyConnectAsConfiguratorInitiator(@NonNull String, int, int, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.EasyConnectStatusCallback);
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startEasyConnectAsEnrolleeInitiator(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.EasyConnectStatusCallback);
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startLocalOnlyHotspot(@NonNull android.net.wifi.SoftApConfiguration, @Nullable java.util.concurrent.Executor, @Nullable android.net.wifi.WifiManager.LocalOnlyHotspotCallback);
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public boolean startScan(android.os.WorkSource);
- method @RequiresPermission(anyOf={"android.permission.NETWORK_STACK", android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public boolean startSoftAp(@Nullable android.net.wifi.WifiConfiguration);
- method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startSubscriptionProvisioning(@NonNull android.net.wifi.hotspot2.OsuProvider, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.hotspot2.ProvisioningCallback);
- method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void stopEasyConnectSession();
- method @RequiresPermission(anyOf={"android.permission.NETWORK_STACK", android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public boolean stopSoftAp();
- method @RequiresPermission(anyOf={"android.permission.NETWORK_STACK", android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void updateInterfaceIpState(@Nullable String, int);
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public boolean startSoftAp(@Nullable android.net.wifi.WifiConfiguration);
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void startSubscriptionProvisioning(@NonNull android.net.wifi.hotspot2.OsuProvider, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.hotspot2.ProvisioningCallback);
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void stopEasyConnectSession();
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public boolean stopSoftAp();
+ method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void unregisterNetworkRequestMatchCallback(@NonNull android.net.wifi.WifiManager.NetworkRequestMatchCallback);
+ method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void unregisterSoftApCallback(@NonNull android.net.wifi.WifiManager.SoftApCallback);
+ method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void unregisterTrafficStateCallback(@NonNull android.net.wifi.WifiManager.TrafficStateCallback);
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void updateInterfaceIpState(@Nullable String, int);
method @RequiresPermission("android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE") public void updateWifiUsabilityScore(int, int, int);
+ field public static final String ACTION_LINK_CONFIGURATION_CHANGED = "android.net.wifi.LINK_CONFIGURATION_CHANGED";
+ field public static final String ACTION_PASSPOINT_LAUNCH_OSU_VIEW = "android.net.wifi.action.PASSPOINT_LAUNCH_OSU_VIEW";
+ field public static final String ACTION_REQUEST_DISABLE = "android.net.wifi.action.REQUEST_DISABLE";
+ field public static final String ACTION_REQUEST_ENABLE = "android.net.wifi.action.REQUEST_ENABLE";
field public static final int CHANGE_REASON_ADDED = 0; // 0x0
field public static final int CHANGE_REASON_CONFIG_CHANGE = 2; // 0x2
field public static final int CHANGE_REASON_REMOVED = 1; // 0x1
@@ -4873,8 +4902,11 @@ package android.net.wifi {
field public static final int EASY_CONNECT_NETWORK_ROLE_AP = 1; // 0x1
field public static final int EASY_CONNECT_NETWORK_ROLE_STA = 0; // 0x0
field public static final String EXTRA_CHANGE_REASON = "changeReason";
+ field public static final String EXTRA_LINK_PROPERTIES = "android.net.wifi.extra.LINK_PROPERTIES";
field public static final String EXTRA_MULTIPLE_NETWORKS_CHANGED = "multipleChanges";
+ field public static final String EXTRA_OSU_NETWORK = "android.net.wifi.extra.OSU_NETWORK";
field public static final String EXTRA_PREVIOUS_WIFI_AP_STATE = "previous_wifi_state";
+ field public static final String EXTRA_URL = "android.net.wifi.extra.URL";
field public static final String EXTRA_WIFI_AP_INTERFACE_NAME = "android.net.wifi.extra.WIFI_AP_INTERFACE_NAME";
field public static final String EXTRA_WIFI_AP_MODE = "android.net.wifi.extra.WIFI_AP_MODE";
field public static final String EXTRA_WIFI_AP_STATE = "wifi_state";
@@ -4887,6 +4919,8 @@ package android.net.wifi {
field public static final int IFACE_IP_MODE_UNSPECIFIED = -1; // 0xffffffff
field public static final int PASSPOINT_HOME_NETWORK = 0; // 0x0
field public static final int PASSPOINT_ROAMING_NETWORK = 1; // 0x1
+ field public static final int SAP_START_FAILURE_GENERAL = 0; // 0x0
+ field public static final int SAP_START_FAILURE_NO_CHANNEL = 1; // 0x1
field public static final String WIFI_AP_STATE_CHANGED_ACTION = "android.net.wifi.WIFI_AP_STATE_CHANGED";
field public static final int WIFI_AP_STATE_DISABLED = 11; // 0xb
field public static final int WIFI_AP_STATE_DISABLING = 10; // 0xa
@@ -4903,14 +4937,35 @@ package android.net.wifi {
method public void onSuccess();
}
+ public static interface WifiManager.NetworkRequestMatchCallback {
+ method public default void onAbort();
+ method public default void onMatch(@NonNull java.util.List<android.net.wifi.ScanResult>);
+ method public default void onUserSelectionCallbackRegistration(@NonNull android.net.wifi.WifiManager.NetworkRequestUserSelectionCallback);
+ method public default void onUserSelectionConnectFailure(@NonNull android.net.wifi.WifiConfiguration);
+ method public default void onUserSelectionConnectSuccess(@NonNull android.net.wifi.WifiConfiguration);
+ }
+
+ public static interface WifiManager.NetworkRequestUserSelectionCallback {
+ method public default void reject();
+ method public default void select(@NonNull android.net.wifi.WifiConfiguration);
+ }
+
public static interface WifiManager.OnWifiUsabilityStatsListener {
method public void onWifiUsabilityStats(int, boolean, @NonNull android.net.wifi.WifiUsabilityStatsEntry);
}
public static interface WifiManager.SoftApCallback {
- method public void onConnectedClientsChanged(@NonNull java.util.List<android.net.wifi.WifiClient>);
+ method public default void onConnectedClientsChanged(@NonNull java.util.List<android.net.wifi.WifiClient>);
method public default void onInfoChanged(@NonNull android.net.wifi.SoftApInfo);
- method public void onStateChanged(int, int);
+ method public default void onStateChanged(int, int);
+ }
+
+ public static interface WifiManager.TrafficStateCallback {
+ method public void onStateChanged(int);
+ field public static final int DATA_ACTIVITY_IN = 1; // 0x1
+ field public static final int DATA_ACTIVITY_INOUT = 3; // 0x3
+ field public static final int DATA_ACTIVITY_NONE = 0; // 0x0
+ field public static final int DATA_ACTIVITY_OUT = 2; // 0x2
}
public class WifiNetworkConnectionStatistics implements android.os.Parcelable {
@@ -4933,6 +4988,7 @@ package android.net.wifi {
method @Deprecated public void configureWifiChange(android.net.wifi.WifiScanner.WifiChangeSettings);
method @NonNull @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public java.util.List<java.lang.Integer> getAvailableChannels(int);
method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean getScanResults();
+ method @NonNull @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public java.util.List<android.net.wifi.ScanResult> getSingleScanResults();
method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void startBackgroundScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener);
method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void startBackgroundScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener, android.os.WorkSource);
method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void startScan(android.net.wifi.WifiScanner.ScanSettings, android.net.wifi.WifiScanner.ScanListener);
@@ -5152,6 +5208,36 @@ package android.net.wifi.hotspot2 {
}
+package android.net.wifi.p2p {
+
+ public final class WifiP2pGroupList implements android.os.Parcelable {
+ method public int describeContents();
+ method @NonNull public java.util.Collection<android.net.wifi.p2p.WifiP2pGroup> getGroupList();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.p2p.WifiP2pGroupList> CREATOR;
+ }
+
+ public class WifiP2pManager {
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.OVERRIDE_WIFI_CONFIG}) public void deletePersistentGroup(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, int, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
+ method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void factoryReset(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
+ method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void listen(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, boolean, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.READ_WIFI_CREDENTIAL}) public void requestPersistentGroupInfo(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pManager.PersistentGroupInfoListener);
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.OVERRIDE_WIFI_CONFIG}) public void setDeviceName(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @NonNull String, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
+ method @RequiresPermission(allOf={android.Manifest.permission.CONNECTIVITY_INTERNAL, android.Manifest.permission.CONFIGURE_WIFI_DISPLAY}) public void setMiracastMode(int);
+ method @RequiresPermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY) public void setWfdInfo(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @NonNull android.net.wifi.p2p.WifiP2pWfdInfo, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
+ method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.OVERRIDE_WIFI_CONFIG}) public void setWifiP2pChannels(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, int, int, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
+ field public static final String ACTION_WIFI_P2P_PERSISTENT_GROUPS_CHANGED = "android.net.wifi.p2p.action.WIFI_P2P_PERSISTENT_GROUPS_CHANGED";
+ field public static final int MIRACAST_DISABLED = 0; // 0x0
+ field public static final int MIRACAST_SINK = 2; // 0x2
+ field public static final int MIRACAST_SOURCE = 1; // 0x1
+ }
+
+ public static interface WifiP2pManager.PersistentGroupInfoListener {
+ method public void onPersistentGroupInfoAvailable(@NonNull android.net.wifi.p2p.WifiP2pGroupList);
+ }
+
+}
+
package android.net.wifi.rtt {
public static final class RangingRequest.Builder {
diff --git a/api/system-lint-baseline.txt b/api/system-lint-baseline.txt
index 21526d007dc5..7eb54434f556 100644
--- a/api/system-lint-baseline.txt
+++ b/api/system-lint-baseline.txt
@@ -1,12 +1,30 @@
// Baseline format: 1.0
ActionValue: android.location.Location#EXTRA_NO_GPS_LOCATION:
+ActionValue: android.net.wifi.WifiManager#ACTION_LINK_CONFIGURATION_CHANGED:
+ Inconsistent action value; expected `android.net.wifi.action.LINK_CONFIGURATION_CHANGED`, was `android.net.wifi.LINK_CONFIGURATION_CHANGED`
ArrayReturn: android.view.contentcapture.ViewNode#getAutofillOptions():
+ExecutorRegistration: android.net.wifi.p2p.WifiP2pManager#deletePersistentGroup(android.net.wifi.p2p.WifiP2pManager.Channel, int, android.net.wifi.p2p.WifiP2pManager.ActionListener):
+ Registration methods should have overload that accepts delivery Executor: `deletePersistentGroup`
+ExecutorRegistration: android.net.wifi.p2p.WifiP2pManager#factoryReset(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener):
+ Registration methods should have overload that accepts delivery Executor: `factoryReset`
+ExecutorRegistration: android.net.wifi.p2p.WifiP2pManager#listen(android.net.wifi.p2p.WifiP2pManager.Channel, boolean, android.net.wifi.p2p.WifiP2pManager.ActionListener):
+ Registration methods should have overload that accepts delivery Executor: `listen`
+ExecutorRegistration: android.net.wifi.p2p.WifiP2pManager#requestPersistentGroupInfo(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.PersistentGroupInfoListener):
+ Registration methods should have overload that accepts delivery Executor: `requestPersistentGroupInfo`
+ExecutorRegistration: android.net.wifi.p2p.WifiP2pManager#setDeviceName(android.net.wifi.p2p.WifiP2pManager.Channel, String, android.net.wifi.p2p.WifiP2pManager.ActionListener):
+ Registration methods should have overload that accepts delivery Executor: `setDeviceName`
+ExecutorRegistration: android.net.wifi.p2p.WifiP2pManager#setWfdInfo(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pWfdInfo, android.net.wifi.p2p.WifiP2pManager.ActionListener):
+ Registration methods should have overload that accepts delivery Executor: `setWfdInfo`
+ExecutorRegistration: android.net.wifi.p2p.WifiP2pManager#setWifiP2pChannels(android.net.wifi.p2p.WifiP2pManager.Channel, int, int, android.net.wifi.p2p.WifiP2pManager.ActionListener):
+ Registration methods should have overload that accepts delivery Executor: `setWifiP2pChannels`
+
+
GenericException: android.app.prediction.AppPredictor#finalize():
GenericException: android.hardware.location.ContextHubClient#finalize():
@@ -17,8 +35,7 @@ GenericException: android.service.autofill.augmented.FillWindow#finalize():
-InterfaceConstant: android.service.storage.ExternalStorageService#SERVICE_INTERFACE:
-
+
KotlinKeyword: android.app.Notification#when:
@@ -198,9 +215,9 @@ SamShouldBeLast: android.app.AlarmManager#setExact(int, long, String, android.ap
SamShouldBeLast: android.app.AlarmManager#setWindow(int, long, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler):
SamShouldBeLast: android.app.WallpaperInfo#dump(android.util.Printer, String):
-
+
SamShouldBeLast: android.app.admin.DevicePolicyManager#installSystemUpdate(android.content.ComponentName, android.net.Uri, java.util.concurrent.Executor, android.app.admin.DevicePolicyManager.InstallSystemUpdateCallback):
-
+
SamShouldBeLast: android.content.Context#bindIsolatedService(android.content.Intent, int, String, java.util.concurrent.Executor, android.content.ServiceConnection):
SamShouldBeLast: android.content.Context#bindService(android.content.Intent, int, java.util.concurrent.Executor, android.content.ServiceConnection):
@@ -332,7 +349,7 @@ SamShouldBeLast: android.telephony.TelephonyManager#requestNetworkScan(android.t
SamShouldBeLast: android.telephony.TelephonyManager#setPreferredOpportunisticDataSubscription(int, boolean, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Integer>):
SamShouldBeLast: android.telephony.TelephonyManager#updateAvailableNetworks(java.util.List<android.telephony.AvailableNetworkInfo>, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Integer>):
-
+
SamShouldBeLast: android.view.View#postDelayed(Runnable, long):
SamShouldBeLast: android.view.View#postOnAnimationDelayed(Runnable, long):
diff --git a/api/test-current.txt b/api/test-current.txt
index 44f736ca918a..c6b02b9e649b 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -1018,6 +1018,7 @@ package android.hardware.display {
method @Nullable public android.hardware.display.BrightnessCorrection getCorrectionByCategory(int);
method @Nullable public android.hardware.display.BrightnessCorrection getCorrectionByPackageName(@NonNull String);
method public android.util.Pair<float[],float[]> getCurve();
+ method public boolean shouldCollectColorSamples();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.BrightnessConfiguration> CREATOR;
}
@@ -1030,6 +1031,7 @@ package android.hardware.display {
method public int getMaxCorrectionsByCategory();
method public int getMaxCorrectionsByPackageName();
method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setDescription(@Nullable String);
+ method @NonNull public android.hardware.display.BrightnessConfiguration.Builder setShouldCollectColorSamples(boolean);
}
public final class BrightnessCorrection implements android.os.Parcelable {
diff --git a/core/java/android/app/IWallpaperManager.aidl b/core/java/android/app/IWallpaperManager.aidl
index 7f5350ddd4e0..4cb8d936aa9c 100644
--- a/core/java/android/app/IWallpaperManager.aidl
+++ b/core/java/android/app/IWallpaperManager.aidl
@@ -58,14 +58,22 @@ interface IWallpaperManager {
@UnsupportedAppUsage
void setWallpaperComponent(in ComponentName name);
+
/**
- * Get the wallpaper for a given user.
+ * @deprecated Use {@link #getWallpaperWithFeature(String, IWallpaperManagerCallback, int,
+ * Bundle, int)}
*/
@UnsupportedAppUsage
ParcelFileDescriptor getWallpaper(String callingPkg, IWallpaperManagerCallback cb, int which,
out Bundle outParams, int userId);
/**
+ * Get the wallpaper for a given user.
+ */
+ ParcelFileDescriptor getWallpaperWithFeature(String callingPkg, String callingFeatureId,
+ IWallpaperManagerCallback cb, int which, out Bundle outParams, int userId);
+
+ /**
* Retrieve the given user's current wallpaper ID of the given kind.
*/
int getWallpaperIdForUser(int which, int userId);
diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java
index 4fb2196d4e26..69c174a47127 100644
--- a/core/java/android/app/SystemServiceRegistry.java
+++ b/core/java/android/app/SystemServiceRegistry.java
@@ -18,6 +18,7 @@ package android.app;
import android.accounts.AccountManager;
import android.accounts.IAccountManager;
+import android.annotation.NonNull;
import android.app.ContextImpl.ServiceInitializationState;
import android.app.admin.DevicePolicyManager;
import android.app.admin.IDevicePolicyManager;
@@ -67,7 +68,7 @@ import android.hardware.SensorPrivacyManager;
import android.hardware.SerialManager;
import android.hardware.SystemSensorManager;
import android.hardware.biometrics.BiometricManager;
-import android.hardware.biometrics.IBiometricService;
+import android.hardware.biometrics.IAuthService;
import android.hardware.camera2.CameraManager;
import android.hardware.display.ColorDisplayManager;
import android.hardware.display.DisplayManager;
@@ -194,10 +195,9 @@ import com.android.internal.appwidget.IAppWidgetService;
import com.android.internal.net.INetworkWatchlistManager;
import com.android.internal.os.IDropBoxManagerService;
import com.android.internal.policy.PhoneLayoutInflater;
+import com.android.internal.util.Preconditions;
import java.util.Map;
-import java.util.function.BiFunction;
-import java.util.function.Function;
/**
* Manages all of the system services that can be returned by {@link Context#getSystemService}.
@@ -216,6 +216,8 @@ public final class SystemServiceRegistry {
new ArrayMap<String, ServiceFetcher<?>>();
private static int sServiceCacheSize;
+ private static volatile boolean sInitializing;
+
// Not instantiable.
private SystemServiceRegistry() { }
@@ -945,9 +947,9 @@ public final class SystemServiceRegistry {
throws ServiceNotFoundException {
if (BiometricManager.hasBiometrics(ctx)) {
final IBinder binder =
- ServiceManager.getServiceOrThrow(Context.BIOMETRIC_SERVICE);
- final IBiometricService service =
- IBiometricService.Stub.asInterface(binder);
+ ServiceManager.getServiceOrThrow(Context.AUTH_SERVICE);
+ final IAuthService service =
+ IAuthService.Stub.asInterface(binder);
return new BiometricManager(ctx.getOuterContext(), service);
} else {
// Allow access to the manager when service is null. This saves memory
@@ -1292,14 +1294,28 @@ public final class SystemServiceRegistry {
}});
//CHECKSTYLE:ON IndentationCheck
- JobSchedulerFrameworkInitializer.initialize();
- DeviceIdleFrameworkInitializer.initialize();
-
- BlobStoreManagerFrameworkInitializer.initialize();
+ sInitializing = true;
+ try {
+ // Note: the following functions need to be @SystemApis, once they become mainline
+ // modules.
+
+ JobSchedulerFrameworkInitializer.registerServiceWrappers();
+ BlobStoreManagerFrameworkInitializer.initialize();
+ } finally {
+ // If any of the above code throws, we're in a pretty bad shape and the process
+ // will likely crash, but we'll reset it just in case there's an exception handler...
+ sInitializing = false;
+ }
}
+ /** Throws {@link IllegalStateException} if not during a static initialization. */
+ private static void ensureInitializing(String methodName) {
+ Preconditions.checkState(sInitializing, "Internal error: " + methodName
+ + " can only be called during class initialization.");
+ }
/**
* Creates an array which is used to cache per-Context service instances.
+ * @hide
*/
public static Object[] createServiceCache() {
return new Object[sServiceCacheSize];
@@ -1307,6 +1323,7 @@ public final class SystemServiceRegistry {
/**
* Gets a system service from a given context.
+ * @hide
*/
public static Object getSystemService(ContextImpl ctx, String name) {
ServiceFetcher<?> fetcher = SYSTEM_SERVICE_FETCHERS.get(name);
@@ -1315,6 +1332,7 @@ public final class SystemServiceRegistry {
/**
* Gets the name of the system-level service that is represented by the specified class.
+ * @hide
*/
public static String getSystemServiceName(Class<?> serviceClass) {
return SYSTEM_SERVICE_NAMES.get(serviceClass);
@@ -1324,41 +1342,204 @@ public final class SystemServiceRegistry {
* Statically registers a system service with the context.
* This method must be called during static initialization only.
*/
- private static <T> void registerService(String serviceName, Class<T> serviceClass,
- ServiceFetcher<T> serviceFetcher) {
+ private static <T> void registerService(@NonNull String serviceName,
+ @NonNull Class<T> serviceClass, @NonNull ServiceFetcher<T> serviceFetcher) {
SYSTEM_SERVICE_NAMES.put(serviceClass, serviceName);
SYSTEM_SERVICE_FETCHERS.put(serviceName, serviceFetcher);
}
/**
- * APEX modules will use it to register their service wrapper.
+ * Callback interface used as a parameter to {@link #registerStaticService(
+ * String, Class, StaticServiceProducerNoBinder)}, which generates a service wrapper instance
+ * that's not tied to any context and does not take a service binder object in the constructor.
+ *
+ * @param <TServiceClass> type of the service wrapper class.
+ *
+ * @hide
+ */
+ //@SystemApi TODO Make it a system API.
+ public interface StaticServiceProducerNoBinder<TServiceClass> {
+ /**
+ * Return a new service wrapper of type {@code TServiceClass}.
+ */
+ TServiceClass createService();
+ }
+
+ /**
+ * Callback interface used as a parameter to {@link #registerStaticService(
+ * String, Class, StaticServiceProducerWithBinder)}, which generates a service wrapper instance
+ * that's not tied to any context and takes a service binder object in the constructor.
+ *
+ * @param <TServiceClass> type of the service wrapper class.
+ *
+ * @hide
+ */
+ //@SystemApi TODO Make it a system API.
+ public interface StaticServiceProducerWithBinder<TServiceClass> {
+ /**
+ * Return a new service wrapper of type {@code TServiceClass} backed by a given
+ * service binder object.
+ */
+ TServiceClass createService(IBinder serviceBinder);
+ }
+
+ /**
+ * Callback interface used as a parameter to {@link #registerContextAwareService(
+ * String, Class, ContextAwareServiceProducerNoBinder)},
+ * which generates a service wrapper instance
+ * that's tied to a specific context and does not take a service binder object in the
+ * constructor.
+ *
+ * @param <TServiceClass> type of the service wrapper class.
+ *
+ * @hide
+ */
+ //@SystemApi TODO Make it a system API.
+ public interface ContextAwareServiceProducerNoBinder<TServiceClass> {
+ /**
+ * Return a new service wrapper of type {@code TServiceClass} tied to a given
+ * {@code context}.
+ *
+ * TODO Do we need to pass the "base context" too?
+ */
+ TServiceClass createService(Context context);
+ }
+
+ /**
+ * Callback interface used as a parameter to {@link #registerContextAwareService(
+ * String, Class, ContextAwareServiceProducerWithBinder)},
+ * which generates a service wrapper instance
+ * that's tied to a specific context and takes a service binder object in the constructor.
+ *
+ * @param <TServiceClass> type of the service wrapper class.
*
* @hide
*/
- public static <T> void registerStaticService(String serviceName, Class<T> serviceWrapperClass,
- Function<IBinder, T> serviceFetcher) {
+ //@SystemApi TODO Make it a system API.
+ public interface ContextAwareServiceProducerWithBinder<TServiceClass> {
+ /**
+ * Return a new service wrapper of type {@code TServiceClass} backed by a given
+ * service binder object that's tied to a given {@code context}.
+ *
+ * TODO Do we need to pass the "base context" too?
+ */
+ TServiceClass createService(Context context, IBinder serviceBinder);
+ }
+
+ /**
+ * Used by apex modules to register a "service wrapper" that is not tied to any {@link Context}.
+ *
+ * <p>This can only be called from the methods called by the static initializer of
+ * {@link SystemServiceRegistry}. (Otherwise it throws a {@link IllegalStateException}.)
+ *
+ * @param serviceName the name of the binder object, such as
+ * {@link Context#JOB_SCHEDULER_SERVICE}.
+ * @param serviceWrapperClass the wrapper class, such as the class of
+ * {@link android.app.job.JobScheduler}.
+ * @param serviceProducer Callback that takes the service binder object with the name
+ * {@code serviceName} and returns an actual service wrapper instance.
+ *
+ * @hide
+ */
+ //@SystemApi TODO Make it a system API.
+ public static <TServiceClass> void registerStaticService(
+ @NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass,
+ @NonNull StaticServiceProducerWithBinder<TServiceClass> serviceProducer) {
+ ensureInitializing("registerStaticService");
+ Preconditions.checkStringNotEmpty(serviceName);
+ Preconditions.checkNotNull(serviceWrapperClass);
+ Preconditions.checkNotNull(serviceProducer);
+
registerService(serviceName, serviceWrapperClass,
- new StaticServiceFetcher<T>() {
+ new StaticServiceFetcher<TServiceClass>() {
@Override
- public T createService() throws ServiceNotFoundException {
- IBinder b = ServiceManager.getServiceOrThrow(serviceName);
- return serviceFetcher.apply(b);
+ public TServiceClass createService() throws ServiceNotFoundException {
+ return serviceProducer.createService(
+ ServiceManager.getServiceOrThrow(serviceName));
}});
}
/**
- * APEX modules will use it to register their service wrapper.
+ * Similar to {@link #registerStaticService(String, Class, StaticServiceProducerWithBinder)},
+ * but used for a "service wrapper" that doesn't take a service binder in its constructor.
*
* @hide
*/
- public static <T> void registerCachedService(String serviceName, Class<T> serviceWrapperClass,
- BiFunction<Context, IBinder, T> serviceFetcher) {
+ //@SystemApi TODO Make it a system API.
+ public static <TServiceClass> void registerStaticService(
+ @NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass,
+ @NonNull StaticServiceProducerNoBinder<TServiceClass> serviceProducer) {
+ ensureInitializing("registerStaticService");
+ Preconditions.checkStringNotEmpty(serviceName);
+ Preconditions.checkNotNull(serviceWrapperClass);
+ Preconditions.checkNotNull(serviceProducer);
+
+ registerService(serviceName, serviceWrapperClass,
+ new StaticServiceFetcher<TServiceClass>() {
+ @Override
+ public TServiceClass createService() {
+ return serviceProducer.createService();
+ }});
+ }
+
+ /**
+ * Used by apex modules to register a "service wrapper" that is tied to a specific
+ * {@link Context}.
+ *
+ * <p>This can only be called from the methods called by the static initializer of
+ * {@link SystemServiceRegistry}. (Otherwise it throws a {@link IllegalStateException}.)
+ *
+ * @param serviceName the name of the binder object, such as
+ * {@link Context#JOB_SCHEDULER_SERVICE}.
+ * @param serviceWrapperClass the wrapper class, such as the class of
+ * {@link android.app.job.JobScheduler}.
+ * @param serviceProducer lambda that takes the service binder object with the name
+ * {@code serviceName}, a {@link Context} and returns an actual service wrapper instance.
+ *
+ * @hide
+ */
+ //@SystemApi TODO Make it a system API.
+ public static <TServiceClass> void registerContextAwareService(
+ @NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass,
+ @NonNull ContextAwareServiceProducerWithBinder<TServiceClass> serviceProducer) {
+ ensureInitializing("registerContextAwareService");
+ Preconditions.checkStringNotEmpty(serviceName);
+ Preconditions.checkNotNull(serviceWrapperClass);
+ Preconditions.checkNotNull(serviceProducer);
+
+ registerService(serviceName, serviceWrapperClass,
+ new CachedServiceFetcher<TServiceClass>() {
+ @Override
+ public TServiceClass createService(ContextImpl ctx)
+ throws ServiceNotFoundException {
+ return serviceProducer.createService(
+ ctx.getOuterContext(),
+ ServiceManager.getServiceOrThrow(serviceName));
+ }});
+ }
+
+
+ /**
+ * Similar to {@link #registerContextAwareService(String, Class,
+ * ContextAwareServiceProducerWithBinder)},
+ * but used for a "service wrapper" that doesn't take a service binder in its constructor.
+ *
+ * @hide
+ */
+ //@SystemApi TODO Make it a system API.
+ public static <TServiceClass> void registerContextAwareService(
+ @NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass,
+ @NonNull ContextAwareServiceProducerNoBinder<TServiceClass> serviceProducer) {
+ ensureInitializing("registerContextAwareService");
+ Preconditions.checkStringNotEmpty(serviceName);
+ Preconditions.checkNotNull(serviceWrapperClass);
+ Preconditions.checkNotNull(serviceProducer);
+
registerService(serviceName, serviceWrapperClass,
- new CachedServiceFetcher<T>() {
+ new CachedServiceFetcher<TServiceClass>() {
@Override
- public T createService(ContextImpl ctx) throws ServiceNotFoundException {
- IBinder b = ServiceManager.getServiceOrThrow(serviceName);
- return serviceFetcher.apply(ctx.getOuterContext(), b);
+ public TServiceClass createService(ContextImpl ctx) {
+ return serviceProducer.createService(ctx.getOuterContext());
}});
}
@@ -1517,6 +1698,7 @@ public final class SystemServiceRegistry {
public abstract T createService(Context applicationContext) throws ServiceNotFoundException;
}
+ /** @hide */
public static void onServiceNotFound(ServiceNotFoundException e) {
// We're mostly interested in tracking down long-lived core system
// components that might stumble if they obtain bad references; just
diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java
index 59ecf4aa6e8a..41604ec97867 100644
--- a/core/java/android/app/WallpaperManager.java
+++ b/core/java/android/app/WallpaperManager.java
@@ -458,8 +458,9 @@ public class WallpaperManager {
try {
Bundle params = new Bundle();
- ParcelFileDescriptor fd = mService.getWallpaper(context.getOpPackageName(),
- this, FLAG_SYSTEM, params, userId);
+ ParcelFileDescriptor fd = mService.getWallpaperWithFeature(
+ context.getOpPackageName(), context.getFeatureId(), this, FLAG_SYSTEM,
+ params, userId);
if (fd != null) {
try {
BitmapFactory.Options options = new BitmapFactory.Options();
@@ -985,8 +986,8 @@ public class WallpaperManager {
} else {
try {
Bundle outParams = new Bundle();
- return sGlobals.mService.getWallpaper(mContext.getOpPackageName(), null, which,
- outParams, userId);
+ return sGlobals.mService.getWallpaperWithFeature(mContext.getOpPackageName(),
+ mContext.getFeatureId(), null, which, outParams, userId);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
} catch (SecurityException e) {
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 9eff4b03b19e..50adb7ca3297 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -4101,9 +4101,17 @@ public class DevicePolicyManager {
* Make the device lock immediately, as if the lock screen timeout has expired at the point of
* this call.
* <p>
+ * This method secures the device in response to an urgent situation, such as a lost or stolen
+ * device. After this method is called, the device must be unlocked using strong authentication
+ * (PIN, pattern, or password). This API is intended for use only by device admins.
+ * <p>
* The calling device admin must have requested {@link DeviceAdminInfo#USES_POLICY_FORCE_LOCK}
* to be able to call this method; if it has not, a security exception will be thrown.
* <p>
+ * If there's no lock type set, this method forces the device to go to sleep but doesn't lock
+ * the device. Device admins who find the device in this state can lock an otherwise-insecure
+ * device by first calling {@link #resetPassword} to set the password and then lock the device.
+ * <p>
* This method can be called on the {@link DevicePolicyManager} instance returned by
* {@link #getParentProfileInstance(ComponentName)} in order to lock the parent profile.
* <p>
@@ -4120,9 +4128,17 @@ public class DevicePolicyManager {
* Make the device lock immediately, as if the lock screen timeout has expired at the point of
* this call.
* <p>
+ * This method secures the device in response to an urgent situation, such as a lost or stolen
+ * device. After this method is called, the device must be unlocked using strong authentication
+ * (PIN, pattern, or password). This API is intended for use only by device admins.
+ * <p>
* The calling device admin must have requested {@link DeviceAdminInfo#USES_POLICY_FORCE_LOCK}
* to be able to call this method; if it has not, a security exception will be thrown.
* <p>
+ * If there's no lock type set, this method forces the device to go to sleep but doesn't lock
+ * the device. Device admins who find the device in this state can lock an otherwise-insecure
+ * device by first calling {@link #resetPassword} to set the password and then lock the device.
+ * <p>
* This method can be called on the {@link DevicePolicyManager} instance returned by
* {@link #getParentProfileInstance(ComponentName)} in order to lock the parent profile.
*
@@ -8167,7 +8183,7 @@ public class DevicePolicyManager {
* Sets which system features are enabled when the device runs in lock task mode. This method
* doesn't affect the features when lock task mode is inactive. Any system features not included
* in {@code flags} are implicitly disabled when calling this method. By default, only
- * {@link #LOCK_TASK_FEATURE_GLOBAL_ACTIONS} is enabled—all the other features are disabled. To
+ * {@link #LOCK_TASK_FEATURE_GLOBAL_ACTIONS} is enabled; all the other features are disabled. To
* disable the global actions dialog, call this method omitting
* {@link #LOCK_TASK_FEATURE_GLOBAL_ACTIONS}.
*
diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java
index 0be3eca8239e..19f42b6a4c9e 100644
--- a/core/java/android/bluetooth/BluetoothDevice.java
+++ b/core/java/android/bluetooth/BluetoothDevice.java
@@ -1095,6 +1095,24 @@ public final class BluetoothDevice implements Parcelable {
}
/**
+ * Get the Bluetooth alias of the remote device.
+ * If Alias is null, get the Bluetooth name instead.
+ *
+ * @return the Bluetooth alias, or null if no alias or there was a problem
+ * @hide
+ * @see #getAlias()
+ * @see #getName()
+ */
+ @UnsupportedAppUsage(publicAlternatives = "Use {@link #getName()} instead.")
+ public String getAliasName() {
+ String name = getAlias();
+ if (name == null) {
+ name = getName();
+ }
+ return name;
+ }
+
+ /**
* Get the most recent identified battery level of this Bluetooth device
* <p>Requires {@link android.Manifest.permission#BLUETOOTH}
*
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 03b49136bde4..392353aac4a2 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -3289,6 +3289,7 @@ public abstract class Context {
WIFI_RTT_RANGING_SERVICE,
NSD_SERVICE,
AUDIO_SERVICE,
+ AUTH_SERVICE,
FINGERPRINT_SERVICE,
//@hide: FACE_SERVICE,
BIOMETRIC_SERVICE,
@@ -4007,6 +4008,31 @@ public abstract class Context {
public static final String AUDIO_SERVICE = "audio";
/**
+ * AuthService orchestrates biometric and PIN/pattern/password authentication.
+ *
+ * BiometricService was split into two services, AuthService and BiometricService, where
+ * AuthService is the high level service that orchestrates all types of authentication, and
+ * BiometricService is a lower layer responsible only for biometric authentication.
+ *
+ * Ideally we should have renamed BiometricManager to AuthManager, because it logically
+ * corresponds to AuthService. However, because BiometricManager is a public API, we kept
+ * the old name but changed the internal implementation to use AuthService.
+ *
+ * As of now, the AUTH_SERVICE constant is only used to identify the service in
+ * SystemServiceRegistry and SELinux. To obtain the manager for AUTH_SERVICE, one should use
+ * BIOMETRIC_SERVICE with {@link #getSystemService(String)} to retrieve a
+ * {@link android.hardware.biometrics.BiometricManager}
+ *
+ * Map of the two services and their managers:
+ * [Service] [Manager]
+ * AuthService BiometricManager
+ * BiometricService N/A
+ *
+ * @hide
+ */
+ public static final String AUTH_SERVICE = "auth";
+
+ /**
* Use with {@link #getSystemService(String)} to retrieve a
* {@link android.hardware.fingerprint.FingerprintManager} for handling management
* of fingerprints.
@@ -4040,8 +4066,8 @@ public abstract class Context {
/**
* Use with {@link #getSystemService(String)} to retrieve a
- * {@link android.hardware.biometrics.BiometricManager} for handling management
- * of face authentication.
+ * {@link android.hardware.biometrics.BiometricManager} for handling
+ * biometric and PIN/pattern/password authentication.
*
* @see #getSystemService
* @see android.hardware.biometrics.BiometricManager
diff --git a/core/java/android/content/pm/UserInfo.java b/core/java/android/content/pm/UserInfo.java
index 42d64d81b17e..5fb17ee5d717 100644
--- a/core/java/android/content/pm/UserInfo.java
+++ b/core/java/android/content/pm/UserInfo.java
@@ -49,9 +49,6 @@ import java.lang.annotation.RetentionPolicy;
*/
public class UserInfo implements Parcelable {
- /** 16 bits for user type */
- public static final int FLAG_MASK_USER_TYPE = 0x0000FFFF;
-
/**
* *************************** NOTE ***************************
* These flag values CAN NOT CHANGE because they are written
diff --git a/core/java/android/hardware/biometrics/BiometricManager.java b/core/java/android/hardware/biometrics/BiometricManager.java
index 9d427c8d8bab..f17b3ae2052f 100644
--- a/core/java/android/hardware/biometrics/BiometricManager.java
+++ b/core/java/android/hardware/biometrics/BiometricManager.java
@@ -66,7 +66,7 @@ public class BiometricManager {
@interface BiometricError {}
private final Context mContext;
- private final IBiometricService mService;
+ private final IAuthService mService;
private final boolean mHasHardware;
/**
@@ -86,7 +86,7 @@ public class BiometricManager {
* @param context
* @param service
*/
- public BiometricManager(Context context, IBiometricService service) {
+ public BiometricManager(Context context, IAuthService service) {
mContext = context;
mService = service;
diff --git a/core/java/android/hardware/biometrics/IAuthService.aidl b/core/java/android/hardware/biometrics/IAuthService.aidl
new file mode 100644
index 000000000000..516a25d0b9b1
--- /dev/null
+++ b/core/java/android/hardware/biometrics/IAuthService.aidl
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.biometrics;
+
+import android.os.Bundle;
+import android.hardware.biometrics.IBiometricEnabledOnKeyguardCallback;
+import android.hardware.biometrics.IBiometricServiceReceiver;
+
+/**
+ * Communication channel from BiometricPrompt and BiometricManager to AuthService. The
+ * interface does not expose specific biometric modalities. The system will use the default
+ * biometric for apps. On devices with more than one, the choice is dictated by user preference in
+ * Settings.
+ * @hide
+ */
+interface IAuthService {
+ // Requests authentication. The service choose the appropriate biometric to use, and show
+ // the corresponding BiometricDialog.
+ void authenticate(IBinder token, long sessionId, int userId,
+ IBiometricServiceReceiver receiver, String opPackageName, in Bundle bundle);
+
+ // TODO(b/141025588): Make userId the first arg to be consistent with hasEnrolledBiometrics.
+ // Checks if biometrics can be used.
+ int canAuthenticate(String opPackageName, int userId);
+
+ // Checks if any biometrics are enrolled.
+ boolean hasEnrolledBiometrics(int userId, String opPackageName);
+
+ // Register callback for when keyguard biometric eligibility changes.
+ void registerEnabledOnKeyguardCallback(IBiometricEnabledOnKeyguardCallback callback);
+
+ // Explicitly set the active user.
+ void setActiveUser(int userId);
+
+ // Reset the lockout when user authenticates with strong auth (e.g. PIN, pattern or password)
+ void resetLockout(in byte [] token);
+}
diff --git a/core/java/android/hardware/biometrics/IBiometricService.aidl b/core/java/android/hardware/biometrics/IBiometricService.aidl
index 06336a55ac5e..ca024215f782 100644
--- a/core/java/android/hardware/biometrics/IBiometricService.aidl
+++ b/core/java/android/hardware/biometrics/IBiometricService.aidl
@@ -22,10 +22,7 @@ import android.hardware.biometrics.IBiometricServiceReceiver;
import android.hardware.biometrics.IBiometricAuthenticator;
/**
- * Communication channel from BiometricPrompt and BiometricManager to BiometricService. The
- * interface does not expose specific biometric modalities. The system will use the default
- * biometric for apps. On devices with more than one, the choice is dictated by user preference in
- * Settings.
+ * Communication channel from AuthService to BiometricService.
* @hide
*/
interface IBiometricService {
diff --git a/core/java/android/hardware/display/BrightnessChangeEvent.java b/core/java/android/hardware/display/BrightnessChangeEvent.java
index 21fcc63c76fb..a6a44bea816b 100644
--- a/core/java/android/hardware/display/BrightnessChangeEvent.java
+++ b/core/java/android/hardware/display/BrightnessChangeEvent.java
@@ -79,7 +79,8 @@ public final class BrightnessChangeEvent implements Parcelable {
/**
* Histogram counting how many times a pixel of a given value was displayed onscreen for the
* Value component of HSV if the device supports color sampling, if the device does not support
- * color sampling the value will be null.
+ * color sampling or {@link BrightnessConfiguration#shouldCollectColorSamples()} is false the
+ * value will be null.
*
* The buckets of the histogram are evenly weighted, the number of buckets is device specific.
* The units are in pixels * milliseconds, with 1 pixel millisecond being 1 pixel displayed
@@ -94,7 +95,8 @@ public final class BrightnessChangeEvent implements Parcelable {
/**
* How many milliseconds of data are contained in the colorValueBuckets, if the device does
- * not support color sampling the value will be 0L.
+ * not support color sampling or {@link BrightnessConfiguration#shouldCollectColorSamples()} is
+ * false the value will be 0L.
*
* {@see #colorValueBuckets}
*/
diff --git a/core/java/android/hardware/display/BrightnessConfiguration.java b/core/java/android/hardware/display/BrightnessConfiguration.java
index 4c2e297d2133..139be8ee4d7b 100644
--- a/core/java/android/hardware/display/BrightnessConfiguration.java
+++ b/core/java/android/hardware/display/BrightnessConfiguration.java
@@ -49,26 +49,31 @@ public final class BrightnessConfiguration implements Parcelable {
private static final String TAG_BRIGHTNESS_POINT = "brightness-point";
private static final String TAG_BRIGHTNESS_CORRECTIONS = "brightness-corrections";
private static final String TAG_BRIGHTNESS_CORRECTION = "brightness-correction";
+ private static final String TAG_BRIGHTNESS_PARAMS = "brightness-params";
private static final String ATTR_LUX = "lux";
private static final String ATTR_NITS = "nits";
private static final String ATTR_DESCRIPTION = "description";
private static final String ATTR_PACKAGE_NAME = "package-name";
private static final String ATTR_CATEGORY = "category";
+ private static final String ATTR_COLLECT_COLOR = "collect-color";
private final float[] mLux;
private final float[] mNits;
private final Map<String, BrightnessCorrection> mCorrectionsByPackageName;
private final Map<Integer, BrightnessCorrection> mCorrectionsByCategory;
private final String mDescription;
+ private final boolean mShouldCollectColorSamples;
private BrightnessConfiguration(float[] lux, float[] nits,
Map<String, BrightnessCorrection> correctionsByPackageName,
- Map<Integer, BrightnessCorrection> correctionsByCategory, String description) {
+ Map<Integer, BrightnessCorrection> correctionsByCategory, String description,
+ boolean shouldCollectColorSamples) {
mLux = lux;
mNits = nits;
mCorrectionsByPackageName = correctionsByPackageName;
mCorrectionsByCategory = correctionsByCategory;
mDescription = description;
+ mShouldCollectColorSamples = shouldCollectColorSamples;
}
/**
@@ -119,6 +124,14 @@ public final class BrightnessConfiguration implements Parcelable {
return mDescription;
}
+ /**
+ * Returns whether color samples should be collected in
+ * {@link BrightnessChangeEvent#colorValueBuckets}.
+ */
+ public boolean shouldCollectColorSamples() {
+ return mShouldCollectColorSamples;
+ }
+
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeFloatArray(mLux);
@@ -138,6 +151,7 @@ public final class BrightnessConfiguration implements Parcelable {
correction.writeToParcel(dest, flags);
}
dest.writeString(mDescription);
+ dest.writeBoolean(mShouldCollectColorSamples);
}
@Override
@@ -167,6 +181,7 @@ public final class BrightnessConfiguration implements Parcelable {
if (mDescription != null) {
sb.append(mDescription);
}
+ sb.append(", shouldCollectColorSamples = " + mShouldCollectColorSamples);
sb.append("'}");
return sb.toString();
}
@@ -181,6 +196,7 @@ public final class BrightnessConfiguration implements Parcelable {
if (mDescription != null) {
result = result * 31 + mDescription.hashCode();
}
+ result = result * 31 + Boolean.hashCode(mShouldCollectColorSamples);
return result;
}
@@ -196,7 +212,8 @@ public final class BrightnessConfiguration implements Parcelable {
return Arrays.equals(mLux, other.mLux) && Arrays.equals(mNits, other.mNits)
&& mCorrectionsByPackageName.equals(other.mCorrectionsByPackageName)
&& mCorrectionsByCategory.equals(other.mCorrectionsByCategory)
- && Objects.equals(mDescription, other.mDescription);
+ && Objects.equals(mDescription, other.mDescription)
+ && mShouldCollectColorSamples == other.mShouldCollectColorSamples;
}
public static final @android.annotation.NonNull Creator<BrightnessConfiguration> CREATOR =
@@ -224,6 +241,8 @@ public final class BrightnessConfiguration implements Parcelable {
final String description = in.readString();
builder.setDescription(description);
+ final boolean shouldCollectColorSamples = in.readBoolean();
+ builder.setShouldCollectColorSamples(shouldCollectColorSamples);
return builder.build();
}
@@ -252,6 +271,7 @@ public final class BrightnessConfiguration implements Parcelable {
serializer.endTag(null, TAG_BRIGHTNESS_POINT);
}
serializer.endTag(null, TAG_BRIGHTNESS_CURVE);
+
serializer.startTag(null, TAG_BRIGHTNESS_CORRECTIONS);
for (Map.Entry<String, BrightnessCorrection> entry :
mCorrectionsByPackageName.entrySet()) {
@@ -271,6 +291,12 @@ public final class BrightnessConfiguration implements Parcelable {
serializer.endTag(null, TAG_BRIGHTNESS_CORRECTION);
}
serializer.endTag(null, TAG_BRIGHTNESS_CORRECTIONS);
+
+ serializer.startTag(null, TAG_BRIGHTNESS_PARAMS);
+ if (mShouldCollectColorSamples) {
+ serializer.attribute(null, ATTR_COLLECT_COLOR, Boolean.toString(true));
+ }
+ serializer.endTag(null, TAG_BRIGHTNESS_PARAMS);
}
/**
@@ -293,6 +319,7 @@ public final class BrightnessConfiguration implements Parcelable {
List<Float> nitsList = new ArrayList<>();
Map<String, BrightnessCorrection> correctionsByPackageName = new HashMap<>();
Map<Integer, BrightnessCorrection> correctionsByCategory = new HashMap<>();
+ boolean shouldCollectColorSamples = false;
final int configDepth = parser.getDepth();
while (XmlUtils.nextElementWithin(parser, configDepth)) {
if (TAG_BRIGHTNESS_CURVE.equals(parser.getName())) {
@@ -307,8 +334,7 @@ public final class BrightnessConfiguration implements Parcelable {
luxList.add(lux);
nitsList.add(nits);
}
- }
- if (TAG_BRIGHTNESS_CORRECTIONS.equals(parser.getName())) {
+ } else if (TAG_BRIGHTNESS_CORRECTIONS.equals(parser.getName())) {
final int correctionsDepth = parser.getDepth();
while (XmlUtils.nextElementWithin(parser, correctionsDepth)) {
if (!TAG_BRIGHTNESS_CORRECTION.equals(parser.getName())) {
@@ -328,6 +354,9 @@ public final class BrightnessConfiguration implements Parcelable {
}
}
}
+ } else if (TAG_BRIGHTNESS_PARAMS.equals(parser.getName())) {
+ shouldCollectColorSamples =
+ Boolean.parseBoolean(parser.getAttributeValue(null, ATTR_COLLECT_COLOR));
}
}
final int n = luxList.size();
@@ -350,6 +379,7 @@ public final class BrightnessConfiguration implements Parcelable {
final BrightnessCorrection correction = entry.getValue();
builder.addCorrectionByCategory(category, correction);
}
+ builder.setShouldCollectColorSamples(shouldCollectColorSamples);
return builder.build();
}
@@ -374,6 +404,7 @@ public final class BrightnessConfiguration implements Parcelable {
private Map<String, BrightnessCorrection> mCorrectionsByPackageName;
private Map<Integer, BrightnessCorrection> mCorrectionsByCategory;
private String mDescription;
+ private boolean mShouldCollectColorSamples;
/**
* Constructs the builder with the control points for the brightness curve.
@@ -498,6 +529,19 @@ public final class BrightnessConfiguration implements Parcelable {
}
/**
+ * Control whether screen color samples should be returned in
+ * {@link BrightnessChangeEvent#colorValueBuckets} if supported by the device.
+ *
+ * @param shouldCollectColorSamples true if color samples should be collected.
+ * @return
+ */
+ @NonNull
+ public Builder setShouldCollectColorSamples(boolean shouldCollectColorSamples) {
+ mShouldCollectColorSamples = shouldCollectColorSamples;
+ return this;
+ }
+
+ /**
* Builds the {@link BrightnessConfiguration}.
*/
@NonNull
@@ -506,7 +550,7 @@ public final class BrightnessConfiguration implements Parcelable {
throw new IllegalStateException("A curve must be set!");
}
return new BrightnessConfiguration(mCurveLux, mCurveNits, mCorrectionsByPackageName,
- mCorrectionsByCategory, mDescription);
+ mCorrectionsByCategory, mDescription, mShouldCollectColorSamples);
}
private static void checkMonotonic(float[] vals, boolean strictlyIncreasing, String name) {
diff --git a/core/java/android/net/StaticIpConfiguration.java b/core/java/android/net/StaticIpConfiguration.java
index 5bc9953e0d05..990c1142284c 100644
--- a/core/java/android/net/StaticIpConfiguration.java
+++ b/core/java/android/net/StaticIpConfiguration.java
@@ -25,6 +25,8 @@ import android.net.shared.InetAddressUtils;
import android.os.Parcel;
import android.os.Parcelable;
+import com.android.internal.util.Preconditions;
+
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;
@@ -152,6 +154,7 @@ public final class StaticIpConfiguration implements Parcelable {
* @return The {@link Builder} for chaining.
*/
public @NonNull Builder setDnsServers(@NonNull Iterable<InetAddress> dnsServers) {
+ Preconditions.checkNotNull(dnsServers);
mDnsServers = dnsServers;
return this;
}
@@ -175,8 +178,10 @@ public final class StaticIpConfiguration implements Parcelable {
final StaticIpConfiguration config = new StaticIpConfiguration();
config.ipAddress = mIpAddress;
config.gateway = mGateway;
- for (InetAddress server : mDnsServers) {
- config.dnsServers.add(server);
+ if (mDnsServers != null) {
+ for (InetAddress server : mDnsServers) {
+ config.dnsServers.add(server);
+ }
}
config.domains = mDomains;
return config;
diff --git a/core/java/android/net/util/MultinetworkPolicyTracker.java b/core/java/android/net/util/MultinetworkPolicyTracker.java
index 4e88149b8095..aa0f6220036c 100644
--- a/core/java/android/net/util/MultinetworkPolicyTracker.java
+++ b/core/java/android/net/util/MultinetworkPolicyTracker.java
@@ -94,7 +94,8 @@ public class MultinetworkPolicyTracker {
}
};
- TelephonyManager.from(ctx).listen(new PhoneStateListener(handler.getLooper()) {
+ ctx.getSystemService(TelephonyManager.class).listen(
+ new PhoneStateListener(handler.getLooper()) {
@Override
public void onActiveDataSubscriptionIdChanged(int subId) {
mActiveSubId = subId;
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
index ac7a0a8d8b5c..deeeddc5fb71 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -1645,10 +1645,10 @@ public class StorageManager {
* Check that given app holds both permission and appop.
* @hide
*/
- public static boolean checkPermissionAndAppOp(Context context, boolean enforce,
- int pid, int uid, String packageName, String permission, int op) {
- return checkPermissionAndAppOp(context, enforce, pid, uid, packageName, permission, op,
- true);
+ public static boolean checkPermissionAndAppOp(Context context, boolean enforce, int pid,
+ int uid, String packageName, @NonNull String featureId, String permission, int op) {
+ return checkPermissionAndAppOp(context, enforce, pid, uid, packageName, featureId,
+ permission, op, true);
}
/**
@@ -1657,16 +1657,17 @@ public class StorageManager {
*/
public static boolean checkPermissionAndCheckOp(Context context, boolean enforce,
int pid, int uid, String packageName, String permission, int op) {
- return checkPermissionAndAppOp(context, enforce, pid, uid, packageName, permission, op,
- false);
+ return checkPermissionAndAppOp(context, enforce, pid, uid, packageName,
+ null /* featureId is not needed when not noting */, permission, op, false);
}
/**
* Check that given app holds both permission and appop.
* @hide
*/
- private static boolean checkPermissionAndAppOp(Context context, boolean enforce,
- int pid, int uid, String packageName, String permission, int op, boolean note) {
+ private static boolean checkPermissionAndAppOp(Context context, boolean enforce, int pid,
+ int uid, String packageName, @Nullable String featureId, String permission, int op,
+ boolean note) {
if (context.checkPermission(permission, pid, uid) != PERMISSION_GRANTED) {
if (enforce) {
throw new SecurityException(
@@ -1679,7 +1680,7 @@ public class StorageManager {
AppOpsManager appOps = context.getSystemService(AppOpsManager.class);
final int mode;
if (note) {
- mode = appOps.noteOpNoThrow(op, uid, packageName);
+ mode = appOps.noteOpNoThrow(op, uid, packageName, featureId, null);
} else {
try {
appOps.checkPackage(uid, packageName);
@@ -1711,14 +1712,15 @@ public class StorageManager {
}
}
- private boolean checkPermissionAndAppOp(boolean enforce,
- int pid, int uid, String packageName, String permission, int op) {
- return checkPermissionAndAppOp(mContext, enforce, pid, uid, packageName, permission, op);
+ private boolean checkPermissionAndAppOp(boolean enforce, int pid, int uid, String packageName,
+ @Nullable String featureId, String permission, int op) {
+ return checkPermissionAndAppOp(mContext, enforce, pid, uid, packageName, featureId,
+ permission, op);
}
private boolean noteAppOpAllowingLegacy(boolean enforce,
- int pid, int uid, String packageName, int op) {
- final int mode = mAppOps.noteOpNoThrow(op, uid, packageName);
+ int pid, int uid, String packageName, @Nullable String featureId, int op) {
+ final int mode = mAppOps.noteOpNoThrow(op, uid, packageName, featureId, null);
switch (mode) {
case AppOpsManager.MODE_ALLOWED:
return true;
@@ -1749,50 +1751,68 @@ public class StorageManager {
/** {@hide} */
public boolean checkPermissionReadAudio(boolean enforce,
- int pid, int uid, String packageName) {
- if (!checkPermissionAndAppOp(enforce, pid, uid, packageName,
- READ_EXTERNAL_STORAGE, OP_READ_EXTERNAL_STORAGE)) return false;
- return noteAppOpAllowingLegacy(enforce, pid, uid, packageName, OP_READ_MEDIA_AUDIO);
+ int pid, int uid, String packageName, @Nullable String featureId) {
+ if (!checkPermissionAndAppOp(enforce, pid, uid, packageName, featureId,
+ READ_EXTERNAL_STORAGE, OP_READ_EXTERNAL_STORAGE)) {
+ return false;
+ }
+ return noteAppOpAllowingLegacy(enforce, pid, uid, packageName, featureId,
+ OP_READ_MEDIA_AUDIO);
}
/** {@hide} */
public boolean checkPermissionWriteAudio(boolean enforce,
- int pid, int uid, String packageName) {
- if (!checkPermissionAndAppOp(enforce, pid, uid, packageName,
- WRITE_EXTERNAL_STORAGE, OP_WRITE_EXTERNAL_STORAGE)) return false;
- return noteAppOpAllowingLegacy(enforce, pid, uid, packageName, OP_WRITE_MEDIA_AUDIO);
+ int pid, int uid, String packageName, @Nullable String featureId) {
+ if (!checkPermissionAndAppOp(enforce, pid, uid, packageName, featureId,
+ WRITE_EXTERNAL_STORAGE, OP_WRITE_EXTERNAL_STORAGE)) {
+ return false;
+ }
+ return noteAppOpAllowingLegacy(enforce, pid, uid, packageName, featureId,
+ OP_WRITE_MEDIA_AUDIO);
}
/** {@hide} */
public boolean checkPermissionReadVideo(boolean enforce,
- int pid, int uid, String packageName) {
- if (!checkPermissionAndAppOp(enforce, pid, uid, packageName,
- READ_EXTERNAL_STORAGE, OP_READ_EXTERNAL_STORAGE)) return false;
- return noteAppOpAllowingLegacy(enforce, pid, uid, packageName, OP_READ_MEDIA_VIDEO);
+ int pid, int uid, String packageName, @Nullable String featureId) {
+ if (!checkPermissionAndAppOp(enforce, pid, uid, packageName, featureId,
+ READ_EXTERNAL_STORAGE, OP_READ_EXTERNAL_STORAGE)) {
+ return false;
+ }
+ return noteAppOpAllowingLegacy(enforce, pid, uid, packageName, featureId,
+ OP_READ_MEDIA_VIDEO);
}
/** {@hide} */
public boolean checkPermissionWriteVideo(boolean enforce,
- int pid, int uid, String packageName) {
- if (!checkPermissionAndAppOp(enforce, pid, uid, packageName,
- WRITE_EXTERNAL_STORAGE, OP_WRITE_EXTERNAL_STORAGE)) return false;
- return noteAppOpAllowingLegacy(enforce, pid, uid, packageName, OP_WRITE_MEDIA_VIDEO);
+ int pid, int uid, String packageName, @Nullable String featureId) {
+ if (!checkPermissionAndAppOp(enforce, pid, uid, packageName, featureId,
+ WRITE_EXTERNAL_STORAGE, OP_WRITE_EXTERNAL_STORAGE)) {
+ return false;
+ }
+ return noteAppOpAllowingLegacy(enforce, pid, uid, packageName, featureId,
+ OP_WRITE_MEDIA_VIDEO);
}
/** {@hide} */
public boolean checkPermissionReadImages(boolean enforce,
- int pid, int uid, String packageName) {
- if (!checkPermissionAndAppOp(enforce, pid, uid, packageName,
- READ_EXTERNAL_STORAGE, OP_READ_EXTERNAL_STORAGE)) return false;
- return noteAppOpAllowingLegacy(enforce, pid, uid, packageName, OP_READ_MEDIA_IMAGES);
+ int pid, int uid, String packageName, @Nullable String featureId) {
+ if (!checkPermissionAndAppOp(enforce, pid, uid, packageName, featureId,
+ READ_EXTERNAL_STORAGE, OP_READ_EXTERNAL_STORAGE)) {
+ return false;
+ }
+ return noteAppOpAllowingLegacy(enforce, pid, uid, packageName, featureId,
+ OP_READ_MEDIA_IMAGES);
}
/** {@hide} */
public boolean checkPermissionWriteImages(boolean enforce,
- int pid, int uid, String packageName) {
- if (!checkPermissionAndAppOp(enforce, pid, uid, packageName,
- WRITE_EXTERNAL_STORAGE, OP_WRITE_EXTERNAL_STORAGE)) return false;
- return noteAppOpAllowingLegacy(enforce, pid, uid, packageName, OP_WRITE_MEDIA_IMAGES);
+ int pid, int uid, String packageName, @Nullable String featureId) {
+ if (!checkPermissionAndAppOp(enforce, pid, uid, packageName, featureId,
+ WRITE_EXTERNAL_STORAGE, OP_WRITE_EXTERNAL_STORAGE)) {
+ return false;
+ }
+ return noteAppOpAllowingLegacy(enforce, pid, uid, packageName, featureId,
+ OP_WRITE_MEDIA_IMAGES);
}
/** {@hide} */
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 50dac46d0597..3ac7deb0db08 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -14099,6 +14099,77 @@ public final class Settings {
"android.settings.panel.action.VOLUME";
}
+ /**
+ * Activity Action: Show setting page to process the addition of Wi-Fi networks to the user's
+ * saved network list. The app should send a new intent with an extra that holds a maximum of
+ * five {@link android.net.wifi.WifiConfiguration} that specify credentials for the networks to
+ * be added to the user's database. The Intent should be sent via the {@link
+ * android.app.Activity#startActivityForResult(Intent, int)} API.
+ * <p>
+ * Note: The app sending the Intent to add the credentials doesn't get any ownership over the
+ * newly added network(s). For the Wi-Fi stack, these networks will look like the user
+ * manually added them from the Settings UI.
+ * <p>
+ * Input: The app should put parcelable array list to
+ * {@link android.net.wifi.WifiConfiguration} into the
+ * {@link #EXTRA_WIFI_CONFIGURATION_LIST} extra.
+ * <p>
+ * Output: After {@link android.app.Activity#startActivityForResult(Intent, int)}, the
+ * callback {@link android.app.Activity#onActivityResult(int, int, Intent)} will have a
+ * result code {@link android.app.Activity#RESULT_OK} to indicate user pressed the save
+ * button to save the networks or {@link android.app.Activity#RESULT_CANCELED} to indicate
+ * that the user rejected the request. Additionally, an integer array list, stored in
+ * {@link #EXTRA_WIFI_CONFIGURATION_RESULT_LIST}, will indicate the process result of
+ * each network.
+ */
+ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+ public static final String ACTION_WIFI_ADD_NETWORKS =
+ "android.settings.WIFI_ADD_NETWORKS";
+
+ /**
+ * A bundle extra of {@link #ACTION_WIFI_ADD_NETWORKS} intent action that indicates all the
+ * {@link android.net.wifi.WifiConfiguration} that would be saved.
+ */
+ public static final String EXTRA_WIFI_CONFIGURATION_LIST =
+ "android.provider.extra.WIFI_CONFIGURATION_LIST";
+
+ /**
+ * A bundle extra of the result of {@link #ACTION_WIFI_ADD_NETWORKS} intent action that
+ * indicates the action result of the saved {@link android.net.wifi.WifiConfiguration}. It's
+ * value of AddWifiResult interface, and will be 1:1 mapping to the element in {@link
+ * #EXTRA_WIFI_CONFIGURATION_LIST}.
+ */
+ public static final String EXTRA_WIFI_CONFIGURATION_RESULT_LIST =
+ "android.provider.extra.WIFI_CONFIGURATION_RESULT_LIST";
+
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = {"ADD_WIFI_RESULT_"}, value = {
+ ADD_WIFI_RESULT_SUCCESS,
+ ADD_WIFI_RESULT_ADD_OR_UPDATE_FAILED,
+ ADD_WIFI_RESULT_ALREADY_EXISTS
+ })
+ public @interface AddWifiResult {
+ }
+
+ /**
+ * A result of {@link #ACTION_WIFI_ADD_NETWORKS} intent action that saving or updating the
+ * corresponding Wi-Fi network was successful.
+ */
+ public static final int ADD_WIFI_RESULT_SUCCESS = 0;
+
+ /**
+ * A result of {@link #ACTION_WIFI_ADD_NETWORKS} intent action that saving the corresponding
+ * Wi-Fi network failed.
+ */
+ public static final int ADD_WIFI_RESULT_ADD_OR_UPDATE_FAILED = 1;
+
+ /**
+ * A result of {@link #ACTION_WIFI_ADD_NETWORKS} intent action that indicates the Wi-Fi network
+ * already exists.
+ */
+ public static final int ADD_WIFI_RESULT_ALREADY_EXISTS = 2;
+
private static final String[] PM_WRITE_SETTINGS = {
android.Manifest.permission.WRITE_SETTINGS
};
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 8ee7a0ef5a66..2ea3b6370b1e 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -5402,11 +5402,10 @@ public final class ViewRootImpl implements ViewParent,
mTranslator.translateEventInScreenToAppWindow(event);
}
- // Enter touch mode on down or scroll, if it is coming from a touch screen device,
- // exit otherwise.
+ // Enter touch mode if event is coming from a touch screen device.
final int action = event.getAction();
- if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_SCROLL) {
- ensureTouchMode(event.isFromSource(InputDevice.SOURCE_TOUCHSCREEN));
+ if (event.isFromSource(InputDevice.SOURCE_TOUCHSCREEN)) {
+ ensureTouchMode(true);
}
if (action == MotionEvent.ACTION_DOWN) {
diff --git a/core/java/com/android/internal/compat/IPlatformCompat.aidl b/core/java/com/android/internal/compat/IPlatformCompat.aidl
index 5857642cbd4e..045a6800bb13 100644
--- a/core/java/com/android/internal/compat/IPlatformCompat.aidl
+++ b/core/java/com/android/internal/compat/IPlatformCompat.aidl
@@ -133,7 +133,7 @@ interface IPlatformCompat
boolean isChangeEnabledByUid(long changeId, int uid);
/**
- * Add overrides to compatibility changes.
+ * Add overrides to compatibility changes. Kills the app to allow the changes to take effect.
*
* @param overrides Parcelable containing the compat change overrides to be applied.
* @param packageName The package name of the app whose changes will be overridden.
@@ -142,7 +142,28 @@ interface IPlatformCompat
void setOverrides(in CompatibilityChangeConfig overrides, in String packageName);
/**
- * Revert overrides to compatibility changes.
+ * Add overrides to compatibility changes. Doesn't kill the app, to be only used in tests.
+ *
+ * @param overrides Parcelable containing the compat change overrides to be applied.
+ * @param packageName The package name of the app whose changes will be overridden.
+ *
+ */
+ void setOverridesForTest(in CompatibilityChangeConfig overrides, in String packageName);
+
+ /**
+ * Removes an override previously added via {@link #setOverrides(CompatibilityChangeConfig,
+ * String)}. This restores the default behaviour for the given change and app, once any app
+ * processes have been restarted.
+ * Kills the app to allow the changes to take effect.
+ *
+ * @param changeId The ID of the change that was overridden.
+ * @param packageName The app package name that was overridden.
+ * @return {@code true} if an override existed;
+ */
+ boolean clearOverride(long changeId, String packageName);
+
+ /**
+ * Revert overrides to compatibility changes. Kills the app to allow the changes to take effect.
*
* @param packageName The package name of the app whose overrides will be cleared.
*
diff --git a/core/java/com/android/internal/util/ScreenshotHelper.java b/core/java/com/android/internal/util/ScreenshotHelper.java
index cac691cf7d45..f6f187fd27c5 100644
--- a/core/java/com/android/internal/util/ScreenshotHelper.java
+++ b/core/java/com/android/internal/util/ScreenshotHelper.java
@@ -6,6 +6,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
+import android.net.Uri;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
@@ -58,7 +59,7 @@ public class ScreenshotHelper {
*/
public void takeScreenshot(final int screenshotType, final boolean hasStatus,
final boolean hasNav, @NonNull Handler handler,
- @Nullable Consumer<Boolean> completionConsumer) {
+ @Nullable Consumer<Uri> completionConsumer) {
takeScreenshot(screenshotType, hasStatus, hasNav, SCREENSHOT_TIMEOUT_MS, handler,
completionConsumer);
}
@@ -88,7 +89,7 @@ public class ScreenshotHelper {
*/
public void takeScreenshot(final int screenshotType, final boolean hasStatus,
final boolean hasNav, long timeoutMs, @NonNull Handler handler,
- @Nullable Consumer<Boolean> completionConsumer) {
+ @Nullable Consumer<Uri> completionConsumer) {
synchronized (mScreenshotLock) {
if (mScreenshotConnection != null) {
return;
@@ -108,7 +109,7 @@ public class ScreenshotHelper {
}
}
if (completionConsumer != null) {
- completionConsumer.accept(false);
+ completionConsumer.accept(null);
}
}
};
@@ -135,7 +136,7 @@ public class ScreenshotHelper {
}
}
if (completionConsumer != null) {
- completionConsumer.accept(true);
+ completionConsumer.accept((Uri) msg.obj);
}
}
};
@@ -148,7 +149,7 @@ public class ScreenshotHelper {
} catch (RemoteException e) {
Log.e(TAG, "Couldn't take screenshot: " + e);
if (completionConsumer != null) {
- completionConsumer.accept(false);
+ completionConsumer.accept(null);
}
}
}
diff --git a/core/java/com/android/internal/widget/DecorCaptionView.java b/core/java/com/android/internal/widget/DecorCaptionView.java
index 4014c454f6a8..b5d787c24fbd 100644
--- a/core/java/com/android/internal/widget/DecorCaptionView.java
+++ b/core/java/com/android/internal/widget/DecorCaptionView.java
@@ -123,6 +123,8 @@ public class DecorCaptionView extends ViewGroup implements View.OnTouchListener,
private void init(Context context) {
mDragSlop = ViewConfiguration.get(context).getScaledTouchSlop();
mGestureDetector = new GestureDetector(context, this);
+ setContentDescription(context.getString(R.string.accessibility_freeform_caption,
+ context.getPackageManager().getApplicationLabel(context.getApplicationInfo())));
}
@Override
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 545538be4ce1..e1ca1f6f346c 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -375,7 +375,7 @@
<protected-broadcast android:name="android.net.wifi.p2p.THIS_DEVICE_CHANGED" />
<protected-broadcast android:name="android.net.wifi.p2p.PEERS_CHANGED" />
<protected-broadcast android:name="android.net.wifi.p2p.CONNECTION_STATE_CHANGE" />
- <protected-broadcast android:name="android.net.wifi.p2p.PERSISTENT_GROUPS_CHANGED" />
+ <protected-broadcast android:name="android.net.wifi.p2p.action.WIFI_P2P_PERSISTENT_GROUPS_CHANGED" />
<protected-broadcast android:name="android.net.conn.TETHER_STATE_CHANGED" />
<protected-broadcast android:name="android.net.conn.INET_CONDITION_ACTION" />
<protected-broadcast android:name="android.net.conn.NETWORK_CONDITIONS_MEASURED" />
@@ -660,7 +660,6 @@
android:icon="@drawable/perm_group_contacts"
android:label="@string/permgrouplab_contacts"
android:description="@string/permgroupdesc_contacts"
- android:request="@string/permgrouprequest_contacts"
android:priority="100" />
<!-- Allows an application to read the user's contacts data.
@@ -691,7 +690,6 @@
android:icon="@drawable/perm_group_calendar"
android:label="@string/permgrouplab_calendar"
android:description="@string/permgroupdesc_calendar"
- android:request="@string/permgrouprequest_calendar"
android:priority="200" />
<!-- Allows an application to read the user's calendar data.
@@ -722,7 +720,6 @@
android:icon="@drawable/perm_group_sms"
android:label="@string/permgrouplab_sms"
android:description="@string/permgroupdesc_sms"
- android:request="@string/permgrouprequest_sms"
android:priority="300" />
<!-- Allows an application to send SMS messages.
@@ -841,7 +838,6 @@
android:icon="@drawable/perm_group_storage"
android:label="@string/permgrouplab_storage"
android:description="@string/permgroupdesc_storage"
- android:request="@string/permgrouprequest_storage"
android:priority="900" />
<!-- Allows an application to read from external storage.
@@ -930,10 +926,6 @@
android:icon="@drawable/perm_group_location"
android:label="@string/permgrouplab_location"
android:description="@string/permgroupdesc_location"
- android:request="@string/permgrouprequest_location"
- android:requestDetail="@string/permgrouprequestdetail_location"
- android:backgroundRequest="@string/permgroupbackgroundrequest_location"
- android:backgroundRequestDetail="@string/permgroupbackgroundrequestdetail_location"
android:priority="400" />
<!-- Allows an app to access precise location.
@@ -985,7 +977,6 @@
android:icon="@drawable/perm_group_call_log"
android:label="@string/permgrouplab_calllog"
android:description="@string/permgroupdesc_calllog"
- android:request="@string/permgrouprequest_calllog"
android:priority="450" />
<!-- Allows an application to access the IMS call service: making and
@@ -1074,7 +1065,6 @@
android:icon="@drawable/perm_group_phone_calls"
android:label="@string/permgrouplab_phone"
android:description="@string/permgroupdesc_phone"
- android:request="@string/permgrouprequest_phone"
android:priority="500" />
<!-- Allows read only access to phone state, including the phone number of the device,
@@ -1195,7 +1185,6 @@
android:icon="@drawable/perm_group_microphone"
android:label="@string/permgrouplab_microphone"
android:description="@string/permgroupdesc_microphone"
- android:request="@string/permgrouprequest_microphone"
android:priority="600" />
<!-- Allows an application to record audio.
@@ -1217,7 +1206,6 @@
android:icon="@drawable/perm_group_activity_recognition"
android:label="@string/permgrouplab_activityRecognition"
android:description="@string/permgroupdesc_activityRecognition"
- android:request="@string/permgrouprequest_activityRecognition"
android:priority="1000" />
<!-- Allows an application to recognize physical activity.
@@ -1260,7 +1248,6 @@
android:icon="@drawable/perm_group_camera"
android:label="@string/permgrouplab_camera"
android:description="@string/permgroupdesc_camera"
- android:request="@string/permgrouprequest_camera"
android:priority="700" />
<!-- Required to be able to access the camera device.
@@ -1299,7 +1286,6 @@
android:icon="@drawable/perm_group_sensors"
android:label="@string/permgrouplab_sensors"
android:description="@string/permgroupdesc_sensors"
- android:request="@string/permgrouprequest_sensors"
android:priority="800" />
<!-- Allows an application to access data from sensors that the user uses to
@@ -1615,6 +1601,7 @@
<!-- Allows network stack services (Connectivity and Wifi) to coordinate
<p>Not for use by third-party or privileged applications.
+ @SystemApi
@hide This should only be used by Connectivity and Wifi Services.
-->
<permission android:name="android.permission.NETWORK_STACK"
@@ -1622,6 +1609,7 @@
<!-- Allows Settings and SystemUI to call methods in Networking services
<p>Not for use by third-party or privileged applications.
+ @SystemApi
@hide This should only be used by Settings and SystemUI.
-->
<permission android:name="android.permission.NETWORK_SETTINGS"
@@ -3583,7 +3571,8 @@
android:protectionLevel="signature" />
<!-- Allows an application to configure and connect to Wifi displays
- @hide -->
+ @hide
+ @SystemApi -->
<permission android:name="android.permission.CONFIGURE_WIFI_DISPLAY"
android:protectionLevel="signature" />
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 485162c13112..c8ced192a8a1 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Gee &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toegang tot hierdie toestel se ligging?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Die program sal net toegang tot die ligging hê terwyl jy die program gebruik"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Laat &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toe om &lt;b&gt;enige tyd&lt;/b&gt; toegang tot jou toestel se ligging te kry?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Program kan tans net toegang tot ligging kry terwyl jy die program gebruik"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalender"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"by jou kalender in te gaan"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Gee &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toegang tot jou kalender?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Tik om te kyk wat geblokkeer word."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Stelsel"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Instellings"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Bystandmodus"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Die Android TV-toestel sal binnekort afskakel; druk \'n knoppie om dit aan te hou."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Die toestel gaan binnekort afskakel; druk om dit aan te hou."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofoon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"wys tans bo-oor ander programme op jou skerm"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Regstreekse deling is nie beskikbaar nie"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Programmelys"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Opneemtoestemming is nie aan hierdie program verleen nie, maar dit kan oudio deur hierdie USB-toestel opneem."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Tuis"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Terug"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Onlangse programme"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Kennisgewings"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Kitsinstellings"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Kragdialoog"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Wissel verdeelde skerm"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Sluitskerm"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Skermkiekie"</string>
</resources>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index f0a4307cc9d1..eff754c1d8cf 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; የዚህ መሣሪያ አካባቢን እንዲደርስ ይፈቀድለት?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"መተግበሪያው እርስዎ ሲጠቀሙበት ብቻ ነው የአካባቢው መዳረሻ የሚኖረው"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"የዚህን መሣሪያ መገኛ አካባቢ &lt;b&gt;ሁልጊዜ&lt;/b&gt; መድረስ እንዲችል ለ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ይፈቀድ?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"እርስዎ መተግበሪያውን እየተጠቀሙ እያሉ መተግበሪያ አሁን ላይ የመገኛ አካባቢን መድረስ ይችላል"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"ይህ እርስዎ መተግበሪያውን በማይጠቀሙበት ጊዜ እንኳ የእርስዎን መገኛ አካባቢ ሁልጊዜ መድረስ ሊፈልግ ይችል ይሆናል። በ"<annotation id="link">"ቅንብሮች"</annotation>" ውስጥ ይፍቀዱ።"</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"ቀን መቁጠሪያ"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"የእርስዎን ቀን መቁጠሪያ ይድረሱበት"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ቀን መቁጠሪያዎን እንዲደርስ ይፈቀድለት?"</string>
@@ -1963,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"ምን እንደታገደ ለመፈተሽ መታ ያድርጉ።"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"ሥርዓት"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"ቅንብሮች"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"ተጠባባቂ"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"የAndroid TV መሣሪያው በቅርቡ ይጠፋል፣ እንደበራ ለማቆየት ይጫኑ።"</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"መሣሪያው በቅርቡ ይጠፋል፤ እንደበራ ለማቆየት ይጫኑ።"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"ካሜራ"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"ማይክሮፎን"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"በማያዎ ላይ በሌሎች መተግበሪያዎች ላይ በማሳየት ላይ"</string>
@@ -2006,22 +2003,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"ቀጥታ ማጋራት አይገኝም"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"የመተግበሪያዎች ዝርዝር"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"ይህ መተግበሪያ የመቅረጽ ፈቃድ አልተሰጠውም፣ ነገር ግን በዚህ ዩኤስቢ መሣሪያ በኩል ኦዲዮን መቅረጽ ይችላል።"</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"መነሻ"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"ተመለስ"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"የቅርብ ጊዜ መተግበሪያዎች"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"ማሳወቂያዎች"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"ፈጣን ቅንብሮች"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"የኃይል መገናኛ"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"የተከፈለ ማያን ቀያይር"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"የማያ ገጽ ቁልፍ"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"ቅጽበታዊ ገጽ እይታ"</string>
</resources>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 4ecf6e7099b6..7f75fad6c84f 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -298,7 +298,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"‏هل تريد السماح لتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بالوصول إلى الموقع الجغرافي لهذا الجهاز؟"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"لن يكون بإمكان التطبيق الوصول إلى الموقع الجغرافي إلا عند استخدامك لهذا التطبيق."</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"‏هل تريد السماح للتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بالوصول إلى الموقع الجغرافي لهذا الجهاز &lt;b&gt;طوال الوقت&lt;/b&gt;؟"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"لا يمكن للتطبيقات الآن معرفة الموقع الجغرافي إلا عند استخدامك للتطبيق."</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"التقويم"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"الوصول تقويمك"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"‏هل تريد السماح لتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بالدخول إلى التقويم؟"</string>
@@ -2095,9 +2096,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"انقر للاطّلاع على ما تم حظره."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"النظام"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"الإعدادات"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"وضع الاستعداد"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"‏سيتم إيقاف جهاز Android TV قريبًا، اضغط على أحد الأزرار لمواصلة تشغيله."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"سيتم إيقاف الجهاز قريبًا، اضغط لمواصلة تشغيله."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"كاميرا"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"ميكروفون"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"العرض فوق التطبيقات الأخرى على شاشتك"</string>
@@ -2142,22 +2140,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"لا تتوفّر إمكانية المشاركة المباشرة."</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"قائمة التطبيقات"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"‏لم يتم منح هذا التطبيق إذن تسجيل، ولكن يمكنه تسجيل الصوت من خلال جهاز USB هذا."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"الشاشة الرئيسية"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"رجوع"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"التطبيقات المستخدمة مؤخرًا"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"الإشعارات"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"الإعدادات السريعة"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"مربّع حوار الطاقة"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"تبديل \"تقسيم الشاشة\""</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"شاشة القفل"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"لقطة شاشة"</string>
</resources>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index 81a04b7d83a0..31604efea50f 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক এই ডিভাইচটোৰ অৱস্থান জানিবলৈ অনুমতি দিবনে?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"আপুনি এই এপ্ ব্যৱহাৰ কৰি থকাৰ সময়তহে ই আপোনাৰ অৱস্থান এক্সেছ কৰিব পাৰে"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&amp;gtক এই ডিভাইচটোৰ অৱস্থান &lt;b&gt;সকলো সময়তে&lt;/b&gt; এক্সেছ কৰিবলৈ দিবনে?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"আপুনি কোনো এপ্ ব্যৱহাৰ কৰি থকাৰ সময়তহে সেই এপ্‌টোৱে অৱস্থান এক্সেছ কৰিব পাৰিব"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"কেলেণ্ডাৰ"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"আপোনাৰ কেলেণ্ডাৰ ব্যৱহাৰ কৰিব পাৰে"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক আপোনাৰ কেলেণ্ডাৰ চাবলৈ অনুমতি দিবনে?"</string>
@@ -1771,10 +1772,8 @@
<string name="package_updated_device_owner" msgid="1847154566357862089">"আপোনাৰ প্ৰশাসকে আপেডট কৰিছে"</string>
<string name="package_deleted_device_owner" msgid="2307122077550236438">"আপোনাৰ প্ৰশাসকে মচিছে"</string>
<string name="confirm_battery_saver" msgid="639106420541753635">"ঠিক আছে"</string>
- <!-- no translation found for battery_saver_description_with_learn_more (1002571337088673987) -->
- <skip />
- <!-- no translation found for battery_saver_description (2307555792915978653) -->
- <skip />
+ <string name="battery_saver_description_with_learn_more" msgid="1002571337088673987">"বেটাৰীৰ জীৱনকাল বৃদ্ধি কৰিবলৈ, বেটাৰি সঞ্চয়কাৰীয়ে:\n·গাঢ় ৰঙৰ থীম অন কৰে\n·নেপথ্যৰ কাৰ্যকলাপ, কিছুমান ভিজুৱেল প্ৰভাৱ আৰু “Hey Google”ৰ দৰে অন্য সুবিধাসমূহ অফ কৰে অথবা সেইবোৰ সীমাবদ্ধ কৰে\n\n"<annotation id="url">"অধিক জানক"</annotation></string>
+ <string name="battery_saver_description" msgid="2307555792915978653">"বেটাৰীৰ জীৱনকাল বৃদ্ধি কৰিবলৈ, বেটাৰি সঞ্চয়কাৰীয়ে:\n·গাঢ় ৰঙৰ থীম অন কৰে\n·নেপথ্যৰ কাৰ্যকলাপ, কিছুমান ভিজুৱেল প্ৰভাৱ আৰু “Hey Google”ৰ দৰে অন্য সুবিধাসমূহ অফ কৰে অথবা সেইবোৰ সীমাবদ্ধ কৰে"</string>
<string name="data_saver_description" msgid="6015391409098303235">"ডেটা ব্য়ৱহাৰ মাত্ৰা কম কৰিবৰ বাবে ডেটা সঞ্চয়কাৰীয়ে কিছুমান এপক নেপথ্য়ত ডেটা প্ৰেৰণ বা সংগ্ৰহ কৰাত বাধা প্ৰদান কৰে। আপুনি বৰ্তমান ব্য়ৱহাৰ কৰি থকা এটা এপে ডেটা ব্য়ৱহাৰ কৰিব পাৰে, কিন্তু সঘনাই এই কার্য কৰিব নোৱাৰিব পাৰে। ইয়াৰ অৰ্থ এইয়ে হ\'ব পাৰে যে, উদাহৰণস্বৰূপে, আপুনি নিটিপা পর্যন্ত প্ৰতিচ্ছবিসমূহ দেখুওৱা নহ’ব।"</string>
<string name="data_saver_enable_title" msgid="4674073932722787417">"ডেটা সঞ্চয়কাৰী অন কৰিবনে?"</string>
<string name="data_saver_enable_button" msgid="7147735965247211818">"অন কৰক"</string>
@@ -1965,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"কি কি অৱৰোধ কৰা হৈছে জানিবলৈ টিপক।"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"ছিষ্টেম"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"ছেটিংসমূহ"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"ষ্টেণ্ডবাই"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV ডিভাইচটো অতি সোনকালে অফ হ\'ব, এইটো অন ৰাখিবলৈ যিকোনো এটা বুটাম টিপক।"</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"এই ডিভাইচটো অতি সোনকালে অফ হ\'ব, এইটো অন ৰাখিবলৈ টিপক।"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"কেমেৰা"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"মাইক্ৰ\'ফ\'ন"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"স্ক্ৰীণত অইন এপৰ ওপৰত দেখুৱাওক"</string>
@@ -2008,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"পোনপটীয়া শ্বেয়াৰৰ সুবিধা নাই"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"এপ্‌সমূহৰ সূচী"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"এই এপ্‌টোক ৰেকর্ড কৰাৰ অনুমতি দিয়া হোৱা নাই কিন্তু ই এই ইউএছবি ডিভাইচটোৰ জৰিয়তে অডিঅ\' ৰেকর্ড কৰিব পাৰে।"</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"গৃহ"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"উভতি যাওক"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"শেহতীয়া এপ্‌সমূহ"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"জাননীসমূহ"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"ক্ষিপ্ৰ ছেটিংসমূহ"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"পাৱাৰ ডায়লগ"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"বিভাজিত স্ক্ৰীন ট’গল কৰক"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"লক স্ক্ৰীন"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"স্ক্ৰীণশ্বট"</string>
</resources>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 9f43c36876c0..40f5201ef5ec 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinə bu cihazın məkanına daxil olmaq icazəsi verilsin?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Tətbiq yalnız ondan istifadə etiyiniz zaman məkanı əldə edə bilər"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqin bu cihazın məkanına daxil olmasına icazə verilsin&lt;b&gt;all the time&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Tətbiq yalnız ondan istifadə etdiyiniz zaman məkana daxil ola biləcək"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Təqvim"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"təqvimə daxil olun"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinə təqvimə daxil olmaq icazəsi verilsin?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Nəyin blok edildiyini yoxlamaq üçün klikləyin."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistem"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Ayarlar"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Gözləmə rejimi"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV cihazı tezliklə sönəcək; aktiv saxlamaq üçün düyməyə basın."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Cihaz tezliklə sönəcək; aktiv saxlamaq üçün basın."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ekrandakı digər tətbiqlərdə göstərin"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Birbaşa paylaşım əlçatan deyil"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Tətbiq siyahısı"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Bu tətbiqə yazmaq icazəsi verilməyib, lakin, bu USB vasitəsilə səs yaza bilər."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Əsas səhifə"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Geri"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Son Tətbiqlər"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Bildirişlər"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Sürətli Ayarlar"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Yandırıb-söndürmə dialoqu"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Bölünmüş Ekrana keçid"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Kilid Ekranı"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Ekran şəkli"</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 a6ad7331c1d9..5e56c6402481 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -289,7 +289,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Želite li da omogućite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pristupa lokaciji ovog uređaja?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Aplikacija će imati pristup lokaciji samo dok koristite aplikaciju"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Želite li da dozvolite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pristupa lokaciji uređaja &lt;b&gt;u bilo kom trenutku&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Aplikacija trenutno može da pristupa lokaciji samo kada koristite aplikaciju"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"Ova aplikacija možda želi da pristupa lokaciji sve vreme, čak i kada ne koristite aplikaciju. Omogućite u "<annotation id="link">"podešavanjima"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendar"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"pristupi kalendaru"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Želite li da omogućite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pristupa kalendaru?"</string>
@@ -1996,9 +1996,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Dodirnite da biste proverili šta je blokirano."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistem"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Podešavanja"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Stanje pripravnosti"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV će se uskoro isključiti. Pritisnite dugme da bi ostao uključen."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Uređaj će se uskoro isključiti. Pritisnite da bi ostao uključen."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"prikazuje se na ekranu dok koristite druge aplikacije"</string>
@@ -2040,22 +2037,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Direktno deljenje nije dostupno"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Lista aplikacija"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Ova aplikacija nema dozvolu za snimanje, ali bi mogla da snima zvuk pomoću ovog USB uređaja."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Početak"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Nazad"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Nedavne aplikacije"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Obaveštenja"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Brza podešavanja"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Dijalog napajanja"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Uključite/isključite podeljeni ekran"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Zaključani ekran"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Snimak ekrana"</string>
</resources>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 92cad08ad093..6e227213e473 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -292,7 +292,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ да звестак аб месцазнаходжанні гэтай прылады?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Праграма будзе мець доступ да звестак пра месцазнаходжанне толькі падчас карыстання ёю"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ да даных пра месцазнаходжанне гэтай прылады &lt;b&gt;ўвесь час&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Цяпер праграма можа мець доступ да звестак пра месцазнаходжанне, толькі калі яна выкарыстоўваецца"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Каляндар"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"атрымліваць доступ да вашага календара"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ да вашага календара?"</string>
@@ -2029,9 +2030,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Націсніце, каб паглядзець заблакіраванае."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Сістэма"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Налады"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Рэжым чакання"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Прылада Android TV неўзабаве выключыцца. Каб пакінуць яе ўключанай, націсніце кнопку."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Прылада неўзабаве выключыцца. Націсніце, каб пакінуць яе ўключанай."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Камера"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Мікрафон"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"паказваецца паверх іншых праграм на экране"</string>
@@ -2074,22 +2072,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Непасрэднае абагульванне недаступнае"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Спіс праграм"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"У гэтай праграмы няма дазволу на запіс, аднак яна зможа запісваць аўдыя праз гэту USB-прыладу."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Галоўная старонка"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Назад"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Нядаўнія праграмы"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Апавяшчэнні"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Хуткія налады"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Дыялогавае акно сілкавання"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Пераключальнік падзеленага экрана"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Экран блакіроўкі"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Здымак экрана"</string>
</resources>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 9a4ca0cff046..00e2cb79de82 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да осъществява достъп до местоположението на това устройство?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Само когато използвате приложението, то ще има достъп до местоположението"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; достъп до местоположението на това устройство &lt;b&gt;по всяко време&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Понастоящем приложението има достъп до местоположението само когато се използва"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Календар"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"има достъп до календара ви"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да осъществява достъп до календара ви?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Докоснете, за да проверите какво е блокирано."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Система"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Настройки"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Режим на готовност"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Устройството с Android TV скоро ще се изключи. Натиснете бутон, за да остане включено."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Устройството скоро ще се изключи. Натиснете, за да остане включено."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Камера"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Микрофон"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"се показва върху други приложения на екрана"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Няма възможност за директно споделяне"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Списък с приложения"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Приложението няма разрешение за записване, но може да записва звук чрез това USB устройство."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Начало"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Назад"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Скорошни приложения"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Известия"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Бързи настройки"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Диалогов прозорец за захранването"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Превключване на разделения екран"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Заключен екран"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Екранна снимка"</string>
</resources>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index 4dc5f5c897ce..00974d7e2ecb 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; অ্যাপকে এই ডিভাইসের লোকেশন অ্যাক্সেস করতে দেবেন?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"আপনি এই অ্যাপ ব্যবহার করার সময়েই শুধু সেটি আপনার লোকেশন অ্যাক্সেস করতে পারবে"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; অ্যাপকে এই ডিভাইসের লোকেশন &lt;b&gt;সব সময়&lt;/b&gt; অ্যাক্সেস করার অনুমতি দিতে চান?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"আপনি যখন অ্যাপটি ব্যবহার করবেন শুধুমাত্র তখনই অ্যাপটি বর্তমান লোকেশন অ্যাক্সেস করতে পারবে।"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"ক্যালেন্ডার"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"আপনার ক্যালেন্ডারে অ্যাক্সেস"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-কে আপনার ক্যালেন্ডারে অ্যাক্সেস দেবেন?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"কী কী ব্লক করা আছে তা দেখতে ট্যাপ করুন।"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"সিস্টেম"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"সেটিংস"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"স্ট্যান্ডবাই"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV ডিভাইস শীঘ্রই বন্ধ হয়ে যাবে, চালু রাখতে বোতাম প্রেস করুন।"</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"ডিভাইস শীঘ্রই বন্ধ হয়ে যাবে, চালু রাখতে প্রেস করুন।"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"ক্যামেরা"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"মাইক্রোফোন"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"স্ক্রিনে অন্যান্য অ্যাপের উপরে দেখানো হচ্ছে"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"সরাসরি শেয়ার করার সুবিধা নেই"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"অ্যাপের তালিকা"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"এই অ্যাপকে রেকর্ড করার অনুমতি দেওয়া হয়নি কিন্তু USB ডিভাইসের মাধ্যমে সেটি অডিও রেকর্ড করতে পারে।"</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"হোম স্ক্রিন"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"ফিরে যান"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"সাম্প্রতিক অ্যাপ"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"বিজ্ঞপ্তি"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"দ্রুত সেটিংস"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"পাওয়ার ডায়লগ"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"স্প্লিট স্ক্রিন টগল করুন"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"লক স্ক্রিন"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"স্ক্রিনশট"</string>
</resources>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index ea4d20965f29..b426cdceab6f 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -289,7 +289,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Dozvoliti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da pristupi lokaciji ovog uređaja?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Aplikacija će imati pristup lokaciji isključivo dok je koristite"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Dozvoliti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pristup lokaciji uređaja &lt;b&gt;sve vrijeme&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Aplikacija trenutno može pristupati lokaciji isključivo dok je koristite"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"Moguće je da će aplikacija željeti pristup vašoj lokaciji sve vrijeme, čak i kada je ne budete koristili. Dozvolite u "<annotation id="link">"postavkama"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendar"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"pristupa vašem kalendaru"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Dozvoliti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da pristupi vašem kalendaru?"</string>
@@ -1796,8 +1796,8 @@
<string name="package_updated_device_owner" msgid="1847154566357862089">"Ažurirao je vaš administrator"</string>
<string name="package_deleted_device_owner" msgid="2307122077550236438">"Izbrisao je vaš administrator"</string>
<string name="confirm_battery_saver" msgid="639106420541753635">"Uredu"</string>
- <string name="battery_saver_description_with_learn_more" msgid="1002571337088673987">"Da bi se produljilo trajanje baterije, Štednja baterije:\n·Uključuje Tamnu temu.\n·Isključuje ili ograničava aktivnosti u pozadini, neke vizualne efekte i druge značajke kao što je \"Hey Google\".\n\n"<annotation id="url">"Saznajte više"</annotation></string>
- <string name="battery_saver_description" msgid="2307555792915978653">"Da bi se produljilo trajanje baterije, Štednja baterije:\n·Uključuje Tamnu temu.\n·Isključuje ili ograničava aktivnosti u pozadini, neke vizualne efekte i druge značajke kao što je \"Hey Google\"."</string>
+ <string name="battery_saver_description_with_learn_more" msgid="1002571337088673987">"Radi produženja vijeka trajanja baterije, Ušteda baterije:\n·Uključuje Tamnu temu\n·Isključuje ili ograničava aktivnosti u pozadini, određene vizuelne efekte i druge funkcije kao što je \"Hej Google\"\n\n"<annotation id="url">"Saznajte više"</annotation></string>
+ <string name="battery_saver_description" msgid="2307555792915978653">"Radi produženja vijeka trajanja baterije, Ušteda baterije:\n·Uključuje Tamnu temu\n·Isključuje ili ograničava aktivnosti u pozadini, određene vizuelne efekte i druge funkcije kao što je \"Hej Google\""</string>
<string name="data_saver_description" msgid="6015391409098303235">"Da bi se smanjio prijenos podataka, Ušteda podataka sprečava da neke aplikacije šalju ili primaju podatke u pozadini. Aplikacija koju trenutno koristite može pristupiti podacima, ali će to činiti rjeđe. To može značiti, naprimjer, da se slike ne prikazuju sve dok ih ne dodirnete."</string>
<string name="data_saver_enable_title" msgid="4674073932722787417">"Uključiti Uštedu podataka?"</string>
<string name="data_saver_enable_button" msgid="7147735965247211818">"Uključi"</string>
@@ -1998,9 +1998,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Dodirnite da provjerite šta je blokirano."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistem"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Postavke"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Stanje mirovanja"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV uređaj će se uskoro isključiti. Pritisnite dugme da ostane uključen."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Uređaj će se uskoro isključiti. Pritisnite da ostane uključen."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"prikazivanje preko drugih aplikacija na ekranu"</string>
@@ -2042,22 +2039,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Direktno dijeljenje nije dostupno"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Spisak aplikacija"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Ovoj aplikaciji nije dato odobrenje za snimanje, ali može snimati zvuk putem ovog USB uređaja."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Početna stranica"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Nazad"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Nedavne aplikacije"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Obavještenja"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Brze postavke"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Dijaloški okvir za napajanje"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Uključi/isključi podijeljeni ekran"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Zaključavanje ekrana"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Snimak ekrana"</string>
</resources>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 4f9eeb8108ee..02a78dd3f15d 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; accedeixi a la ubicació del dispositiu?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"L\'aplicació només tindrà accés a la ubicació quan l\'estiguis utilitzant"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; accedeixi sempre &lt;b&gt;sempre&lt;/b&gt; a la ubicació d\'aquest dispositiu?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Actualment l\'aplicació només pot accedir a la ubicació quan l\'estàs utilitzant"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendari"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"accedir al calendari"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; accedeixi al calendari?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Toca per consultar què s\'ha bloquejat."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistema"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Configuració"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"En espera"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"El dispositiu Android TV s\'apagarà aviat; prem un botó per mantenir-lo encès."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"El dispositiu s\'apagarà aviat; prem per mantenir-lo encès."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Càmera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Micròfon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"es mostra sobre altres aplicacions a la pantalla"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"La compartició directa no està disponible"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Llista d\'aplicacions"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Aquesta aplicació no té permís de gravació, però pot capturar àudio a través d\'aquest dispositiu USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Inici"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Torna"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Aplicacions recents"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notificacions"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Configuració ràpida"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Quadre de diàleg d\'engegada"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Commuta Pantalla dividida"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Pantalla de bloqueig"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Captura de pantalla"</string>
</resources>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 502a7a8d1961..39b197d4b5f2 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -292,7 +292,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; přístup k poloze tohoto zařízení?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Aplikace bude mít přístup k poloze, pouze když ji budete používat"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; přístup k poloze zařízení &lt;b&gt;po celou dobu&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Aplikace má přístup k poloze, pouze když ji používáte"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendář"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"přístup ke kalendáři"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; přístup ke kalendáři?"</string>
@@ -2029,9 +2030,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Klepnutím zkontrolujete, co je blokováno."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Systém"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Nastavení"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Pohotovostní režim"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Zařízení Android TV se brzy vypne, stisknutím tlačítka ho ponecháte zapnuté."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Zařízení se brzy vypne, stisknutím ho ponecháte zapnuté."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Fotoaparát"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"zobrazení přes ostatní aplikace na obrazovce"</string>
@@ -2074,22 +2072,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Přímé sdílení není k dispozici"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Seznam aplikací"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Tato aplikace nemá oprávnění k nahrávání, ale může zaznamenávat zvuk prostřednictvím tohoto zařízení USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Plocha"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Zpět"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Nedávné aplikace"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Oznámení"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Rychlé nastavení"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Dialogové okno k napájení"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Přepnout rozdělenou obrazovku"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Obrazovka uzamčení"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Snímek obrazovky"</string>
</resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index d347e357c4ae..6d16732f9a23 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; adgang til enhedens placering?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Appen har kun adgang til placeringen, når du bruger appen"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Skal &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; &lt;b&gt;altid&lt;/b&gt; have adgang til denne enheds placering?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Appen kan i øjeblikket kun få adgang til placeringen, mens du bruger appen"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalender"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"have adgang til din kalender"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; adgang til din kalender?"</string>
@@ -1079,7 +1080,7 @@
<string name="elapsed_time_short_format_h_mm_ss" msgid="1846071997616654124">"<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="6876518925844129331">"Markér alt"</string>
<string name="cut" msgid="3092569408438626261">"Klip"</string>
- <string name="copy" msgid="2681946229533511987">"Kopier"</string>
+ <string name="copy" msgid="2681946229533511987">"Kopiér"</string>
<string name="failed_to_copy_to_clipboard" msgid="1833662432489814471">"Der kunne ikke kopieres til udklipsholderen"</string>
<string name="paste" msgid="5629880836805036433">"Indsæt"</string>
<string name="paste_as_plain_text" msgid="5427792741908010675">"Indsæt som almindelig tekst"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Tryk for at se, hvad der er blokeret."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"System"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Indstillinger"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Standby"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV-enheden slukker snart. Tryk på en knap for at holde den tændt."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Enheden slukker snart. Tryk for at holde den tændt."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"vises over andre apps på din skærm"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Det er ikke muligt at dele direkte"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Liste over apps"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Denne app har ikke fået tilladelse til at optage, men optager muligvis lyd via denne USB-enhed."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Hjem"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Tilbage"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Seneste apps"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notifikationer"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Kvikmenu"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Dialogboks om strøm"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Slå Opdelt skærm til eller fra"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Låseskærm"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Screenshot"</string>
</resources>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index b4b40eabd859..cbcb4a39d5c6 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Zulassen, dass die App &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; den Gerätestandort abruft?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Die App hat nur Zugriff auf den Gerätestandort, solange du sie verwendest"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Zulassen, dass &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; &lt;b&gt;ständig&lt;/b&gt; auf deinen Standort zugreift?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Die App hat gegenwärtig nur dann Zugriff auf den Gerätestandort, wenn du sie verwendest"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalender"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"auf deinen Kalender zugreifen"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Zulassen, dass &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; auf deinen Kalender zugreift?"</string>
@@ -1771,10 +1772,8 @@
<string name="package_updated_device_owner" msgid="1847154566357862089">"Von deinem Administrator aktualisiert"</string>
<string name="package_deleted_device_owner" msgid="2307122077550236438">"Von deinem Administrator gelöscht"</string>
<string name="confirm_battery_saver" msgid="639106420541753635">"Ok"</string>
- <!-- no translation found for battery_saver_description_with_learn_more (1002571337088673987) -->
- <skip />
- <!-- no translation found for battery_saver_description (2307555792915978653) -->
- <skip />
+ <string name="battery_saver_description_with_learn_more" msgid="1002571337088673987">"Der Energiesparmodus sorgt für eine längere Akkulaufzeit:\n·Das dunkle Design wird aktiviert\n·Hintergrundaktivitäten, einige optische Effekte und weitere Funktionen wie \"Ok Google\" werden abgeschaltet oder eingeschränkt\n\n"<annotation id="url">"Weitere Informationen"</annotation></string>
+ <string name="battery_saver_description" msgid="2307555792915978653">"Der Energiesparmodus sorgt für eine längere Akkulaufzeit:\n Das dunkle Design wird aktiviert\n·Hintergrundaktivitäten, einige optische Effekte und weitere Funktionen wie \"Ok Google\" werden abgeschaltet oder eingeschränkt"</string>
<string name="data_saver_description" msgid="6015391409098303235">"Der Datensparmodus verhindert zum einen, dass Apps im Hintergrund Daten senden oder empfangen, sodass weniger Daten verbraucht werden. Zum anderen werden die Datenzugriffe der gerade aktiven App eingeschränkt, was z. B. dazu führen kann, dass Bilder erst angetippt werden müssen, bevor sie sichtbar werden."</string>
<string name="data_saver_enable_title" msgid="4674073932722787417">"Datensparmodus aktivieren?"</string>
<string name="data_saver_enable_button" msgid="7147735965247211818">"Aktivieren"</string>
@@ -1965,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Tippe, um zu überprüfen, welche Inhalte blockiert werden."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"System"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Einstellungen"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Standby"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Das Android TV-Gerät wird demnächst abgeschaltet. Drücke eine Taste, damit es eingeschaltet bleibt."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Das Gerät wird demnächst abgeschaltet. Drücke beispielsweise eine Taste oder berühre den Bildschirm, damit es eingeschaltet bleibt."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"wird über anderen Apps auf dem Bildschirm angezeigt"</string>
@@ -2008,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Direct Share nicht verfügbar"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Liste der Apps"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Diese App hat noch keine Berechtigung zum Aufnehmen erhalten, könnte aber Audioaufnahmen über dieses USB-Gerät machen."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Startseite"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Zurück"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Letzte Apps"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Benachrichtigungen"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Schnelleinstellungen"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Kleines Fenster für Akkustand"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"\"Bildschirm teilen\" ein-/ausschalten"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Sperrbildschirm"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Screenshot"</string>
</resources>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 73828a1296df..c01749560ddb 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Να επιτρέπεται στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; να έχει πρόσβαση στην τοποθεσία αυτής της συσκευής;"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Η εφαρμογή θα έχει πρόσβαση στην τοποθεσία μόνο κατά τη διάρκεια χρήσης της εφαρμογής"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Να επιτρέπεται η πρόσβαση της εφαρμογής &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; στην τοποθεσία της συσκευής&lt;b&gt;διαρκώς&lt;/b&gt;;"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Οι εφαρμογές μπορούν αυτήν τη στιγμή να έχουν πρόσβαση στην τοποθεσία μόνο κατά τη χρήση της εφαρμογής"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"Αυτή η εφαρμογή θέλει να έχει συνεχώς πρόσβαση στην τοποθεσία σας, ακόμη και όταν δεν χρησιμοποιείτε την εφαρμογή. Εγκρίνετε το αίτημα στις "<annotation id="link">"ρυθμίσεις"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Ημερολόγιο"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"έχει πρόσβαση στο ημερολόγιό σας"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Να επιτρέπεται στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; να έχει πρόσβαση στο ημερολόγιό σας;"</string>
@@ -1963,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Πατήστε για να ελέγξετε το περιεχόμενο που έχει αποκλειστεί."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Σύστημα"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Ρυθμίσεις"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Κατάσταση αναμονής"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Η συσκευή Android TV σύντομα θα απενεργοποιηθεί. Πατήστε ένα κουμπί για να την κρατήσετε ενεργοποιημένη."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Η συσκευή σύντομα θα απενεργοποιηθεί. Πατήστε για να την κρατήσετε ενεργοποιημένη."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Κάμερα"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Μικρόφωνο"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"εμφανίζεται πάνω σε άλλες εφαρμογές στην οθόνη σας"</string>
@@ -2006,22 +2003,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Η άμεση κοινοποίηση δεν είναι διαθέσιμη"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Λίστα εφαρμογών"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Δεν έχει εκχωρηθεί άδεια εγγραφής σε αυτήν την εφαρμογή, αλλά μέσω αυτής της συσκευής USB θα μπορεί να εγγράφει ήχο."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Αρχική οθόνη"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Επιστροφή"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Πρόσφατες εφαρμογές"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Ειδοποιήσεις"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Γρήγορες ρυθμίσεις"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Παράθυρο διαλόγου λειτουργίας συσκευής"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Εναλλαγή διαχωρισμού οθόνης"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Οθόνη κλειδώματος"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Στιγμιότυπο οθόνης"</string>
</resources>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 9163214f0204..8c42b04c3dd3 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access this device\'s location?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"The app will only have access to the location while you’re using the app"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access this device’s location &lt;b&gt;all the time&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"App currently can access location only while you’re using the app"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"This app may want to access your location all the time, even when you’re not using the app. Allow in "<annotation id="link">"settings"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendar"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"access your calendar"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access your calendar?"</string>
@@ -1963,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Tap to check what\'s blocked."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"System"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Settings"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Standby"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"The Android TV device will soon turn off; press a button to keep it on."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"The device will soon turn off; press to keep it on."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Camera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microphone"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"displaying over other apps on your screen"</string>
@@ -2006,22 +2003,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Direct share not available"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Apps list"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"This app has not been granted record permission but could capture audio through this USB device."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Home"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Back"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Recent Apps"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notifications"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Quick Settings"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Power Dialogue"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Toggle Split Screen"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Lock Screen"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Screenshot"</string>
</resources>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index dff558f545c3..2efffbbfc414 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access this device\'s location?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"The app will only have access to the location while you’re using the app"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access this device’s location &lt;b&gt;all the time&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"App currently can access location only while you’re using the app"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"This app may want to access your location all the time, even when you’re not using the app. Allow in "<annotation id="link">"settings"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendar"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"access your calendar"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access your calendar?"</string>
@@ -1963,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Tap to check what\'s blocked."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"System"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Settings"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Standby"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"The Android TV device will soon turn off; press a button to keep it on."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"The device will soon turn off; press to keep it on."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Camera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microphone"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"displaying over other apps on your screen"</string>
@@ -2006,22 +2003,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Direct share not available"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Apps list"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"This app has not been granted record permission but could capture audio through this USB device."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Home"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Back"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Recent Apps"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notifications"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Quick Settings"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Power Dialogue"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Toggle Split Screen"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Lock Screen"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Screenshot"</string>
</resources>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 9163214f0204..8c42b04c3dd3 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access this device\'s location?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"The app will only have access to the location while you’re using the app"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access this device’s location &lt;b&gt;all the time&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"App currently can access location only while you’re using the app"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"This app may want to access your location all the time, even when you’re not using the app. Allow in "<annotation id="link">"settings"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendar"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"access your calendar"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access your calendar?"</string>
@@ -1963,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Tap to check what\'s blocked."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"System"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Settings"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Standby"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"The Android TV device will soon turn off; press a button to keep it on."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"The device will soon turn off; press to keep it on."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Camera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microphone"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"displaying over other apps on your screen"</string>
@@ -2006,22 +2003,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Direct share not available"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Apps list"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"This app has not been granted record permission but could capture audio through this USB device."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Home"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Back"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Recent Apps"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notifications"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Quick Settings"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Power Dialogue"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Toggle Split Screen"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Lock Screen"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Screenshot"</string>
</resources>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 9163214f0204..8c42b04c3dd3 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access this device\'s location?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"The app will only have access to the location while you’re using the app"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access this device’s location &lt;b&gt;all the time&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"App currently can access location only while you’re using the app"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"This app may want to access your location all the time, even when you’re not using the app. Allow in "<annotation id="link">"settings"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendar"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"access your calendar"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access your calendar?"</string>
@@ -1963,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Tap to check what\'s blocked."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"System"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Settings"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Standby"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"The Android TV device will soon turn off; press a button to keep it on."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"The device will soon turn off; press to keep it on."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Camera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microphone"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"displaying over other apps on your screen"</string>
@@ -2006,22 +2003,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Direct share not available"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Apps list"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"This app has not been granted record permission but could capture audio through this USB device."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Home"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Back"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Recent Apps"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notifications"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Quick Settings"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Power Dialogue"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Toggle Split Screen"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Lock Screen"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Screenshot"</string>
</resources>
diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml
index 7519ad62b9f3..d32edab88686 100644
--- a/core/res/res/values-en-rXC/strings.xml
+++ b/core/res/res/values-en-rXC/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‎‎‏‎‎‏‎‏‎‏‎‏‎‎‎‏‎‏‏‎‏‎‏‏‎‏‏‎‏‎‏‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‎‎‎‏‏‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to access this device\'s location?‎‏‎‎‏‎"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‏‎‏‏‎‎‏‎‎‎‏‎‏‏‎‏‏‏‎‎‏‏‏‏‎‏‏‎‏‎‏‏‎‏‏‏‎‎‎‏‎‎‎‏‎‏‎‏‎‎‏‎‎‏‏‎‎The app will only have access to the location while you’re using the app‎‏‎‎‏‎"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‏‏‎‏‏‏‎‎‏‎‏‏‎‎‏‏‏‏‎‎‏‏‎‎‏‎‎‏‎‎‎‏‏‏‏‎‏‏‎‎‏‎‎‎‏‏‎‎‎‏‏‎‎‏‏‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to access this device’s location &lt;b&gt;all the time&lt;/b&gt;?‎‏‎‎‏‎"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‏‎‏‏‎‎‏‎‏‏‎‎‎‎‎‎‎‎‏‏‎‏‎‏‏‏‎‏‎‏‎‏‏‏‏‎‏‏‏‏‎‏‎‏‎‏‏‎App currently can access location only while you’re using the app‎‏‎‎‏‎"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‏‏‏‎‏‎‎‏‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎‎‎‏‎‏‎‏‏‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‎‎This app may want to access your location all the time, even when you’re not using the app. Allow in ‎‏‎‎‏‏‎"<annotation id="link">"‎‏‎‎‏‏‏‎settings‎‏‎‎‏‏‎"</annotation>"‎‏‎‎‏‏‏‎.‎‏‎‎‏‎"</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‎‏‏‏‏‏‎‏‎‏‏‏‎‏‏‏‎‏‏‎‏‏‏‎‏‎‎‎‏‏‏‎‎‏‏‎‏‎‎‎‏‎‎‎‏‏‎‎‏‏‏‏‏‎‎Calendar‎‏‎‎‏‎"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‎‎‎‏‏‏‏‏‎‏‎‏‎‎‎‎‎‏‏‏‏‎‏‎‏‏‎‏‎‎‏‎‎‏‏‏‏‎‏‎‏‎‎access your calendar‎‏‎‎‏‎"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‎‎‎‎‎‏‎‏‏‏‏‎‏‏‏‏‎‎‏‏‎‏‏‎‎‏‎‏‏‏‎‎‎‏‏‎‏‏‎‏‎‎‎‏‎‎‏‎‎‎‏‎‏‏‎‏‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to access your calendar?‎‏‎‎‏‎"</string>
@@ -1963,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‎‏‎‎‏‎‎‎‏‏‎‎‏‏‏‎‎‎‏‏‎‎‎‎‎‎‎‎‎‏‏‎‏‏‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‎Tap to check what\'s blocked.‎‏‎‎‏‎"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‎‏‎‏‏‎‏‏‎‏‎‎‎‏‏‎‏‎‎‎‎‎‎‎‎‏‏‏‎‏‎‎‏‏‎‏‎‎‎‎‎‎‎‏‎‏‏‏‏‎‏‎‏‎‏‎‎System‎‏‎‎‏‎"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‏‎‎‏‎‏‎‏‎‏‎‏‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‏‎‎‏‏‏‏‎‏‎‏‎‏‎‏‎‎‎‎‏‎‎‏‎‏‎Settings‎‏‎‎‏‎"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‏‏‎‎‎‏‎‏‏‎‎‎‎‎‏‏‎‎‎‎‏‏‎‎‏‏‏‏‎‎‏‏‏‏‏‏‎‏‎‏‎‏‎Standby‎‏‎‎‏‎"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‏‎‎‏‎‏‎‎‎‎‏‎‎‎‏‎‎‏‎‏‏‎‏‎‏‏‎‏‏‏‎‎‏‎‎‏‎‎‏‏‎‎‎‎‎‎‎‏‏‎‎‏‏‎The Android TV device will soon turn off; press a button to keep it on.‎‏‎‎‏‎"</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‏‏‎‏‎‎‎‎‎‎‎‎‏‎‏‏‎‎‎‎‎‎‏‏‏‎‎‎‎‏‏‏‎‏‎‎‎‎‎‏‏‎‎‏‏‎‎‎The device will soon turn off; press to keep it on.‎‏‎‎‏‎"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‎‎‏‎‏‏‎‎‎‏‏‎‏‎‏‏‎‏‎‏‏‏‏‎‎‏‎‎‎‎‎‎‏‎‎‎‏‏‏‏‎‎‏‎‎‎‎‎‎‏‏‏‎‏‏‎Camera‎‏‎‎‏‎"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‎‎‏‎‏‎‏‎‎‎‎‏‏‎‎‏‎‏‏‎‏‎‎‎‎‏‏‎‏‏‎‎‏‎‏‎‏‏‏‎‎‏‏‏‏‏‎‏‏‏‏‏‎‎‏‎‎Microphone‎‏‎‎‏‎"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‎‎‏‎‏‏‏‏‎‎‎‎‎‏‏‎‎‏‎‎‏‎‏‎‏‏‎‎‎‏‎‎‏‏‎‎‏‎‎‏‎‎‎‏‏‎‏‎‎‎‏‎‎‏‎displaying over other apps on your screen‎‏‎‎‏‎"</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 038124993179..ad59833dfe5b 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a la ubicación de este dispositivo?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"La app solo tendrá acceso a la ubicación cuando esté en uso"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"¿Quieres permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a la ubicación de este dispositivo &lt;b&gt;todo el tiempo&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Actualmente, la app puede acceder a la ubicación solo cuando está en uso"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendario"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"acceder al calendario"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a tu calendario?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Presiona para consultar lo que está bloqueado."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistema"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Configuración"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"En espera"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Pronto se apagará el dispositivo Android TV; presiona un botón para mantenerlo encendido."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Pronto se apagará el dispositivo; presiona para mantenerlo encendido."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Cámara"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Micrófono"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"se superpone a otras apps en tu pantalla"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"No está disponible el uso compartido directo"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Lista de apps"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Aunque no se le otorgó permiso de grabación a esta app, puede capturar audio con este dispositivo USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Página principal"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Atrás"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Apps recientes"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notificaciones"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Configuración rápida"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Diálogo de encendido"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Activar o desactivar pantalla dividida"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Bloquear pantalla"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Captura de pantalla"</string>
</resources>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 7f152e1e4e1c..70712638b54b 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"¿Quieres permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a la ubicación de este dispositivo?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"La aplicación solo podrá acceder a la ubicación cuando la estés usando"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"¿Quieres permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda siempre &lt;b&gt;a la ubicación de tu dispositivo&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Actualmente la aplicación puede acceder a la ubicación solo cuando la estés usando"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"Es posible que esta aplicación quiera acceder a tu ubicación siempre, aunque no la estés usando. Puedes darle permiso en "<annotation id="link">"Ajustes"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendario"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"acceder a tu calendario"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"¿Quieres permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a tu calendario?"</string>
@@ -1963,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Toca para consultar lo que se está bloqueando."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistema"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Ajustes"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Inactividad"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"El dispositivo Android TV pronto se apagará, pulsa un botón para evitarlo."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"El dispositivo pronto se apagará si no interactúas con él para evitarlo."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Cámara"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Micrófono"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"se muestra sobre otras aplicaciones que haya en la pantalla"</string>
@@ -2006,22 +2003,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"No se puede compartir directamente"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Lista de aplicaciones"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Esta aplicación no tiene permiso para grabar, pero podría registrar audio con este dispositivo USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Inicio"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Atrás"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Aplicaciones recientes"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notificaciones"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Ajustes rápidos"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Abrir cuadro de diálogo"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Activar o desactivar la pantalla dividida"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Pantalla de bloqueo"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Captura de pantalla"</string>
</resources>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index a48c4829b30c..0bf37ce7ae37 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Kas lubada rakendusele &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; juurdepääs selle seadme asukohale?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Rakendusel on juurdepääs asukohale vaid sel ajal, kui rakendust kasutate"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Kas lubada rakendusel &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; &lt;b&gt;alati&lt;/b&gt; seadme asukohale juurde pääseda?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Rakendusel on praegu juurdepääs asukohale vaid sel ajal, kui rakendust kasutate."</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalender"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"juurdepääs kalendrile"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Kas lubada rakendusele &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; juurdepääs teie kalendrile?"</string>
@@ -789,7 +790,7 @@
<string name="relationTypeDomesticPartner" msgid="6904807112121122133">"Elukaaslane"</string>
<string name="relationTypeFather" msgid="5228034687082050725">"Isa"</string>
<string name="relationTypeFriend" msgid="7313106762483391262">"Sõber"</string>
- <string name="relationTypeManager" msgid="6365677861610137895">"Haldur"</string>
+ <string name="relationTypeManager" msgid="6365677861610137895">"Juht"</string>
<string name="relationTypeMother" msgid="4578571352962758304">"Ema"</string>
<string name="relationTypeParent" msgid="4755635567562925226">"Vanem"</string>
<string name="relationTypePartner" msgid="7266490285120262781">"Partner"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Puudutage, et kontrollida, mis on blokeeritud."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Süsteem"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Seaded"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Ooterežiim"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV seade lülitub varsti välja; selle aktiivsena hoidmiseks vajutage nuppu."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Seade lülitub värsti välja; selle aktiivsena hoidmiseks vajutage nuppu."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kaamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"teie ekraanil muude rakenduste peal kuvamine"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Vahetu jagamine ei ole saadaval"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Rakenduste loend"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Sellele rakendusele pole antud salvestamise luba, kuid see saab heli jäädvustada selle USB-seadme kaudu."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Avakuva"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Tagasi"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Hiljutised rakendused"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Märguanded"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Kiirseaded"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Energiasäästja dialoog"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Vaheta jagatud ekraanikuva"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Lukustuskuva"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Ekraanipilt"</string>
</resources>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index 805df6e97847..1985c7729477 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Gailuaren kokapena atzitzeko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Hura erabiltzen ari zarenean soilik atzituko du aplikazioak kokapena"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Gailuaren kokapena &lt;b&gt;beti&lt;/b&gt; atzitzeko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Aplikazioak hura darabilzunean atzi dezake kokapena"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Egutegia"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"atzitu egutegia"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Egutegia atzitzeko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Sakatu zer dagoen blokeatuta ikusteko."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistema"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Ezarpenak"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Egonean"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV gailua laster itzaliko da; sakatu botoi bat piztuta mantentzeko."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Gailua laster itzaliko da; sakatu piztuta mantentzeko."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofonoa"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"pantailako beste aplikazioen gainean bistaratzen"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Zuzenean partekatzeko aukera ez dago erabilgarri"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Aplikazioen zerrenda"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Aplikazioak ez du grabatzeko baimenik, baina baliteke audioa grabatzea USB bidezko gailu horren bidez."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Pantaila nagusia"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Atzera"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Erabilitako azken aplikazioak"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Jakinarazpenak"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Ezarpen bizkorrak"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Piztu edo itzaltzeko leihoa"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Aktibatu/Desaktibatu pantaila zatitua"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Pantaila blokeatua"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Pantaila-argazkia"</string>
</resources>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 98044c60eaee..97c889dea43e 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"‏به &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; اجازه داده شود به مکان این دستگاه دسترسی پیدا کند؟"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"این برنامه فقط وقتی از آن استفاده می‌کنید، به مکان دسترسی خواهد داشت"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"‏به &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; اجازه می‌دهید &lt;b&gt;همیشه&lt;/b&gt; به مکان این دستگاه دسترسی یابد؟"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"درحال‌حاضر برنامه، فقط وقتی از آن استفاده می‌کنید، می‌تواند به مکان دسترسی یابد"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"تقویم"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"دسترسی به تقویم شما"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"‏به &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; اجازه داده شود به تقویم شما دسترسی پیدا کند؟"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"برای بررسی موارد مسدودشده ضربه بزنید."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"سیستم"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"تنظیمات"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"آماده‌به‌کار"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"‏دستگاه Android TV به‌زودی خاموش می‌شود، برای روشن نگه‌داشتن آن، دکمه‌ای را فشار دهید."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"دستگاه به‌زودی خاموش می‌شود، برای روشن نگه‌داشتن آن فشار دهید."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"دوربین"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"میکروفون"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"نمایش روی برنامه‌های دیگر در صفحه‌نمایش"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"اشتراک‌گذاری مستقیم دردسترس نیست"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"فهرست برنامه‌ها"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"‏مجوز ضبط به این برنامه داده نشده است اما می‌تواند صدا را ازطریق این دستگاه USB ضبط کند."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"صفحه اصلی"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"برگشت"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"برنامه‌های اخیر"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"اعلان‌ها"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"تنظیمات سریع"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"کادر گفتگوی روشن/خاموش"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"تغییر وضعیت صفحهٔ دونیمه"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"صفحه قفل"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"عکس صفحه‌نمایش"</string>
</resources>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 3476bf52fef3..9d44aad50124 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; oikeuden nähdä tämän laitteen sijainnin?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Sovellus saa sijainnin käyttöoikeuden vain silloin, kun käytät sovellusta"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; käyttää laitteen sijaintia &lt;b&gt;aina&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Sovellus saa tällä hetkellä sijainnin käyttöoikeuden vain, jos käytät sovellusta"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalenteri"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"käyttää kalenteria"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; kalenterisi käyttöoikeuden?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Napauta niin näet, mitä on estetty."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Järjestelmä"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Asetukset"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Säästötila"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV ‑laite sammuu pian. Pidä se päällä painamalla painiketta."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Laite sammuu pian. Pidä se päällä painamalla."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofoni"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"näkyy näytöllä muiden sovellusten päällä"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Suora jakaminen ei käytettävissä"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Sovellusluettelo"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Sovellus ei ole saanut tallennuslupaa mutta voi tallentaa ääntä tämän USB-laitteen avulla."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Aloitusnäyttö"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Takaisin"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Viimeisimmät sovellukset"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Ilmoitukset"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Pika-asetukset"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Virran valintaikkuna"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Jaettu näyttö päälle/pois"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Lukitusnäyttö"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Kuvakaappaus"</string>
</resources>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 702ecc022932..273ae5cfde5f 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à accéder à la position de cet appareil?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"L\'application aura uniquement accès à la position lorsque vous l\'utilisez"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Autoriser « <xliff:g id="APP_NAME">%1$s</xliff:g> » à accéder à la position de cet appareil en tout temps?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Pour le moment, l\'application peut uniquement accéder à la position lorsque vous l\'utilisez"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Agenda"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"accéder à votre agenda"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à accéder à votre agenda?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Touchez l\'écran pour vérifier ce qui est bloqué."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Système"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Paramètres"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Veille"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"L\'appareil Android TV va bientôt s\'éteindre. Appuyez sur un bouton pour le laisser allumé."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"L\'appareil va bientôt s\'éteindre. Interagissez avec lui pour le laisser allumé."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Appareil photo"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microphone"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"superpose du contenu par-dessus d\'autres applications à l\'écran"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Le partage direct n\'est pas disponible"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Liste des applications"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Cette application n\'a pas été autorisée à effectuer des enregistrements, mais elle pourrait capturer du contenu audio par l\'intermédiaire de cet appareil USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Accueil"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Retour"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Applications récentes"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notifications"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Paramètres rapides"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Boîte de dialogue sur l\'alimentation"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Basculer l\'écran partagé"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Écran de verrouillage"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Capture d\'écran"</string>
</resources>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index eb199ded51f1..8d8b36524ce4 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Autoriser l\'appli &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à accéder à la position de cet appareil ?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"L\'application n\'a accès à la position de l\'appareil que lorsqu\'elle est ouverte"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à accéder &lt;b&gt;en permanence&lt;/b&gt; à la position de cet appareil ?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"L\'application peut actuellement accéder à la position uniquement pendant que vous l\'utilisez"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Agenda"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"accéder à votre agenda"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Permettre à &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; d\'accéder à votre agenda ?"</string>
@@ -1965,9 +1966,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Appuyez pour vérifier les contenus bloqués."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Système"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Paramètres"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Mode Veille imminent"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"L\'appareil Android TV va bientôt passer en mode Veille. Appuyez sur un bouton pour qu\'il reste allumé."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"L\'appareil va bientôt passer en mode Veille. Appuyez dessus pour qu\'il reste allumé."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Caméra"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Micro"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"se superpose aux autres applications sur l\'écran"</string>
@@ -2008,22 +2006,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Le partage direct n\'est pas disponible"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Liste des applications"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Cette application n\'a pas reçu l\'autorisation d\'enregistrer des contenus audio, mais peut le faire via ce périphérique USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Accueil"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Retour"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Applications récentes"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notifications"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Configuration rapide"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Boîte de dialogue Marche/Arrêt"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Activer/Désactiver l\'écran partagé"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Verrouiller l\'écran"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Capture d\'écran"</string>
</resources>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 965997317969..d3a6840b9c67 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Permitir que a aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda á localización deste dispositivo?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"A aplicación só terá acceso á localización mentres a esteas utilizando"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Queres permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda á localización deste dispositivo &lt;b&gt;sempre&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Actualmente, a aplicación pode acceder á localización só mentres a utilices"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendario"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"acceder ao teu calendario"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Queres permitir que a aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda ao teu calendario?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Toca para comprobar o contido bloqueado."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistema"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Configuración"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Modo de espera"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Pronto se apagará o dispositivo Android TV. Preme un botón para mantelo acendido."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Pronto se apagará o teléfono. Tócao para mantelo acendido."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Cámara"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Micrófono"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"mostrando outras aplicacións na pantalla"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Non está dispoñible a función de compartir directamente"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Lista de aplicacións"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Esta aplicación non está autorizada a realizar gravacións, pero pode capturar audio a través deste dispositivo USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Inicio"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Volver"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Aplicacións recentes"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notificacións"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Configuración rápida"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Diálogo sobre a enerxía"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Activar/desactivar pantalla dividida"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Pantalla de bloqueo"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Captura de pantalla"</string>
</resources>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index 6dab622a29ae..5750c85a65b6 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને આ ડિવાઇસના સ્થાનને ઍક્સેસ કરવાની મંજૂરી આપીએ?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"જ્યારે તમે ઍપનો ઉપયોગ કરી રહ્યા હશો માત્ર ત્યારે જ ઍપ સ્થાનને ઍક્સેસ કરી શકશે"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને આ ડિવાઇસનું સ્થાન &lt;b&gt;હંમેશાં&lt;/b&gt; ઍક્સેસ કરવાની મંજૂરી આપીએ?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"હાલમાં માત્ર જ્યારે તમે ઍપનો ઉપયોગ કરી રહ્યા હશો હોય ત્યારે જ ઍપ સ્થાનને ઍક્સેસ કરી શકશે"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"કૅલેન્ડર"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"તમારા કેલેન્ડરને ઍક્સેસ કરવાની"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને તમારા કૅલેન્ડરને ઍક્સેસ કરવાની મંજૂરી આપીએ?"</string>
@@ -1342,7 +1343,7 @@
<string name="alert_windows_notification_channel_group_name" msgid="1463953341148606396">"અન્ય ઍપથી ઉપર બતાવો"</string>
<string name="alert_windows_notification_channel_name" msgid="3116610965549449803">"<xliff:g id="NAME">%s</xliff:g> અન્ય ઍપ્લિકેશનોની ઉપર પ્રદર્શિત થઈ રહ્યું છે"</string>
<string name="alert_windows_notification_title" msgid="3697657294867638947">"<xliff:g id="NAME">%s</xliff:g> અન્ય ઍપ્લિકેશનો પર દેખાઈ છે"</string>
- <string name="alert_windows_notification_message" msgid="8917232109522912560">"જો તમે નથી ઇચ્છતા કે <xliff:g id="NAME">%s</xliff:g> આ સુવિધાનો ઉપયોગ કરે, તો સેટિંગ્સ ખોલવા માટે ટૅપ કરો અને તેને બંધ કરો."</string>
+ <string name="alert_windows_notification_message" msgid="8917232109522912560">"જો તમે નથી ઇચ્છતા કે <xliff:g id="NAME">%s</xliff:g> આ સુવિધાનો ઉપયોગ કરે, તો સેટિંગ ખોલવા માટે ટૅપ કરો અને તેને બંધ કરો."</string>
<string name="alert_windows_notification_turn_off_action" msgid="2902891971380544651">"બંધ કરો"</string>
<string name="ext_media_checking_notification_title" msgid="4411133692439308924">"<xliff:g id="NAME">%s</xliff:g> તપાસી રહ્યાં છીએ…"</string>
<string name="ext_media_checking_notification_message" msgid="410185170877285434">"હાલના કન્ટેન્ટને રિવ્યૂ કરવું"</string>
@@ -1888,7 +1889,7 @@
<string name="app_category_image" msgid="4867854544519846048">"ફોટો અને છબીઓ"</string>
<string name="app_category_social" msgid="5842783057834965912">"સામાજિક અને સંચાર"</string>
<string name="app_category_news" msgid="7496506240743986873">"સમાચાર અને સામાયિકો"</string>
- <string name="app_category_maps" msgid="5878491404538024367">"નકશા અને નેવિગેશન"</string>
+ <string name="app_category_maps" msgid="5878491404538024367">"Maps અને નેવિગેશન"</string>
<string name="app_category_productivity" msgid="3742083261781538852">"ઉત્પાદકતા"</string>
<string name="device_storage_monitor_notification_channel" msgid="3295871267414816228">"ડિવાઇસ સ્ટૉરેજ"</string>
<string name="adb_debugging_notification_channel_tv" msgid="5537766997350092316">"USB ડિબગિંગ"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"શું બ્લૉક કરેલ છે તે તપાસવા માટે ટૅપ કરો."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"સિસ્ટમ"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"સેટિંગ"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"સ્ટૅન્ડબાય"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android ટીવી ડિવાઇસ ટૂંક સમયમાં બંધ થશે; તેને ચાલુ રાખવા માટે બટન દબાવો."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"ડિવાઇસ ટૂંક સમયમાં બંધ થશે; તેને ચાલુ રાખવા માટે દબાવો."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"કૅમેરા"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"માઇક્રોફોન"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"આ તમારી સ્ક્રીન પર અન્ય ઍપની ઉપર દેખાશે"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"ડાયરેક્ટ શેર કરવાનું ઉપલબ્ધ નથી"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"ઍપની સૂચિ"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"આ ઍપને રેકૉર્ડ કરવાની પરવાનગી આપવામાં આવી નથી પરંતુ તે આ USB ડિવાઇસ મારફતે ઑડિયો કૅપ્ચર કરી શકે છે."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"હોમ"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"પાછળ"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"તાજેતરની ઍપ"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"નોટિફિકેશન"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"ઝડપી સેટિંગ"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"પાવર સંવાદ"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"સ્ક્રીનને વિભાજિત કરવાની ક્રિયા ટૉગલ કરો"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"લૉક સ્ક્રીન"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"સ્ક્રીનશૉટ"</string>
</resources>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 1a082b90f954..16a6031f4f99 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को इस डिवाइस की \'जगह की जानकारी\' ऐक्सेस करने की अनुमति देना चाहते हैं?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"ऐप्लिकेशन, डिवाइस की जगह की जानकारी सिर्फ़ तभी देख पाएगा जब आप इसका इस्तेमाल कर रहे हों"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"क्या आप <xliff:g id="APP_NAME">%1$s</xliff:g> को हमेशा के लिए जगह की जानकारी ऐक्सेस करने की अनुमति देना चाहते हैं?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"इस समय ऐप्लिकेशन, डिवाइस की \'जगह की जानकारी\' सिर्फ़ तभी देख पाएगा जब आप इसका इस्तेमाल कर रहे हों"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"कैलेंडर"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"अपने कैलेंडर को ऐक्सेस करने"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को अपना कैलेंडर देखने की अनुमति देना चाहते हैं?"</string>
@@ -1087,7 +1088,7 @@
<string name="delete" msgid="6098684844021697789">"मिटाएं"</string>
<string name="copyUrl" msgid="2538211579596067402">"यूआरएल को कॉपी करें"</string>
<string name="selectTextMode" msgid="1018691815143165326">"लेख को चुनें"</string>
- <string name="undo" msgid="7905788502491742328">"वापस लाएं"</string>
+ <string name="undo" msgid="7905788502491742328">"पहले जैसा करें"</string>
<string name="redo" msgid="7759464876566803888">"फिर से करें"</string>
<string name="autofill" msgid="3035779615680565188">"ऑटोमैटिक भरना"</string>
<string name="textSelectionCABTitle" msgid="5236850394370820357">"टेक्स्ट चुनें"</string>
@@ -1771,8 +1772,8 @@
<string name="package_updated_device_owner" msgid="1847154566357862089">"आपके व्यवस्थापक ने अपडेट किया है"</string>
<string name="package_deleted_device_owner" msgid="2307122077550236438">"आपके व्यवस्थापक ने हटा दिया है"</string>
<string name="confirm_battery_saver" msgid="639106420541753635">"ठीक है"</string>
- <string name="battery_saver_description_with_learn_more" msgid="1002571337088673987">"बैटरी लाइफ़ बढ़ाने के लिए बैटरी सेवर:\n·गहरे रंग वाली थीम चालू करता है\n·बैकग्राउंड की गतिविधि, कुछ विज़ुअल इफ़ेक्ट, और दूसरी सुविधाएं, जैसे कि \"Hey Google\" को इस्तेमाल करने से रोकता है या बंद करता है\n\n"<annotation id="url">"ज़्यादा जानें"</annotation></string>
- <string name="battery_saver_description" msgid="2307555792915978653">"बैटरी लाइफ़ बढ़ाने के लिए बैटरी सेवर:\n गहरे रंग वाली थीम चालू करता है\nबैकग्राउंड की गतिविधि, कुछ विज़ुअल इफ़ेक्ट, और दूसरी सुविधाएं, जैसे कि \"Hey Google\" को इस्तेमाल करने से रोकता है या बंद करता है"</string>
+ <string name="battery_saver_description_with_learn_more" msgid="1002571337088673987">"बैटरी लाइफ़ बढ़ाने के लिए बैटरी सेवर:\n·गहरे रंग वाली थीम चालू करता है\n·बैकग्राउंड की गतिविधि, कुछ विज़ुअल इफ़ेक्ट, और \"Hey Google\" जैसी दूसरी सुविधाएं इस्तेमाल करने से रोकता है या बंद करता है\n\n"<annotation id="url">"ज़्यादा जानें"</annotation></string>
+ <string name="battery_saver_description" msgid="2307555792915978653">"बैटरी लाइफ़ बढ़ाने के लिए, बैटरी सेवर:\n गहरे रंग वाली थीम चालू करता है\nबैकग्राउंड की गतिविधि, कुछ विज़ुअल इफ़ेक्ट, और \"Hey Google\" जैसी दूसरी सुविधाएं इस्तेमाल करने से रोकता है या बंद करता है"</string>
<string name="data_saver_description" msgid="6015391409098303235">"डेटा खर्च, कम करने के लिए डेटा सेवर कुछ ऐप्लिकेशन को बैकग्राउंड में डेटा भेजने या डेटा पाने से रोकता है. आप फ़िलहाल जिस ऐप्लिकेशन का इस्तेमाल कर रहे हैं वह डेटा तक पहुंच सकता है लेकिन ऐसा कभी-कभी ही हो पाएगा. उदाहरण के लिए, इमेज तब तक दिखाई नहीं देंगी जब तक कि आप उन्हें टैप नहीं करते."</string>
<string name="data_saver_enable_title" msgid="4674073932722787417">"डेटा बचाने की सेटिंग चालू करें?"</string>
<string name="data_saver_enable_button" msgid="7147735965247211818">"चालू करें"</string>
@@ -1888,7 +1889,7 @@
<string name="app_category_image" msgid="4867854544519846048">"फ़ोटो और तस्वीरें"</string>
<string name="app_category_social" msgid="5842783057834965912">"सामाजिक और संचार"</string>
<string name="app_category_news" msgid="7496506240743986873">"समाचार और पत्रिकाएं"</string>
- <string name="app_category_maps" msgid="5878491404538024367">"मैप और मार्गदर्शक"</string>
+ <string name="app_category_maps" msgid="5878491404538024367">"Maps और नेविगेशन ऐप्लिकेशन"</string>
<string name="app_category_productivity" msgid="3742083261781538852">"उत्पादकता"</string>
<string name="device_storage_monitor_notification_channel" msgid="3295871267414816228">"डिवाइस में जगह"</string>
<string name="adb_debugging_notification_channel_tv" msgid="5537766997350092316">"USB डीबग करना"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"टैप करके देखें कि किन चीज़ों पर रोक लगाई गई है."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"सिस्टम"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"सेटिंग"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"स्टैंडबाई"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV डिवाइस जल्द ही बंद हो जाएगा. इसे चालू रखने के लिए किसी बटन को दबाएं."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"डिवाइस जल्द ही बंद हो जाएगा. इसे चालू रखने के लिए स्क्रीन पर टैप करें या किसी बटन को दबाएं."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"कैमरा"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"माइक्रोफ़ोन"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"आपकी स्क्रीन पर, इस्तेमाल हो रहे दूसरे ऐप्लिकेशन के ऊपर दिखाया जा रहा है"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"सीधे शेयर नहीं किया जा सकता"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"ऐप्लिकेशन की सूची"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"इस ऐप्लिकेशन को रिकॉर्ड करने की अनुमति नहीं दी गई है. हालांकि, ऐप्लिकेशन इस यूएसबी डिवाइस से ऐसा कर सकता है."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"होम"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"वापस जाएं"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"हाल ही में इस्तेमाल किए गए ऐप्लिकेशन दिखाएं"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"सूचनाएं खोलें"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"फटाफट सेटिंग खोलें"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"पावर डायलॉग खोलें"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"स्प्लिट स्क्रीन पर टॉगल करें"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"स्क्रीन लॉक करें"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"स्क्रीनशॉट लें"</string>
</resources>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 56d5b2006a95..745401db23e6 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -289,7 +289,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Želite li dopustiti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da pristupa lokaciji ovog uređaja?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Aplikacija će imati pristup lokaciji samo dok upotrebljavate aplikaciju"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Želite li dopustiti da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pristupa lokaciji ovog uređaja &lt;b&gt;cijelo vrijeme&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Aplikacija trenutačno može pristupiti lokaciji samo dok upotrebljavate aplikaciju"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"Ova aplikacija možda će uvijek htjeti imati pristup vašoj lokaciji, čak i kad je ne koristite. Dopustite u "<annotation id="link">"postavkama"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendar"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"pristupati kalendaru"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Želite li dopustiti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da pristupa vašem kalendaru?"</string>
@@ -1996,9 +1996,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Dodirnite da biste provjerili što je blokirano."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sustav"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Postavke"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Stanje mirovanja"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Uređaj Android TV uskoro će se isključiti. Pritisnite gumb da bi ostao uključen."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Uređaj će se uskoro isključiti. Pritisnite da bi ostao uključen."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Fotoaparat"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"prikazuje se preko drugih aplikacija na zaslonu"</string>
@@ -2040,22 +2037,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Izravno dijeljenje nije dostupno"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Popis aplikacija"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Ta aplikacija nema dopuštenje za snimanje, no mogla bi primati zvuk putem ovog USB uređaja."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Početni zaslon"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Natrag"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Nedavne aplikacije"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Obavijesti"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Brze postavke"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Dijalog napajanja"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Uključite ili isključite podijeljeni zaslon"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Zaključajte zaslon"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Snimka zaslona"</string>
</resources>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 184b66ae54bb..5df3da7fd8c7 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Engedélyezi a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; számára, hogy hozzáférjen az eszköz helyadataihoz?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Az alkalmazás csak akkor férhet hozzá a helyadatokhoz, amikor Ön használja az alkalmazást"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Engedélyezi a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; számára, hogy &lt;b&gt;mindig&lt;/b&gt; hozzáférjen az eszköz helyadataihoz?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Az alkalmazás jelenleg csak akkor férhet hozzá a helyadatokhoz, amikor Ön használja az alkalmazást."</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Naptár"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"hozzáférés a naptárhoz"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Engedélyezi a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; számára, hogy hozzáférjen a naptárhoz?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Koppintson a letiltott elemek megtekintéséhez."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Rendszer"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Beállítások"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Készenléti mód"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Az Android TV eszköz hamarosan kikapcsol. Nyomja meg valamelyik gombot, hogy bekapcsolva tarthassa."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Az eszköz hamarosan kikapcsol. Nyomja meg, hogy bekapcsolva tarthassa."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"megjelenítés a képernyőn lévő egyéb alkalmazások előtt"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"A közvetlen megosztás nem áll rendelkezésre"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Alkalmazások listája"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Ez az alkalmazás nem rendelkezik rögzítési engedéllyel, de ezzel az USB-eszközzel képes a hangfelvételre."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Kezdőképernyő"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Vissza"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Legutóbbi alkalmazások"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Értesítések"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Gyorsbeállítások"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Akkumulátorral kapcsolatos párbeszédpanel"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Osztott képernyő be- vagy kikapcsolása"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Lezárási képernyő"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Képernyőkép"</string>
</resources>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index fef6f4e0dc20..b4b34b55baa5 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Թույլատրե՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին օգտագործել այս սարքի տեղադրության տվյալները"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Տեղադրության տվյալները հասանելի կլինեն հավելվածին, միայն երբ այն օգտագործելիս լինեք"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;Միշտ&lt;/b&gt; հասանելի դարձնե՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին ձեր սարքի տեղադրությունը"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Տեղադրության տվյալները հասանելի կլինեն հավելվածին, միայն երբ այն օգտագործելիս լինեք"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Օրացույց"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"օգտագործել օրացույցը"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Թույլատրե՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին օգտագործել ձեր օրացույցը:"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Հպեք՝ տեսնելու, թե ինչ է արգելափակվել:"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Համակարգ"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Կարգավորումներ"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Սպասման ռեժիմ"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV սարքը շուտով կանջատվի: Սեղմեք որևէ կոճակ՝ միացրած թողնելու համար:"</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Սարքը շուտով կանջատվի: Սեղմեք՝ միացրած թողնելու համար:"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Տեսախցիկ"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Խոսափող"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ցուցադրվում է մյուս հավելվածների վրայից"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Direct Share գործառույթը հասանելի չէ"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Հավելվածների ցանկ"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Հավելվածը ձայնագրելու թույլտվություն չունի, սակայն կկարողանա գրանցել ձայնն այս USB սարքի միջոցով։"</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Սկիզբ"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Հետ"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Վերջին օգտագործած հավելվածները"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Ծանուցումներ"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Արագ կարգավորումներ"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Սնուցման պատուհան"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Միացնել/անջատել էկրանի տրոհումը"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Կողպէկրան"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Սքրինշոթ"</string>
</resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 87a88043d337..bc44c026f759 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses lokasi perangkat ini?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Aplikasi ini hanya akan memiliki akses ke lokasi selagi Anda menggunakan aplikasi"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses lokasi perangkat ini &lt;b&gt;sepanjang waktu&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Saat ini aplikasi hanya dapat mengakses lokasi selagi Anda menggunakan aplikasi tersebut"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"Aplikasi ini mungkin ingin selalu mengakses lokasi, meski tidak sedang digunakan. Izinkan di "<annotation id="link">"setelan"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalender"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"mengakses kalender"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses kalender?"</string>
@@ -1963,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Ketuk untuk memeriksa item yang diblokir."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistem"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Setelan"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Siaga"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Perangkat Android TV akan segera dimatikan; tekan tombol untuk terus menyalakannya."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Perangkat akan segera dimatikan, tekan untuk terus menyalakannya."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ditampilkan di atas aplikasi lain di layar"</string>
@@ -2006,22 +2003,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Berbagi langsung tidak tersedia"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Daftar aplikasi"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Aplikasi ini tidak diberi izin merekam, tetapi dapat merekam audio melalui perangkat USB ini."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Beranda"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Kembali"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Aplikasi Baru-Baru Ini"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notifikasi"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Setelan Cepat"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Dialog Power"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Aktifkan Layar Terpisah"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Layar Kunci"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Screenshot"</string>
</resources>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index a37eda695c88..3e76ed10fe03 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Viltu veita &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aðgang að staðsetningu þessa tækis?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Forritið hefur aðeins aðgang að staðsetningunni á meðan þú notar forritið"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Viltu leyfa að &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; hafi &lt;b&gt;alltaf&lt;/b&gt; aðgang að upplýsingum um staðsetningu þessa tækis?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Forritið hefur sem stendur aðeins aðgang að staðsetningu þinni á meðan þú notar forritið"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Dagatal"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"fá aðgang að dagatalinu þínu"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Viltu veita &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aðgang að dagatalinu þínu?"</string>
@@ -1771,10 +1772,8 @@
<string name="package_updated_device_owner" msgid="1847154566357862089">"Kerfisstjóri uppfærði"</string>
<string name="package_deleted_device_owner" msgid="2307122077550236438">"Kerfisstjóri eyddi"</string>
<string name="confirm_battery_saver" msgid="639106420541753635">"Í lagi"</string>
- <!-- no translation found for battery_saver_description_with_learn_more (1002571337088673987) -->
- <skip />
- <!-- no translation found for battery_saver_description (2307555792915978653) -->
- <skip />
+ <string name="battery_saver_description_with_learn_more" msgid="1002571337088673987">"Til að auka rafhlöðuendingu gerir rafhlöðusparnaður eftirfarandi:\n·Kveikir á dökku þema\n·Slekkur á eða takmarkar bakgrunnsvirkni, tilteknar myndbrellur og aðra eiginleika eins og „Hei Google“.\n\n"<annotation id="url">"Frekari upplýsingar"</annotation></string>
+ <string name="battery_saver_description" msgid="2307555792915978653">"Til að auka rafhlöðuendingu gerir rafhlöðusparnaður eftirfarandi:\n·Kveikir á dökku þema\n·Slekkur á eða takmarkar bakgrunnsvirkni, tilteknar myndbrellur og aðra eiginleika eins og „Hei Google“."</string>
<string name="data_saver_description" msgid="6015391409098303235">"Gagnasparnaður getur hjálpað til við að draga úr gagnanotkun með því að hindra forrit í að senda eða sækja gögn í bakgrunni. Forrit sem er í notkun getur náð í gögn, en gerir það kannski sjaldnar. Niðurstaðan gæti verið, svo dæmi sé tekið, að myndir séu ekki birtar fyrr en þú ýtir á þær."</string>
<string name="data_saver_enable_title" msgid="4674073932722787417">"Kveikja á gagnasparnaði?"</string>
<string name="data_saver_enable_button" msgid="7147735965247211818">"Kveikja"</string>
@@ -1965,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Ýttu til að skoða hvað lokað hefur verið á."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Kerfi"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Stillingar"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Biðstaða"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV tækið slekkur á sér fljótlega. Ýttu á takka til að það slokkni ekki á því."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Tækið slekkur á sér fljótlega. Ýttu á takka til að það slokkni ekki á því."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Myndavél"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Hljóðnemi"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"birt yfir öðrum forritum á skjánum"</string>
@@ -2008,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Bein deiling er ekki tiltæk"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Forritalisti"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Þetta forrit hefur ekki fengið heimild fyrir upptöku en gæti tekið upp hljóð í gegnum þetta USB-tæki."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Heim"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Til baka"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Nýleg forrit"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Tilkynningar"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Flýtistillingar"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Gluggi til að slökkva/endurræsa"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Breyta skjáskiptingu"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Lásskjár"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Skjámynd"</string>
</resources>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 2b780d0fb4e8..ddc0f686e594 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Consentire a &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di accedere alla posizione del dispositivo?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"L\'app avrà accesso alla posizione soltanto quando la usi"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Consentire a &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di accedere &lt;b&gt;sempre&lt;/b&gt; alla posizione di questo dispositivo?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"L\'app al momento può accedere alla posizione soltanto mentre la usi"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendario"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"accedere al calendario"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Consentire all\'app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di accedere al tuo calendario?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Tocca per controllare le notifiche bloccate."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistema"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Impostazioni"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Standby"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Presto il dispositivo Android TV si spegnerà. Premi un pulsante per tenerlo acceso."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Presto il dispositivo si spegnerà. Premi per tenerlo acceso."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Fotocamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microfono"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"si sovrappone ad altre app sullo schermo"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Condivisione diretta non disponibile"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Elenco di app"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"A questa app non è stata concessa l\'autorizzazione di registrazione, ma l\'app potrebbe acquisire l\'audio tramite questo dispositivo USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Home"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Indietro"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"App recenti"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notifiche"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Impostazioni rapide"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Finestra di dialogo Alimentazione"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Attiva/disattiva schermo diviso"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Schermata di blocco"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Screenshot"</string>
</resources>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index dfbf834a4138..c3a8ceb44f28 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -292,7 +292,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"‏לתת לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; הרשאת גישה למיקום המכשיר?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"לאפליקציה תהיה גישה אל נתוני המיקום רק בזמן השימוש באפליקציה"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"‏להתיר ל-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; לגשת אל מיקום המכשיר הזה &lt;b&gt;כל הזמן&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"האפליקציה יכולה כרגע לגשת אל המיקום רק כשנעשה בה שימוש"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"יומן"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"גישה אל היומן"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"‏לתת לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; הרשאת גישה ליומן?"</string>
@@ -2029,9 +2030,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"יש להקיש כדי לבדוק מה חסום."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"מערכת"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"הגדרות"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"המתנה"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"‏מכשיר Android TV ייכבה בקרוב. יש ללחוץ על לחצן כלשהו כדי שהוא ימשיך לפעול."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"המכשיר ייכבה בקרוב, יש ללחוץ כדי שהוא ימשיך לפעול."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"מצלמה"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"מיקרופון"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"תצוגה מעל אפליקציות אחרות במסך"</string>
@@ -2074,22 +2072,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"שיתוף ישיר אינו זמין"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"רשימת האפליקציות"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"‏לאפליקציה זו לא ניתנה הרשאת הקלטה, אבל אפשר להקליט אודיו באמצעות התקן ה-USB הזה."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"בית"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"חזרה"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"אפליקציות אחרונות"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"התראות"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"הגדרות מהירות"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"תיבת דו-שיח לגבי הסוללה"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"החלפת מצב של מסך מפוצל"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"מסך הנעילה"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"צילום מסך"</string>
</resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 477698021ea3..0e30b182c737 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"このデバイスの位置情報へのアクセスを「&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;」に許可しますか?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"このアプリは、ユーザーがアプリを使用している間のみ位置情報にアクセスできます"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"このデバイスの位置情報に&lt;b&gt;常に&lt;/b&gt;?アクセスすることを &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; に許可します"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"現在、アプリは、ユーザーがアプリを使用している場合のみ位置情報にアクセスできます"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"このアプリは、未使用時も含め、常に位置情報にアクセスしようとすることがあります。["<annotation id="link">"設定"</annotation>"] で許可してください。"</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"カレンダー"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"カレンダーへのアクセス"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"カレンダーへのアクセスを「&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;」に許可しますか?"</string>
@@ -1963,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"タップしてブロック対象をご確認ください。"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"システム"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"設定"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"スタンバイ"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV デバイスはまもなく OFF になります。ON 状態を維持するには、ボタンを押してください。"</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"このデバイスはまもなく OFF になります。ON 状態を維持するには、ボタンを押してください。"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"カメラ"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"マイク"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"画面の他のアプリの上に重ねて表示"</string>
@@ -2006,22 +2003,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"ダイレクト シェアは利用できません"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"アプリのリスト"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"このアプリに録音権限は付与されていませんが、この USB デバイスから音声を収集できるようになります。"</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"ホーム"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"戻る"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"最近使ったアプリ"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"通知"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"クイック設定"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"電源ダイアログ"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"分割画面の切り替え"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"ロック画面"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"スクリーンショット"</string>
</resources>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index 7f06b0135366..552a60fb18a2 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"გსურთ, მიანიჭოთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ს&lt;/b&gt; ამ მოწყობილობის მდებარეობაზე წვდომის ნებართვა?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"ამ აპს მდებარეობაზე წვდომა მხოლოდ მაშინ ექნება, როცა თქვენ მას გამოიყენებთ"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"გსურთ, &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-ს &lt;b&gt;ყოველთვის&lt;/b&gt; ჰქონდეს წვდომა ამ მოწყობილობის მდებარეობაზე?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"ამჟამად აპს მდებარეობაზე წვდომა მხოლოდ მაშინ აქვს, როცა თქვენ მას იყენებთ"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"აპი ითხოვს თქვენს მდებარეობაზე წვდომას ნებისმიერ დროს, მაშინაც კი, როცა თქვენ მას არ იყენებთ. უფლების მიცემა შეგიძლიათ "<annotation id="link">"პარამეტრებში"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"კალენდარი"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"თქვენს კალენდარზე წვდომა"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"გსურთ, მიანიჭოთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ს&lt;/b&gt; თქვენს კალენდარზე წვდომის ნებართვა?"</string>
@@ -1771,10 +1771,8 @@
<string name="package_updated_device_owner" msgid="1847154566357862089">"განახლებულია თქვენი ადმინისტრატორის მიერ"</string>
<string name="package_deleted_device_owner" msgid="2307122077550236438">"წაიშალა თქვენი ადმინისტრატორის მიერ"</string>
<string name="confirm_battery_saver" msgid="639106420541753635">"კარგი"</string>
- <!-- no translation found for battery_saver_description_with_learn_more (1002571337088673987) -->
- <skip />
- <!-- no translation found for battery_saver_description (2307555792915978653) -->
- <skip />
+ <string name="battery_saver_description_with_learn_more" msgid="1002571337088673987">"ელემენტის მუშაობის განრძლივობის მიზნით, ელემენტის დამზოგველი:\n·ირთვება ბნელ თემაზე\n·თიშავს ან ზღუდავს ფონის აქტივობებს, გარკვეულ ვიზუალურ ეფექტებს და სახვა შესაძლებლობებს, როგორიც არის “Hey Google”\n\n"<annotation id="url">"შეიტყვეთ მეტი"</annotation></string>
+ <string name="battery_saver_description" msgid="2307555792915978653">"ელემენტის მუშაობის განრძლივობის მიზნით, ელემენტის დამზოგველი:\n·ირთვება ბნელ თემაზე\n·თიშავს ან ზღუდავს ფონის აქტივობებს, გარკვეულ ვიზუალურ ეფექტებს და სახვა შესაძლებლობებს, როგორიც არის “Hey Google”"</string>
<string name="data_saver_description" msgid="6015391409098303235">"მობილური ინტერნეტის მოხმარების შემცირების მიზნით, მონაცემთა დამზოგველი ზოგიერთ აპს ფონურ რეჟიმში მონაცემთა გაგზავნასა და მიღებას შეუზღუდავს. თქვენ მიერ ამჟამად გამოყენებული აპი მაინც შეძლებს მობილურ ინტერნეტზე წვდომას, თუმცა ამას ნაკლები სიხშირით განახორციელებს. ეს ნიშნავს, რომ, მაგალითად, სურათები არ გამოჩნდება მანამ, სანამ მათ საგანგებოდ არ შეეხებით."</string>
<string name="data_saver_enable_title" msgid="4674073932722787417">"ჩაირთოს მონაცემთა დამზოგველი?"</string>
<string name="data_saver_enable_button" msgid="7147735965247211818">"ჩართვა"</string>
@@ -1965,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"შეეხეთ იმის სანახავად, თუ რა არის დაბლოკილი."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"სისტემა"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"პარამეტრები"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"მოლოდინის რეჟიმი"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV მოწყობილობა მალე გამოირთვება, დააჭირეთ ღილაკს, რომ ჩართული დარჩეს."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"მოწყობილობა მალე გამოირთვება, დააჭირეთ, რომ ჩართული დარჩეს."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"კამერა"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"მიკროფონი"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"სხვა აპების გადაფარვით ჩანს თქვენს ეკრანზე"</string>
@@ -2008,22 +2003,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"პირდაპირი გაზიარება მიუწვდომელია"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"აპების სია"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"ამ აპს არ აქვს მინიჭებული ჩაწერის ნებართვა, მაგრამ შეუძლია ჩაიწეროს აუდიო ამ USB მოწყობილობის მეშვეობით."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"მთავარი"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"დაბრუნება"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"ბოლოდროინდელი აპები"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"შეტყობინებები"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"სწრაფი პარამეტრები"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"ელკვების დიალოგი"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"გაყოფილი ეკრანის გადართვა"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"ჩაკეტილი ეკრანი"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"ეკრანის ანაბეჭდი"</string>
</resources>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index 65da546df2b4..e398e7326d96 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына құрылғының орналасқан жері туралы мәліметтерді пайдалануға рұқсат берілсін бе?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Қолданбаны пайдалану кезінде ғана оған геодеректеріңізді көруге рұқсат етіледі."</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына құрылғының геодеректері &lt;b&gt;үнемі&lt;/b&gt; көрсетіліп тұрсын ба?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Қолданба геодеректерді тек жұмыс кезінде ғана пайдалана алады."</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Күнтізбе"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"күнтізбеге кіру"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына күнтізбеге кіруге рұқсат берілсін бе?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Түймені түртіп, неге тыйым салынатынын көріңіз."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Жүйе"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Параметрлер"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Күту режимі"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV құрылғысы жақын арада өшеді. Оны қосулы ұстау үшін басыңыз."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Құрылғы жақын арада өшеді. Оны қосулы ұстау үшін басыңыз."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Камера"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Микрофон"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"экранда басқа қолданбалардың үстінен көрсету"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Тікелей бөлісу мүмкін емес."</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Қолданбалар тізімі"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Қолданбаға жазу рұқсаты берілмеді, бірақ ол осы USB құрылғысы арқылы дыбыс жаза алады."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Негізгі экран"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Артқа"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Соңғы пайдаланылған қолданбалар"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Хабарландырулар"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Жылдам параметрлер"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Қуат диалогтік терезесі"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Экранды бөлу мүмкіндігін қосу/өшіру"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Құлып экраны"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Скриншот"</string>
</resources>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index 32b3ee13c439..3ce723c15bf8 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ចូលប្រើ​ទីតាំងរបស់ឧបករណ៍នេះ?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"កម្មវិធីនេះ​នឹងមាន​សិទ្ធិ​ចូលប្រើ​ទីតាំង នៅពេល​អ្នកកំពុង​ប្រើ​កម្មវិធីនេះ​តែ​ប៉ុណ្ណោះ"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ចូលប្រើ​ទីតាំងរបស់​ឧបករណ៍​នេះ&lt;b&gt;គ្រប់ពេល&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"បច្ចុប្បន្ន​ កម្មវិធី​អាច​ចូលប្រើ​ទីតាំង នៅពេលដែលអ្នកកំពុង​ប្រើប្រាស់​កម្មវិធី​នោះប៉ុណ្ណោះ"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"កម្មវិធីនេះ​ប្រហែលជា​ចង់ប្រើ​ទីតាំង​របស់អ្នក​គ្រប់ពេល ទោះបីជា​អ្នកមិនកំពុងប្រើ​កម្មវិធីនេះ​ក៏ដោយ។ អនុញ្ញាត​នៅក្នុង"<annotation id="link">"ការកំណត់"</annotation>"។"</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"ប្រតិទិន"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"ចូលប្រើប្រិតិទិនរបស់អ្នក"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ចូលប្រើ​ប្រតិទិនរបស់អ្នក?"</string>
@@ -1965,9 +1965,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"សូមចុច​ដើម្បី​មើល​ថា​​បានទប់ស្កាត់អ្វីខ្លះ។"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"ប្រព័ន្ធ"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"ការកំណត់"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"ផ្អាក​ដំណើរការ"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"ឧបករណ៍ Android TV នឹង​បិទ​ក្នុងពេល​ឆាប់ៗនេះ សូមចុច​ប៊ូតុង​ដើម្បី​បន្ត​បើក​ឧបករណ៍។"</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"ឧបករណ៍​នឹង​បិទ​ក្នុងពេល​ឆាប់ៗនេះ សូមចុច​ដើម្បី​បន្ត​បើក​ឧបករណ៍។"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"កាមេរ៉ា"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"មីក្រូហ្វូន"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"កំពុងបង្ហាញ​ពីលើកម្មវិធីផ្សេងទៀត​នៅលើអេក្រង់​របស់អ្នក"</string>
@@ -2008,22 +2005,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"មិនមាន​ការចែករំលែក​ដោយផ្ទាល់ទេ"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"បញ្ជីកម្មវិធី"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"កម្មវិធីនេះ​មិនទាន់បាន​ទទួលសិទ្ធិ​ថតសំឡេង​នៅឡើយទេ ប៉ុន្តែអាច​ថតសំឡេង​តាមរយៈ​ឧបករណ៍ USB នេះបាន។"</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"ទំព័រដើម"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"ថយក្រោយ"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"កម្មវិធី​ថ្មីៗ"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"ការជូនដំណឹង"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"ការកំណត់រហ័ស"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"ប្រអប់​ថាមពល"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"បិទ/បើក​មុខងារ​បំបែកអេក្រង់"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"អេក្រង់ចាក់សោ"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"រូបថតអេក្រង់"</string>
</resources>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index 0fab683d3fde..94d683673317 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"ಈ ಸಾಧನದ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಲು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ಗೆ ಅನುಮತಿಸಬೇಕೇ?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"ನೀವು ಆ್ಯಪ್ ಅನ್ನು ಬಳಸುವಾಗ, ಆ್ಯಪ್ ಮಾತ್ರ ಸ್ಥಳಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರುತ್ತದೆ"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;ಎಲ್ಲಾ ಸಮಯದಲ್ಲೂ&lt;/b&gt; ಈ ಸಾಧನದ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಲು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸುವುದೇ?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"ನೀವು ಆ್ಯಪ್ ಅನ್ನು ಬಳಸುವಾಗ ಮಾತ್ರ, ಅದು ಪ್ರಸ್ತುತವಾಗಿ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"ಕ್ಯಾಲೆಂಡರ್"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"ನಿಮ್ಮ ಕ್ಯಾಲೆಂಡರ್ ಪ್ರವೇಶಿಸಲು"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"ನಿಮ್ಮ ಕ್ಯಾಲೆಂಡರ್ ಪ್ರವೇಶಿಸಲು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಗೆ ಅನುಮತಿಸಬೇಕೇ?"</string>
@@ -1340,9 +1341,9 @@
<string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
<string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
<string name="alert_windows_notification_channel_group_name" msgid="1463953341148606396">"ಇತರ ಅಪ್ಲಿಕೇಶನ್ ಮೇಲೆ ಡಿಸ್‌ಪ್ಲೇ"</string>
- <string name="alert_windows_notification_channel_name" msgid="3116610965549449803">"<xliff:g id="NAME">%s</xliff:g> ಇತರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಮೂಲಕ ಪ್ರದರ್ಶಿಸುತ್ತಿದೆ"</string>
- <string name="alert_windows_notification_title" msgid="3697657294867638947">"<xliff:g id="NAME">%s</xliff:g> ಇತರವುಗಳ ಮೇಲೆ ಪ್ರದರ್ಶಿಸುತ್ತಿದೆ"</string>
- <string name="alert_windows_notification_message" msgid="8917232109522912560">"<xliff:g id="NAME">%s</xliff:g> ಈ ವೈಶಿಷ್ಟ್ಯ ಬಳಸುವುದನ್ನು ನೀವು ಬಯಸದಿದ್ದರೆ, ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆದು, ಅದನ್ನು ಆಫ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
+ <string name="alert_windows_notification_channel_name" msgid="3116610965549449803">"<xliff:g id="NAME">%s</xliff:g> ಇತರೆ ಆ್ಯಪ್‌ಗಳ ಮೇಲೆ ಡಿಸ್‌ಪ್ಲೇ ಆಗುತ್ತದೆ"</string>
+ <string name="alert_windows_notification_title" msgid="3697657294867638947">"<xliff:g id="NAME">%s</xliff:g> ಇತರೆ ಆ್ಯಪ್‌ಗಳ ಮೇಲೆ ಡಿಸ್‌ಪ್ಲೇ ಆಗುತ್ತದೆ"</string>
+ <string name="alert_windows_notification_message" msgid="8917232109522912560">"<xliff:g id="NAME">%s</xliff:g> ಈ ವೈಶಿಷ್ಟ್ಯ ಬಳಸುವುದನ್ನು ನೀವು ಬಯಸದಿದ್ದರೆ, ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಲು ಮತ್ತು ಅದನ್ನು ಆಫ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="alert_windows_notification_turn_off_action" msgid="2902891971380544651">"ಆಫ್ ಮಾಡಿ"</string>
<string name="ext_media_checking_notification_title" msgid="4411133692439308924">"<xliff:g id="NAME">%s</xliff:g> ಅನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ…"</string>
<string name="ext_media_checking_notification_message" msgid="410185170877285434">"ಪ್ರಸ್ತುತ ವಿಷಯವನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ"</string>
@@ -1888,7 +1889,7 @@
<string name="app_category_image" msgid="4867854544519846048">"ಫೋಟೋಗಳು ಮತ್ತು ಚಿತ್ರಗಳು"</string>
<string name="app_category_social" msgid="5842783057834965912">"ಸಾಮಾಜಿಕ ಮತ್ತು ಸಂವಹನ"</string>
<string name="app_category_news" msgid="7496506240743986873">"ಸುದ್ದಿ ಮತ್ತು ನಿಯತಕಾಲಿಕೆಗಳು"</string>
- <string name="app_category_maps" msgid="5878491404538024367">"ನಕ್ಷೆಗಳು ಮತ್ತು ನ್ಯಾವಿಗೇಶನ್"</string>
+ <string name="app_category_maps" msgid="5878491404538024367">"Maps ಮತ್ತು ನ್ಯಾವಿಗೇಶನ್"</string>
<string name="app_category_productivity" msgid="3742083261781538852">"ಉತ್ಪಾದಕತೆ"</string>
<string name="device_storage_monitor_notification_channel" msgid="3295871267414816228">"ಸಾಧನ ಸಂಗ್ರಹಣೆ"</string>
<string name="adb_debugging_notification_channel_tv" msgid="5537766997350092316">"USB ಡೀಬಗ್ ಮಾಡುವಿಕೆ"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"ಏನನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ಪರೀಕ್ಷಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"ಸಿಸ್ಟಂ"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"ಸ್ಟ್ಯಾಂಡ್‌ಬೈ"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"ಈ Android TV ಸಾಧನವು ಶೀಘ್ರವೇ ಆಫ್ ಆಗುತ್ತದೆ; ಇದನ್ನು ಆನ್‌ನಲ್ಲಿಡಲು ಬಟನ್ ಅನ್ನು ಒತ್ತಿರಿ."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"ಈ ಸಾಧನವು ಶೀಘ್ರವೇ ಆಫ್ ಆಗುತ್ತದೆ; ಇದನ್ನು ಆನ್‌ನಲ್ಲಿಡಲು ಒತ್ತಿರಿ."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"ಕ್ಯಾಮರಾ"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"ಮೈಕ್ರೋಫೋನ್‌"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಇತರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಮೂಲಕ ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"ನೇರ ಹಂಚಿಕೆ ಲಭ್ಯವಿಲ್ಲ"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"ಆ್ಯಪ್‌ಗಳ ಪಟ್ಟಿ"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"ಈ ಆ್ಯಪ್‌ಗೆ ರೆಕಾರ್ಡ್ ಅನುಮತಿಯನ್ನು ನೀಡಲಾಗಿಲ್ಲ, ಆದರೆ ಈ USB ಸಾಧನದ ಮೂಲಕ ಆಡಿಯೊವನ್ನು ಸೆರೆಹಿಡಿಯಬಲ್ಲದು."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"ಹೋಮ್"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"ಹಿಂದಕ್ಕೆ"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"ಇತ್ತೀಚಿನ ಆ್ಯಪ್‌ಗಳು"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"ಅಧಿಸೂಚನೆಗಳು"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"ತ್ವರಿತ ಸೆಟ್ಟಿಂಗ್‍ಗಳು"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"ಪವರ್ ಡೈಲಾಗ್"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"ಸ್ಪ್ಲಿಟ್-ಸ್ಕ್ರೀನ್ ಟಾಗಲ್ ಮಾಡಿ"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"ಲಾಕ್ ಸ್ಕ್ರೀನ್"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"ಸ್ಕ್ರೀನ್‌ಶಾಟ್"</string>
</resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index f42a92873694..c58d36c4f918 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 내 기기 위치에 액세스하도록 허용하시겠습니까?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"앱을 사용할 때만 앱에서 위치에 액세스합니다."</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; 앱이 이 기기의 위치에 &lt;b&gt;항상&lt;/b&gt; 액세스하도록 허용하시겠습니까?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"현재 앱을 사용 중일 때만 앱에서 위치에 액세스할 수 있습니다."</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"캘린더"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"캘린더에 액세스"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 내 캘린더에 액세스하도록 허용하시겠습니까?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"차단된 항목을 확인하려면 탭하세요."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"시스템"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"설정"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"대기"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV가 곧 꺼집니다. 계속 사용하려면 버튼을 누르세요."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"기기가 곧 꺼집니다. 계속 사용하려면 누르세요."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"카메라"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"마이크"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"화면에서 다른 앱 위에 표시"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"직접 공유가 지원되지 않음"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"앱 목록"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"이 앱에는 녹음 권한이 부여되지 않았지만, 이 USB 기기를 통해 오디오를 녹음할 수 있습니다."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"홈"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"뒤로"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"최근 앱"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"알림"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"빠른 설정"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"전원 대화상자"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"화면 분할 모드 전환"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"잠금 화면"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"스크린샷"</string>
</resources>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index 82064b2687d4..f7095a7878e3 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосу бул түзмөктүн кайда жүргөнүн көрүп турсунбу?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Колдонмону колдонуп жаткан маалда гана, ал сиздин кайда жүргөнүңүздү билип турат."</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосу бул түзмөктүн жүргөн жерин &lt;b&gt;ар дайым&lt;/b&gt; билип турсунбу?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Колдонмону пайдаланып жаткан учурда гана ал жайгашкан жерди көрө алат"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Жылнаама"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"жылнаамаңызды пайдалануу"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосуна жылнаамаңызды пайдаланууга уруксат берилсинби?"</string>
@@ -1964,9 +1965,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Бөгөттөлгөн нерселерди көрүү үчүн таптаңыз."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Тутум"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Жөндөөлөр"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Көшүү режими"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV түзмөгү жакында өчүрүлөт, аны күйүк боюнча калтыруу үчүн баскычты басыңыз."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Түзмөк жакында өчүрүлөт, күйүк боюнча калтыруу үчүн басып коюңуз."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Камера"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Микрофон"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"экрандагы башка терезелердин үстүнөн көрсөтүлүүдө"</string>
@@ -2007,22 +2005,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Түздөн-түз бөлүшүүгө болбойт"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Колдонмолордун тизмеси"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Бул колдонмонун жаздырууга уруксаты жок, бирок бул USB түзмөгү аркылуу аудиону жаздыра алат."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Башкы бет"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Артка"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Акыркы колдонмолор"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Билдирмелер"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Ыкчам жөндөөлөр"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Кубат диалогу"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Экранды бөлүүнү күйгүзүү же өчүрүү"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Кулпуланган экран"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Скриншот"</string>
</resources>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index 3aa786e44ecc..63b1437f1a08 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"ອະນຸຍາດ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ໃຫ້ເຂົ້າເຖິງສະຖານທີ່ຂອງອຸປະກອນບໍ?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"ແອັບຈະມີສິດເຂົ້າເຖິງສະຖານທີ່ໃນເວລາທີ່ທ່ານກຳລັງໃຊ້ແອັບຢູ່ເທົ່ານັ້ນ"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"ອະນຸຍາດໃຫ້ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ເຂົ້າເຖິງສະຖານທີ່ຂອງອຸປະກອນໄດ້ &lt;b&gt;ຕະຫຼອດເວລາ&lt;/b&gt; ບໍ?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"ຕອນນີ້ແອັບສາມາດເຂົ້າເຖິງສະຖານທີ່ໄດ້ສະເພາະເວລາທີ່ທ່ານໃຊ້ແອັບເທົ່ານັ້ນ"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"ແອັບນີ້ອາດຕ້ອງການເຂົ້າເຖິງສະຖານທີ່ຂອງທ່ານຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າທ່ານຈະບໍ່ໄດ້ໃຊ້ແອັບຢູ່ກໍຕາມ. ອະນຸຍາດໃນ "<annotation id="link">"ການຕັ້ງຄ່າ"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"ປະຕິທິນ"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"ເຂົ້າ​ຫາ​ປະ​ຕິ​ທິນ​ຂອງ​ທ່ານ"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"ອະນຸຍາດ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ໃຫ້ເຂົ້າເຖິງປະຕິທິນຂອງທ່ານບໍ?"</string>
@@ -1963,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"ແຕະເພື່ອກວດສອບວ່າມີຫຍັງຖືກບລັອກໄວ້ແດ່."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"ລະບົບ"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"ການຕັ້ງຄ່າ"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"ສະແຕນບາຍ"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"ອຸປະກອນ Android TV ຈະປິດໃນອີກບໍ່ດົນ, ກົດປຸ່ມໃດໜຶ່ງເພື່ອເປີດມັນໄວ້ຕໍ່."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"ອຸປະກອນຈະປິດໃນອີກບໍ່ດົນ, ກົດເພື່ອເປີດມັນໄວ້ຕໍ່."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"ກ້ອງ"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"ໄມໂຄຣໂຟນ"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ສະແດງຜົນບັງແອັບອື່ນຢູ່ໜ້າຈໍຂອງທ່ານ"</string>
@@ -2006,22 +2003,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"ບໍ່ສາມາດແບ່ງປັນໂດຍກົງໄດ້"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"ລາຍຊື່ແອັບ"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"ແອັບນີ້ບໍ່ໄດ້ຮັບສິດອະນຸຍາດໃນການບັນທຶກ ແຕ່ສາມາດບັນທຶກສຽງໄດ້ຜ່ານອຸປະກອນ USB ນີ້."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"ເຮືອນ"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"ກັບຄືນ"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"ແອັບຫຼ້າສຸດ"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"ການແຈ້ງເຕືອນ"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"ການຕັ້ງຄ່າດ່ວນ"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"ກ່ອງໂຕ້ຕອບການເປີດປິດ"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"ເປີດ/ປິດການແບ່ງໜ້າຈໍ"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"ໜ້າຈໍລັອກ"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"ຮູບໜ້າຈໍ"</string>
</resources>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index d4d19f4de063..180497eb161a 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -292,7 +292,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Suteikti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; galimybę pasiekti įrenginio vietovę?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Programa galės pasiekti vietovę, tik kai ją naudosite"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Leisti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pasiekti šio įrenginio vietovę &lt;b&gt;visą laiką&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Šiuo metu programa gali pasiekti vietovę, tik kai ją naudojate"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendorius"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"pasiekti kalendorių"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Suteikti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; galimybę pasiekti kalendorių?"</string>
@@ -2029,9 +2030,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Palieskite, kad patikrintumėte, kas blokuojama."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistema"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Nustatymai"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Budėjimo laikas"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"„Android TV“ įrenginys netrukus išsijungs. Paspauskite mygtuką, kad įrenginys liktų įjungtas."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Įrenginys netrukus išsijungs. Paspauskite, kad jis liktų įjungtas."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Fotoaparatas"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofonas"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"rodo virš kitų programų jūsų ekrane"</string>
@@ -2074,22 +2072,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Tiesioginio bendrinimo funkcija nepasiekiama"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Programų sąrašas"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Šiai programai nebuvo suteiktas leidimas įrašyti, bet ji gali užfiksuoti garsą per šį USB įrenginį."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Pagrindinis"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Atgal"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Naujausios programos"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Pranešimai"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Spartieji nustatymai"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Maitinimo dialogo langas"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Perjungti išskaidyto ekrano režimą"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Užrakinimo ekranas"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Ekrano kopija"</string>
</resources>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 89a98dd57fdc..ef428a9c2db0 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -289,7 +289,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Vai atļaut lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; piekļūt šīs ierīces atrašanās vietai?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Lietotne varēs piekļūt atrašanās vietai tikai tad, kad izmantosiet šo lietotni"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Vai &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; drīkst piekļūt ierīces atrašanās vietai &lt;b&gt;vienmēr&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Pašlaik lietotne var piekļūt atrašanās vietai tikai tad, kad izmantojat šo lietotni"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendārs"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"piekļūt jūsu kalendāram"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Vai atļaut lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; piekļūt jūsu kalendāram?"</string>
@@ -1996,9 +1997,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Pieskarieties, lai uzzinātu, kas tiek bloķēts."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistēma"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Iestatījumi"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Gaidstāve"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV ierīce drīz izslēgsies. Nospiediet pogu, lai tā paliktu ieslēgta."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Ierīce drīz izslēgsies. Nospiediet, lai tā paliktu ieslēgta."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofons"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"rāda pāri citām lietotnēm jūsu ekrānā"</string>
@@ -2040,22 +2038,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Tiešā kopīgošana nav pieejama"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Lietotņu saraksts"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Šai lietotnei nav piešķirta ierakstīšanas atļauja, taču tā varētu tvert audio, izmantojot šo USB ierīci."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Sākums"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Atpakaļ"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Nesen izmantotās lietotnes"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Paziņojumi"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Ātrie iestatījumi"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Barošanas dialoglodziņš"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Pārslēgt ekrāna sadalīšanu"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Bloķēt ekrānu"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Ekrānuzņēmums"</string>
</resources>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index 4396c086feed..896942f56157 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Дали да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да пристапува до локацијата на уредов?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Апликацијата ќе има пристап до локацијата само додека ја користите"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да пристапува до локацијата на уредов &lt;b&gt;во секое време&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Апликацијата во моментов може да пристапува до локацијата само додека ја користите"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Календар"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"пристапува до календарот"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Дали да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да пристапува до календарот?"</string>
@@ -1965,9 +1966,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Допрете за да проверите што е блокирано."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Систем"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Поставки"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Подготвеност"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Уредот со Android TV наскоро ќе се исклучи, притиснете копче за да остане вклучен."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Уредот наскоро ќе се исклучи, притиснете за да остане вклучен."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Камера"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Микрофон"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"се прикажува преку други апликации на вашиот екран"</string>
@@ -2008,22 +2006,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Не е достапно директно споделување"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Список со апликации"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"На апликацијава не ѝ е доделена дозвола за снимање, но може да снима аудио преку овој USB-уред."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Почеток"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Назад"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Неодамнешни апликации"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Известувања"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Брзи поставки"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Дијалог за напојување"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Вклучи/исклучи поделен екран"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Заклучен екран"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Слика од екранот"</string>
</resources>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index 0b3397105c13..f75d2d6b9c5f 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"ഈ ഉപകരണത്തിന്റെ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാൻ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ആപ്പിനെ അനുവദിക്കണോ?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"നിങ്ങൾ ആപ്പ് ഉപയോഗിക്കുമ്പോൾ മാത്രമേ അതിന് ലൊക്കേഷൻ ആക്‌സസ് ലഭിക്കൂ."</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"<xliff:g id="APP_NAME">%1$s</xliff:g> എന്നതിനെ ഈ ഉപകരണത്തിന്റെ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാൻ എപ്പോഴും അനുവദിക്കണോ?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"നിലവിൽ, ഉപയോഗിക്കുമ്പോൾ മാത്രം ആപ്പിന് ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാം"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"കലണ്ടർ"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"നിങ്ങളുടെ കലണ്ടർ ആക്‌സസ്സ് ചെയ്യുക"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"നിങ്ങളുടെ കലണ്ടർ ആക്‌സസ് ചെയ്യാൻ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ആപ്പിനെ അനുവദിക്കണോ?"</string>
@@ -1340,9 +1341,9 @@
<string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
<string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
<string name="alert_windows_notification_channel_group_name" msgid="1463953341148606396">"മറ്റ് ആപ്‌സിന് മുകളിൽ പ്രദർശിപ്പിക്കുക"</string>
- <string name="alert_windows_notification_channel_name" msgid="3116610965549449803">"<xliff:g id="NAME">%s</xliff:g> മറ്റ് ആപ്പുകൾക്ക് മുകളിൽ പ്രദർശിപ്പിക്കുന്നു"</string>
- <string name="alert_windows_notification_title" msgid="3697657294867638947">"<xliff:g id="NAME">%s</xliff:g> മറ്റ് ആപ്പുകൾക്ക് മുകളിൽ പ്രദർശിപ്പിക്കുന്നു"</string>
- <string name="alert_windows_notification_message" msgid="8917232109522912560">"<xliff:g id="NAME">%s</xliff:g> ഈ ഫീച്ചർ ഉപയോഗിക്കുന്നതിൽ നിങ്ങൾക്ക് താൽപ്പര്യമില്ലെങ്കിൽ, ടാപ്പുചെയ്‌ത് ക്രമീകരണം തുറന്ന് അത് ഓഫാക്കുക."</string>
+ <string name="alert_windows_notification_channel_name" msgid="3116610965549449803">"<xliff:g id="NAME">%s</xliff:g> മറ്റ് ആപ്പുകൾക്ക് മുകളിൽ കാണിക്കുന്നു"</string>
+ <string name="alert_windows_notification_title" msgid="3697657294867638947">"<xliff:g id="NAME">%s</xliff:g> മറ്റ് ആപ്പുകൾക്ക് മേലെയാണ്"</string>
+ <string name="alert_windows_notification_message" msgid="8917232109522912560">"<xliff:g id="NAME">%s</xliff:g> ഈ ഫീച്ചർ ഉപയോഗിക്കേണ്ടെങ്കിൽ, ടാപ്പ് ചെയ്‌ത് ക്രമീകരണം തുറന്ന് അത് ഓഫാക്കുക."</string>
<string name="alert_windows_notification_turn_off_action" msgid="2902891971380544651">"ഓഫാക്കുക"</string>
<string name="ext_media_checking_notification_title" msgid="4411133692439308924">"<xliff:g id="NAME">%s</xliff:g> പരിശോധിക്കുന്നു…"</string>
<string name="ext_media_checking_notification_message" msgid="410185170877285434">"നിലവിലെ ഉള്ളടക്കം അവലോകനം ചെയ്യുന്നു"</string>
@@ -1888,7 +1889,7 @@
<string name="app_category_image" msgid="4867854544519846048">"ഫോട്ടോകളും ചിത്രങ്ങളും"</string>
<string name="app_category_social" msgid="5842783057834965912">"സാമൂഹിക ആപ്സുകളും ആശയവിനിമയവും"</string>
<string name="app_category_news" msgid="7496506240743986873">"വാർത്തകളും മാസികകളും"</string>
- <string name="app_category_maps" msgid="5878491404538024367">"മാപ്സും നാവിഗേഷനും"</string>
+ <string name="app_category_maps" msgid="5878491404538024367">"മാപ്പുകളും നാവിഗേഷനും"</string>
<string name="app_category_productivity" msgid="3742083261781538852">"ഉല്‍‌പ്പാദനക്ഷമത"</string>
<string name="device_storage_monitor_notification_channel" msgid="3295871267414816228">"ഉപകരണ സ്റ്റോറേജ്"</string>
<string name="adb_debugging_notification_channel_tv" msgid="5537766997350092316">"USB ഡീബഗ്ഗിംഗ്"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"എന്തിനെയാണ് ബ്ലോക്ക് ചെയ്‌തതെന്ന് പരിശോധിക്കാൻ ടാപ്പ് ചെയ്യുക."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"സിസ്റ്റം"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"ക്രമീകരണം"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"സ്‌റ്റാൻഡ്‌ബൈ"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android ടിവി ഉടൻ ഓഫാകും, ഓണാക്കി നിർത്താൻ ഒരു ബട്ടൺ അമർത്തുക."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"ഉപകരണം ഉടൻ ഓഫാകും, ഓണാക്കി നിർത്താൻ അമർത്തുക."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"ക്യാമറ"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"മൈക്രോഫോൺ"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"നിങ്ങളുടെ സ്‌ക്രീനിലെ മറ്റ് ആപ്പുകൾക്ക് മുകളിൽ പ്രദർശിപ്പിക്കുന്നു"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"നേരിട്ടുള്ള പങ്കിടൽ ലഭ്യമല്ല"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"ആപ്പുകളുടെ ലിസ്‌റ്റ്"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"ഈ ആപ്പിന് റെക്കോർഡ് അനുമതി നൽകിയിട്ടില്ല, എന്നാൽ ഈ USB ഉപകരണത്തിലൂടെ ഓഡിയോ ക്യാപ്‌ചർ ചെയ്യാനാവും."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"ഹോം"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"തിരികെ പോകുക"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"സമീപകാലത്തെ ആപ്പുകൾ"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"അറിയിപ്പുകൾ"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"ദ്രുത ക്രമീകരണം"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"പവർ ഡയലോഗ്"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"സ്‌ക്രീൻ വിഭജന മോഡ് മാറ്റുക"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"ലോക്ക് സ്‌ക്രീൻ"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"സ്ക്രീൻഷോട്ട്"</string>
</resources>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index 990a4d0dc21a..1791d0c465cd 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д энэ төхөөрөмжийн байршилд хандахыг зөвшөөрөх үү?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Та тухайн аппыг ашиглаж байгаа үед энэ нь зөвхөн байршилд хандах эрхтэй болно"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д энэ төхөөрөмжийн байршилд &lt;b&gt;хүссэн үедээ&lt;/b&gt; хандахыг зөвшөөрөх үү?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Та зөвхөн тухайн аппыг ашиглаж байгаа үед энэ нь одоогоор байршилд хандах эрхтэй"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Хуанли"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"Хуанли руу хандах"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д таны календарьт хандахыг зөвшөөрөх үү?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Блоклосон зүйлийг шалгахын тулд товшино уу."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Систем"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Тохиргоо"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Зогсолтын горим"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Андройд ТВ төхөөрөмж удахгүй унтрах тул асаалттай хэвээр байлгахын тулд дарна уу."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Төхөөрөмж удахгүй унтрах тул асаалттай хэвээр байлгахын тулд дарна уу."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Камер"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Микрофон"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"таны дэлгэцэд бусад аппын дээр харуулж байна"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Шууд хуваалцах боломжгүй"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Аппын жагсаалт"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Энэ апликейшнд бичих зөвшөөрөл олгогдоогүй ч энэ USB төхөөрөмжөөр дамжуулан аудио бичиж чадсан."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Нүүр"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Буцах"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Сүүлд хандсан аппууд"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Мэдэгдэл"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Шуурхай тохиргоо"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Тэжээлийн харилцах цонх"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Дэлгэц хуваахыг унтраах/асаах"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Дэлгэцийг түгжих"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Дэлгэцийн зураг дарах"</string>
</resources>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index edc89a428286..f4becc9b6fda 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला या डिव्हाइसचे स्थान अ‍ॅक्सेस करू द्यायचे?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"तुम्ही अ‍ॅप वापरत असताना अ‍ॅपला फक्त स्थानाचा अ‍ॅक्सेस असेल"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला &lt;b&gt;प्रत्येक वेळी&lt;/b&gt; या डिव्हाइसच्या स्थानाचा अ‍ॅक्सेस द्यायचा?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"अ‍ॅप सध्या फक्त तुम्ही अ‍ॅप वापरत असतानाच स्थान अ‍ॅक्सेस करू शकते"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"कॅलेंडर"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"आपल्या कॅलेंडरवर प्रवेश"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला तुमचे कॅलेंडर अ‍ॅक्सेस करू द्यायचे?"</string>
@@ -1340,9 +1341,9 @@
<string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
<string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
<string name="alert_windows_notification_channel_group_name" msgid="1463953341148606396">"इतर अ‍ॅप्सवर दाखवा"</string>
- <string name="alert_windows_notification_channel_name" msgid="3116610965549449803">"<xliff:g id="NAME">%s</xliff:g> इतर ॲप्सवर प्रदर्शित करत आहे"</string>
- <string name="alert_windows_notification_title" msgid="3697657294867638947">"<xliff:g id="NAME">%s</xliff:g> अन्‍य ॲप्सवर प्रदर्शित करत आहे"</string>
- <string name="alert_windows_notification_message" msgid="8917232109522912560">"<xliff:g id="NAME">%s</xliff:g> ने हे वैशिष्ट्य वापरू नये असे तुम्ही इच्छित असल्यास, सेटिंग्ज उघडण्यासाठी टॅप करा आणि ते बंद करा."</string>
+ <string name="alert_windows_notification_channel_name" msgid="3116610965549449803">"अन्‍य ॲप्सवर <xliff:g id="NAME">%s</xliff:g> दाखवत आहे"</string>
+ <string name="alert_windows_notification_title" msgid="3697657294867638947">"अन्‍य ॲप्सवर <xliff:g id="NAME">%s</xliff:g> दाखवत आहे"</string>
+ <string name="alert_windows_notification_message" msgid="8917232109522912560">"<xliff:g id="NAME">%s</xliff:g> ने हे वैशिष्ट्य वापरू नये असे तुम्हाला वाटत असल्यास, टॅप करून सेटिंग्ज उघडा आणि ते बंद करा."</string>
<string name="alert_windows_notification_turn_off_action" msgid="2902891971380544651">"बंद करा"</string>
<string name="ext_media_checking_notification_title" msgid="4411133692439308924">"<xliff:g id="NAME">%s</xliff:g> तपासत आहे…"</string>
<string name="ext_media_checking_notification_message" msgid="410185170877285434">"सध्याच्या आशयाचे पुनरावलोकन करत आहे"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"काय ब्लॉक केले आहे हे तपासण्यासाठी टॅप करा."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"सिस्टम"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"सेटिंग्ज"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"स्टँडबाय"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV डिव्हाइस लवकरच बंद होणार आहे; सुरू ठेवण्यासाठी बटण दाबा."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"डिव्हाइस लवकरच बंद होणार आहे; सुरू ठेवण्यासाठी दाबा."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"कॅमेरा"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"मायक्रोफोन"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"तुमच्‍या स्‍क्रीनवर इतर ॲप्‍सवर डिस्‍प्‍ले करत आहे"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"थेट शेअर करणे उपलब्ध नाही"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"अ‍ॅप्स सूची"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"या अ‍ॅपला रेकॉर्ड करण्याची परवानगी दिली गेली नाही पण हे USB डिव्हाइस वापरून ऑडिओ कॅप्चर केला जाऊ शकतो."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"होम"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"मागे जा"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"अलीकडील ॲप्स"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"सूचना"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"क्विक सेटिंग्ज"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"पॉवर डायलॉग"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"विभाजित स्क्रीन टॉगल करा"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"स्‍क्रीन लॉक करा"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"स्क्रीनशॉट"</string>
</resources>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 0c881c50baf8..5caf29fdc62a 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses lokasi peranti ini?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Apl ini hanya dapat mengakses lokasi semasa anda menggunakan apl tersebut"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses lokasi peranti ini &lt;b&gt;pada sepanjang masa&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Pada masa ini, apl hanya boleh mengakses lokasi semasa anda menggunakan apl itu"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendar"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"mengakses kalendar"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses kalendar anda?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Ketik untuk menyemak item yang disekat."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistem"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Tetapan"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Tunggu sedia"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Peranti Android TV akan mati tidak lama lagi; tekan butang untuk memastikan peranti terus hidup."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Peranti akan mati tidak lama lagi; tekan untuk memastikan peranti terus hidup."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"dipaparkan di atas apl lain pada skrin anda"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Perkongsian langsung tidak tersedia"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Senarai apl"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Apl ini belum diberikan kebenaran merakam tetapi dapat merakam audio melalui peranti USB ini."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Skrin Utama"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Kembali"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Apl Terbaharu"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Pemberitahuan"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Tetapan Pantas"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Dialog Kuasa"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Togol Skrin Pisah"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Skrin Kunci"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Tangkapan skrin"</string>
</resources>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index f5745b519af8..7ab02828694f 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; အား ဤစက်ပစ္စည်း၏တည်နေရာကို သုံးခွင့်ပေးလိုပါသလား။"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"အက်ပ်ကိုအသုံးပြုသည့် အချိန်တွင်သာ ၎င်းကတည်နေရာကို အသုံးပြုခွင့်ရပါမည်"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; အား ဤစက်ပစ္စည်း၏ တည်နေရာကို &lt;b&gt;အမြဲတမ်း&lt;/b&gt; ဝင်သုံးခွင့်ပေးလိုပါသလား။"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"အက်ပ်ကိုအသုံးပြုသည့် အချိန်တွင်သာ ၎င်းကတည်နေရာကို အသုံးပြုခွင့်ရပါသည်"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"ပြက္ခဒိန်"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"သင့်ပြက္ခဒိန်အား ဝင်ရောက်သုံးရန်"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; အား သင်၏ပြက္ခဒိန်ကို သုံးခွင့်ပေးလိုပါသလား။"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"ပိတ်ထားသည့်အရာများကို ကြည့်ရန် တို့ပါ။"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"စနစ်"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"ဆက်တင်များ"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"အသင့်အနေအထား"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV စက်သည် မကြာမီ ပိတ်သွားပါမည်၊ ဆက်ဖွင့်ထားရန် ခလုတ်တစ်ခုနှိပ်ပါ။"</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"စက်သည် အကြာမီ ပိတ်သွားပါမည်၊ ဆက်ဖွင့်ထားပါ။"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"ကင်မရာ"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"မိုက်ခရိုဖုန်း"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"သင့်မျက်နှာပြင်ပေါ်ရှိ အခြားအက်ပ်များပေါ်တွင် ပြသခြင်း"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"တိုက်ရိုက်မျှဝေ၍ မရပါ"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"အက်ပ်စာရင်း"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"ဤအက်ပ်ကို အသံဖမ်းခွင့် ပေးမထားသော်လည်း ၎င်းသည် ဤ USB စက်ပစ္စည်းမှတစ်ဆင့် အသံများကို ဖမ်းယူနိုင်ပါသည်။"</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"ပင်မစာမျက်နှာ"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"နောက်သို့"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"လတ်တလောသုံး အက်ပ်များ"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"အကြောင်းကြားချက်များ"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"အမြန် ဆက်တင်များ"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"ပါဝါ ဒိုင်ယာလော့"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"မျက်နှာပြင် ခွဲ၍ပြသခြင်းကို နှိပ်ပါ"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"လော့ခ်မျက်နှာပြင်"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"ဖန်သားပြင်ဓာတ်ပုံ"</string>
</resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 03597793c0dc..aecbea6f5cf2 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Vil du gi &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilgang til denne enhetens posisjon?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Appen får bare tilgang til posisjonen når du bruker appen"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Vil du gi &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilgang til enhetens posisjon &lt;b&gt;til enhver tid&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Appen har nå bare tilgang til posisjonen når du bruker den"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalender"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"åpne kalenderen din"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Vil du gi &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilgang til kalenderen din?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Trykk for å sjekke hva som er blokkert."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"System"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Innstillinger"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Ventemodus"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV-enheten slås snart av. Trykk på en knapp for å holde den på."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Enheten slås snart av. Trykk for å holde den på."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"vises over andre apper på skjermen"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Direktedeling er ikke tilgjengelig"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Appliste"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Denne appen har ikke fått tillatelse til å spille inn, men kan ta opp lyd med denne USB-enheten."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Start"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Tilbake"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Nylige apper"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Varsler"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Hurtiginnstillinger"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Dialogboks for å slå av/på"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Slå delt skjerm av/på"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Låseskjerm"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Skjermdump"</string>
</resources>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index 2617086bcbd4..a6f37dd87902 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई यो यन्त्रको स्थानमाथि पहुँच राख्न दिने हो?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"तपाईंले अनुप्रयोग प्रयोग गरिरहेका बेला मात्र उक्त अनुप्रयोगले स्थानमाथि पहुँच राख्न सक्ने छ"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई यस यन्त्रको स्थानमाथि &lt;b&gt;जुनसुकै बेला&lt;/b&gt; पहुँच गर्न दिने हो?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"तपाईंले अनुप्रयोग प्रयोग गरिरहँदा मात्र उक्त अनुप्रयोगले हाल स्थानमाथि मात्र पहुँच गर्न सक्छ"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"पात्रो"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"तपाईंको पात्रोमाथि पहुँच गर्नुहोस्"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई आफ्नो पात्रोमाथि पहुँच राख्न दिने हो?"</string>
@@ -1777,10 +1778,8 @@
<string name="package_updated_device_owner" msgid="1847154566357862089">"तपाईंका प्रशासकले अद्यावधिक गर्नुभएको"</string>
<string name="package_deleted_device_owner" msgid="2307122077550236438">"तपाईंका प्रशासकले मेट्नुभएको"</string>
<string name="confirm_battery_saver" msgid="639106420541753635">"ठिक छ"</string>
- <!-- no translation found for battery_saver_description_with_learn_more (1002571337088673987) -->
- <skip />
- <!-- no translation found for battery_saver_description (2307555792915978653) -->
- <skip />
+ <string name="battery_saver_description_with_learn_more" msgid="1002571337088673987">"ब्याट्रीको आयु लामो बनाउन ब्याट्री सेभरले:\n·अँध्यारो विषयवस्तु सक्रिय गर्छ\n·पृष्ठभूमिका गतिविधि, कतिपय भिजुअल प्रभाव तथा “Hey Google” जस्ता अन्य सुविधाहरू निष्क्रिय वा सीमित पार्छ।\n\n"<annotation id="url">"थप जान्नुहोस्"</annotation></string>
+ <string name="battery_saver_description" msgid="2307555792915978653">"ब्याट्रीको आयु लामो बनाउन ब्याट्री सेभरले:\n·अँध्यारो विषयवस्तु सक्रिय गर्छ\n·पृष्ठभूमिका गतिविधि, कतिपय भिजुअल प्रभाव तथा “Hey Google” जस्ता अन्य सुविधाहरू निष्क्रिय वा सीमित पार्छ।"</string>
<string name="data_saver_description" msgid="6015391409098303235">"डेटाको प्रयोगलाई कम गर्नमा मद्दतका लागि डेटा सर्भरले केही अनुप्रयोगहरूलाई पृष्ठभूमिमा डेटा पठाउन वा प्राप्त गर्नबाट रोक्दछ। तपाईँले हाल प्रयोग गरिरहनुभएको अनु्प्रयोगले डेटामाथि पहुँच राख्न सक्छ, तर त्यसले यो काम थोरै पटक गर्न सक्छ। उदाहरणका लागि यसको मतलब यो हुन सक्छ: तपाईँले छविहरूलाई ट्याप नगरेसम्म ती प्रदर्शन हुँदैनन्।"</string>
<string name="data_saver_enable_title" msgid="4674073932722787417">"डेटा सेभरलाई सक्रिय गर्ने हो?"</string>
<string name="data_saver_enable_button" msgid="7147735965247211818">"सक्रिय गर्नुहोस्"</string>
@@ -1971,9 +1970,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"रोक लगाइएका कुराहरू जाँच गर्न ट्याप गर्नुहोस्‌।"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"प्रणाली"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"सेटिङहरू"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"स्ट्यान्डबाई"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV यन्त्र चाँडै निष्क्रिय हुने छ; सक्रिय राख्न कुनै बटन थिच्नुहोस्।"</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"यो यन्त्र चाँडै निष्क्रिय हुने छ; सक्रिय राख्न थिच्नुहोस्।"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"क्यामेरा"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"माइक्रोफोन"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"तपाईंको स्क्रिनका अन्य अनुप्रयोगहरूमा प्रदर्शन गरिँदै छ"</string>
@@ -2014,22 +2010,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"सीधै आदान प्रदान गर्ने सुविधा उपलब्ध छैन"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"अनुप्रयोगहरूको सूची"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"यो अनुप्रयोगलाई रेकर्ड गर्ने अनुमति प्रदान गरिएको छैन तर यसले यो USB यन्त्रमार्फत अडियो क्याप्चर गर्न सक्छ।"</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"गृहपृष्ठ"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"पछाडि फर्कनुहोस्"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"हालसालैका अनुप्रयोगहरू"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"सूचनाहरू"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"द्रुत सेटिङहरू"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"पावर संवाद"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"विभाजित स्क्रिन टगल गर्नुहोस्"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"लक स्क्रिन"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"स्क्रिनसट"</string>
</resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 43b4edecb509..684ea947bc62 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toegang geven tot de locatie van dit apparaat?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"De app heeft alleen toegang tot de locatie wanneer je de app gebruikt"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Wil je &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; &lt;b&gt;altijd&lt;/b&gt; toegang geven tot de locatie van dit apparaat?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"De app heeft momenteel alleen toegang tot de locatie wanneer je de app gebruikt"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"Deze app wil mogelijk altijd toegang tot je locatie, ook als je de app niet gebruikt. Je kunt dit toestaan via de "<annotation id="link">"instellingen"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Agenda"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"toegang krijgen tot je agenda"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toegang geven tot je agenda?"</string>
@@ -1963,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Tik om te controleren wat er is geblokkeerd."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Systeem"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Instellingen"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Stand-by"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Het Android TV-apparaat wordt binnenkort uitgeschakeld. Druk op een knop om het ingeschakeld te houden."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Het apparaat wordt binnenkort uitgeschakeld. Druk om het ingeschakeld te houden."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Camera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microfoon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"wordt weergegeven vóór andere apps op je scherm"</string>
@@ -2006,22 +2003,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Rechtstreeks delen is niet beschikbaar"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Lijst met apps"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Deze app heeft geen opnamerechten gekregen, maar zou audio kunnen vastleggen via dit USB-apparaat."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Homepage"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Terug"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Recente apps"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Meldingen"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Snelle instellingen"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Voedingsdialoogvenster"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Gesplitst scherm schakelen"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Scherm vergrendelen"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Screenshot"</string>
</resources>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index 68b76c839540..6c53e165a602 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ ଏହି ଡିଭାଇସ୍‌ର ଲୋକେସନ୍‍ ଆକ୍ସେସ୍‍ କରିବା ପାଇଁ ଅନୁମତି ଦେବେ କି?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"ଆପଣ ଆପ୍ ବ୍ୟବହାର କରୁଥିବା ବେଳେ କେବଳ ଲୋକେସନ୍‍କୁ ଆପ୍‍ର ଆକ୍ସେସ୍‍ ରହିବ।"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ ଏହି ଡିଭାଇସ୍‌ର ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିବାକୁ &lt;b&gt;ସର୍ବଦା&lt;/b&gt; ଅନୁମତି ଦେବେ କି?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"ବର୍ତ୍ତମାନ ଆପଣ କେବଳ ଆପ୍‍ ବ୍ୟବହାର କରୁଥିବା ବେଳେ ଆପ୍ ଆପଣଙ୍କ ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିପାରିବ"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"କ୍ୟାଲେଣ୍ଡର୍"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"ଆପଣଙ୍କ କ୍ୟାଲେଣ୍ଡର୍‍ ଆକ୍ସେସ୍‍ କରେ"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ ଆପଣଙ୍କ କ୍ୟାଲେଣ୍ଡର୍‌କୁ ଆକ୍ସେସ୍‍ କରିବା ପାଇଁ ଅନୁମତି ଦେବେ କି?"</string>
@@ -1771,10 +1772,8 @@
<string name="package_updated_device_owner" msgid="1847154566357862089">"ଆପଣଙ୍କ ଆଡମିନ୍‌‌ ଅପଡେଟ୍‍ କରିଛନ୍ତି"</string>
<string name="package_deleted_device_owner" msgid="2307122077550236438">"ଆପଣଙ୍କ ଆଡମିନ୍‌‌ ଡିଲିଟ୍‍ କରିଛନ୍ତି"</string>
<string name="confirm_battery_saver" msgid="639106420541753635">"ଠିକ୍ ଅଛି"</string>
- <!-- no translation found for battery_saver_description_with_learn_more (1002571337088673987) -->
- <skip />
- <!-- no translation found for battery_saver_description (2307555792915978653) -->
- <skip />
+ <string name="battery_saver_description_with_learn_more" msgid="1002571337088673987">"ବ୍ୟାଟେରୀ ଜୀବନ ବଢ଼ାଇବାକୁ ବ୍ୟାଟେରୀ ସେଭର୍:\n·ଗାଢା ଥିମ୍‌ ଚାଲୁ କରେ\n·ପୃଷ୍ଟପଟ କାର୍ଯ୍ୟକଳାପକୁ, କିଛି ଭିଜୁଆଲ୍ ପ୍ରଭାବଗୁଡ଼ିକୁ ଏବଂ “ହେ Google” ପରି ଅନ୍ୟ ଫିଚର୍‌କୁ ବନ୍ଦ ରଖେ କିମ୍ବା ପ୍ରତିବନ୍ଧିତ କରିଥାଏ\n\n"<annotation id="url">"ଅଧିକ ଜାଣନ୍ତୁ"</annotation></string>
+ <string name="battery_saver_description" msgid="2307555792915978653">"ବ୍ୟାଟେରୀ ଜୀବନ ବଢ଼ାଇବାକୁ ବ୍ୟାଟେରୀ ସେଭର୍:\n·ଗାଢା ଥିମ୍‌ ଚାଲୁ କରେ\n·ପୃଷ୍ଟପଟ କାର୍ଯ୍ୟକଳାପକୁ, କିଛି ଭିଜୁଆଲ୍ ପ୍ରଭାବଗୁଡ଼ିକୁ ଏବଂ “ହେ Google” ପରି ଅନ୍ୟ ଫିଚର୍‌କୁ ବନ୍ଦ ରଖେ କିମ୍ବା ପ୍ରତିବନ୍ଧିତ କରିଥାଏ"</string>
<string name="data_saver_description" msgid="6015391409098303235">"ଡାଟା ବ୍ୟବହାର କମ୍‍ କରିବାରେ ସାହାଯ୍ୟ କରିବାକୁ, ଡାଟା ସେଭର୍‍ ବ୍ୟାକ୍‌ଗ୍ରାଉଣ୍ଡରେ ଡାଟା ପଠାଇବା କିମ୍ବା ପ୍ରାପ୍ତ କରିବାକୁ କିଛି ଆପ୍‍କୁ ବାରଣ କରେ। ଆପଣ ବର୍ତ୍ତମାନ ବ୍ୟବହାର କରୁଥିବା ଆପ୍‍, ଡାଟା ଆକ୍ସେସ୍‍ କରିପାରେ, କିନ୍ତୁ ଏହା କମ୍‍ ଥର କରିପାରେ। ଏହାର ଅର୍ଥ ହୋଇପାରେ, ଯେପରି, ଆପଣ ଟାପ୍‍ ନକରିବା ପର୍ଯ୍ୟନ୍ତ ଯେଉଁ ଇମେଜ୍‍ ଦେଖାଯାଏ ନାହିଁ।"</string>
<string name="data_saver_enable_title" msgid="4674073932722787417">"ଡାଟା ସେଭର୍‌ ଅନ୍ କରିବେ?"</string>
<string name="data_saver_enable_button" msgid="7147735965247211818">"ଅନ୍ କରନ୍ତୁ"</string>
@@ -1965,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"କ’ଣ ଅବରୋଧ ହୋଇଛି ଯାଞ୍ଚ କରିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ।"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"ସିଷ୍ଟମ୍‌"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"ସେଟିଙ୍ଗ"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"ଷ୍ଟାଣ୍ଡବାଏ"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android ଟିଭି ଡିଭାଇସ୍ ଶୀଘ୍ର ବନ୍ଦ ହୋଇଯିବ; ଏହା ଚାଲୁ ରଖିବା ପାଇଁ ଏକ ବଟନ୍ ଦବାନ୍ତୁ।"</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"ଡିଭାଇସ୍ ଶୀଘ୍ର ବନ୍ଦ ହୋଇଯିବ; ଚାଲୁ ରଖିବା ପାଇଁ ଦବାନ୍ତୁ।"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"କ୍ୟାମେରା"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"ମାଇକ୍ରୋଫୋନ୍"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ଆପଣଙ୍କ ସ୍କ୍ରୀନ୍ ଉପରେ ଥିବା ଅନ୍ୟ ଆପ୍‌ ଉପରେ ଦେଖାଦେବ"</string>
@@ -2008,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"ସିଧାସଳଖ ସେୟାର୍ ସୁବିଧା ଉପଲବ୍ଧ ନାହିଁ"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"ଆପ୍ସ ତାଲିକା"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"ଏହି ଆପ୍‌କୁ ରେକର୍ଡ କରିବାକୁ ଅନୁମତି ଦିଆଯାଇ ନାହିଁ କିନ୍ତୁ ଏହି USB ଡିଭାଇସ୍ ଜରିଆରେ ଅଡିଓ କ୍ୟାପ୍‍ଚର୍‍ କରିପାରିବ।"</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"ମୂଳପୃଷ୍ଠା"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"ପଛକୁ ଫେରନ୍ତୁ"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"ବର୍ତ୍ତମାନର ଆପ୍‌ଗୁଡ଼ିକ"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ଖୋଲନ୍ତୁ"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"କ୍ୱିକ୍ ସେଟିଂସ୍ ଖୋଲନ୍ତୁ"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"ପାୱାର ଡାୟଲଗ୍ ଖୋଲନ୍ତୁ"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"ଦୁଇଟି ସ୍କ୍ରିନ୍ ମଧ୍ୟରେ ଟୋଗଲ୍ କରନ୍ତୁ"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"ସ୍କ୍ରିନ୍ ଲକ୍ କରନ୍ତୁ"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"ସ୍କ୍ରି‍ନ୍‍ସଟ୍ ନିଅନ୍ତୁ"</string>
</resources>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index 63b5f53e074d..0f27133cd7a8 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ ਇਸ ਡੀਵਾਈਸ ਦੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਐਪ ਦੀ ਵਰਤੋਂ ਕਰਨ ਵੇਲੇ ਹੀ ਐਪ ਕੋਲ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਹੋਵੇਗੀ"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ ਹਰ ਵੇਲੇ &lt;b&gt;ਇਸ ਡੀਵਾਈਸ ਦੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਐਪ ਦੀ ਵਰਤੋਂ ਕਰਨ ਵੇਲੇ ਹੀ ਐਪ ਹੁਣ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕੇਗੀ"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"ਕੈਲੰਡਰ"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"ਤੁਹਾਡੇ ਕੈਲੰਡਰ ਤੱਕ ਪਹੁੰਚ ਕਰਨ"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ ਤੁਹਾਡੇ ਕੈਲੰਡਰ ਤੱਕ ਪਹੁੰਚ ਕਰਨੀ ਦੇਣੀ ਹੈ?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"ਟੈਪ ਕਰਕੇ ਦੋਖੋ ਕਿ ਕਿਹੜੀਆਂ ਚੀਜ਼ਾਂ ਬਲਾਕ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ।"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"ਸਿਸਟਮ"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"ਸੈਟਿੰਗਾਂ"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"ਸਟੈਂਡਬਾਈ"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV ਡੀਵਾਈਸ ਜਲਦ ਹੀ ਬੰਦ ਹੋ ਜਾਵੇਗਾ; ਇਸਨੂੰ ਚਾਲੂ ਰੱਖਣ ਲਈ ਕੋਈ ਬਟਨ ਦਬਾਓ।"</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"ਡੀਵਾਈਸ ਜਲਦ ਹੀ ਬੰਦ ਹੋ ਜਾਵੇਗਾ, ਇਸਨੂੰ ਚਾਲੂ ਰੱਖਣ ਲਈ ਦਬਾਓ।"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"ਕੈਮਰਾ"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"ਮਾਈਕ੍ਰੋਫ਼ੋਨ"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ \'ਤੇ ਹੋਰਾਂ ਐਪਾਂ ਉੱਪਰ ਦਿਖਾਇਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"ਸਿੱਧਾ ਸਾਂਝਾ ਕਰਨ ਦੀ ਸੁਵਿਧਾ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"ਐਪ ਸੂਚੀ"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"ਇਸ ਐਪ ਨੂੰ ਰਿਕਾਰਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੱਤੀ ਗਈ ਪਰ ਇਹ USB ਡੀਵਾਈਸ ਰਾਹੀਂ ਆਡੀਓ ਕੈਪਚਰ ਕਰ ਸਕਦੀ ਹੈ।"</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"ਹੋਮ"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"ਪਿੱਛੇ"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"ਹਾਲੀਆ ਐਪਾਂ"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"ਸੂਚਨਾਵਾਂ"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"ਤਤਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"ਪਾਵਰ ਵਿੰਡੋ"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"ਸਪਲਿਟ ਸਕ੍ਰੀਨ ਨੂੰ ਟੌਗਲ ਕਰੋ"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"ਲਾਕ ਸਕ੍ਰੀਨ"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"ਸਕ੍ਰੀਨਸ਼ਾਟ"</string>
</resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index bd695a9b17e2..38b982a20828 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -292,7 +292,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Zezwolić aplikacji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na dostęp do lokalizacji urządzenia?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Aplikacja będzie mieć dostęp do lokalizacji tylko wtedy, gdy będzie używana"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Zezwolić aplikacji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na &lt;b&gt;ciągły&lt;/b&gt; dostęp do lokalizacji tego urządzenia?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Aplikacja obecnie ma dostęp do lokalizacji tylko wtedy, gdy jest używana"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"Aplikacja chce mieć stały dostęp do Twojej lokalizacji, nawet gdy nie jest używana. Zezwól w "<annotation id="link">"ustawieniach"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendarz"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"dostęp do kalendarza"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Zezwolić aplikacji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na dostęp do kalendarza?"</string>
@@ -566,7 +566,7 @@
<string name="permdesc_manageFace" msgid="8919637120670185330">"Zezwala na aktywowanie przez aplikację metody dodawania i usuwania szablonów twarzy."</string>
<string name="permlab_useFaceAuthentication" msgid="2565716575739037572">"używanie sprzętu do rozpoznawania twarzy"</string>
<string name="permdesc_useFaceAuthentication" msgid="4712947955047607722">"Zezwala na używanie przez aplikację sprzętu do rozpoznawania twarzy w uwierzytelniania"</string>
- <string name="face_recalibrate_notification_name" msgid="1913676850645544352">"Rozpoznanie twarzy"</string>
+ <string name="face_recalibrate_notification_name" msgid="1913676850645544352">"Rozpoznawanie twarzy"</string>
<string name="face_recalibrate_notification_title" msgid="4087620069451499365">"Zarejestruj swoją twarz ponownie"</string>
<string name="face_recalibrate_notification_content" msgid="5530308842361499835">"Aby poprawić rozpoznawanie, ponownie zarejestruj swoją twarz"</string>
<string name="face_acquired_insufficient" msgid="2767330364802375742">"Nie udało się zarejestrować danych twarzy. Spróbuj ponownie."</string>
@@ -595,12 +595,12 @@
<string name="face_error_timeout" msgid="981512090365729465">"Spróbuj rozpoznania twarzy ponownie."</string>
<string name="face_error_no_space" msgid="2712120617457553825">"Nie można przechowywać nowych danych twarzy. Usuń stare."</string>
<string name="face_error_canceled" msgid="283945501061931023">"Analiza twarzy została anulowana."</string>
- <string name="face_error_user_canceled" msgid="5317030072349668946">"Użytkownik anulował rozpoznanie twarzy."</string>
+ <string name="face_error_user_canceled" msgid="5317030072349668946">"Użytkownik anulował rozpoznawanie twarzy."</string>
<string name="face_error_lockout" msgid="3407426963155388504">"Zbyt wiele prób. Spróbuj ponownie później."</string>
- <string name="face_error_lockout_permanent" msgid="4723594314443097159">"Zbyt wiele prób. Rozpoznanie twarzy zostało wyłączone."</string>
+ <string name="face_error_lockout_permanent" msgid="4723594314443097159">"Zbyt wiele prób. Rozpoznawanie twarzy zostało wyłączone."</string>
<string name="face_error_unable_to_process" msgid="4940944939691171539">"Nie można zweryfikować twarzy. Spróbuj ponownie."</string>
- <string name="face_error_not_enrolled" msgid="4016937174832839540">"Rozpoznanie twarzy nie jest skonfigurowane."</string>
- <string name="face_error_hw_not_present" msgid="8302690289757559738">"To urządzenie nie obsługuje rozpoznania twarzy."</string>
+ <string name="face_error_not_enrolled" msgid="4016937174832839540">"Rozpoznawanie twarzy nie jest skonfigurowane."</string>
+ <string name="face_error_hw_not_present" msgid="8302690289757559738">"To urządzenie nie obsługuje rozpoznawania twarzy."</string>
<string name="face_name_template" msgid="7004562145809595384">"Twarz <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -899,7 +899,7 @@
<string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Rozwiń obszar odblokowania."</string>
<string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Odblokowanie przesunięciem."</string>
<string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Odblokowanie wzorem."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Rozpoznanie twarzy"</string>
+ <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Rozpoznawanie twarzy"</string>
<string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Odblokowanie kodem PIN."</string>
<string name="keyguard_accessibility_sim_pin_unlock" msgid="9149698847116962307">"Odblokowanie kodu PIN karty SIM."</string>
<string name="keyguard_accessibility_sim_puk_unlock" msgid="9106899279724723341">"Odblokowanie kodu PUK karty SIM."</string>
@@ -932,7 +932,7 @@
<string name="autofill_address_summary_name_format" msgid="3268041054899214945">"$1$2$3"</string>
<string name="autofill_address_summary_separator" msgid="7483307893170324129">", "</string>
<string name="autofill_address_summary_format" msgid="4874459455786827344">"$1$2$3"</string>
- <string name="autofill_province" msgid="2231806553863422300">"Województwo"</string>
+ <string name="autofill_province" msgid="2231806553863422300">"Region"</string>
<string name="autofill_postal_code" msgid="4696430407689377108">"Kod pocztowy"</string>
<string name="autofill_state" msgid="6988894195520044613">"Stan"</string>
<string name="autofill_zip_code" msgid="8697544592627322946">"Kod pocztowy"</string>
@@ -2029,9 +2029,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Kliknij, by sprawdzić, co jest zablokowane."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"System"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Ustawienia"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Tryb gotowości"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Urządzenie z Androidem TV za chwilę się wyłączy. Naciśnij przycisk, by pozostało włączone."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Urządzenie za chwilę się wyłączy. Naciśnij, by pozostało włączone."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Aparat"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"wyświetla się nad innymi aplikacjami na ekranie"</string>
@@ -2074,22 +2071,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Udostępnianie bezpośrednie jest niedostępne"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Lista aplikacji"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Ta aplikacja nie ma uprawnień do nagrywania, ale może rejestrować dźwięk za pomocą tego urządzenia USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Ekran główny"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Wstecz"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Ostatnie aplikacje"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Powiadomienia"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Szybkie ustawienia"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Okno opcji zasilania"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Przełącz podzielony ekran"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Ekran blokady"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Zrzut ekranu"</string>
</resources>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 45a2abd26749..4d68520f90f3 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse o local deste dispositivo?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"O app só terá acesso ao local enquanto estiver sendo usado"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Permitir que o &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse o local do dispositivo &lt;b&gt;o tempo todo&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"No momento, o app só pode acessar o local enquanto estiver sendo usado"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Agenda"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"acesse sua agenda"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse sua agenda?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Toque para verificar o que está bloqueado."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistema"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Configurações"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Espera"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"O dispositivo Android TV entrará no modo de espera em breve. Pressione um botão para mantê-lo ativado."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"O dispositivo entrará no modo de espera em breve. Pressione para mantê-lo ativado."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Câmera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microfone"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"exibindo sobre outros apps na sua tela"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Compartilhamento direto indisponível"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Lista de apps"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Este app não tem permissão de gravação, mas pode capturar áudio pelo dispositivo USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Início"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Voltar"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Apps recentes"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notificações"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Configurações rápidas"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Caixa de diálogo de liga/desliga"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Ativar tela dividida"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Bloquear tela"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Capturar tela"</string>
</resources>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 0fd303fdeedd..42aa191ae2c8 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Pretende permitir que a aplicação &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aceda à localização deste dispositivo?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"A aplicação tem acesso à localização apenas enquanto a estiver a utilizar"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Pretende permitir que a aplicação &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aceda &lt;b&gt;sempre&lt;/b&gt; à localização deste dispositivo?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Atualmente, a aplicação pode aceder à localização apenas enquanto estiver a ser utilizada"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendário"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"aceder ao calendário"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Pretende permitir que a aplicação &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aceda ao calendário?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Toque para verificar o que está bloqueado."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistema"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Definições"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Modo de espera"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"O dispositivo Android TV irá desligar-se brevemente. Prima um botão para o manter ligado."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"O dispositivo irá desligar-se brevemente. Prima para o manter ligado."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Câmara"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microfone"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"sobrepõe-se a outras aplicações no ecrã"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"A partilha direta não está disponível."</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Lista de aplicações"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Esta aplicação não recebeu autorização de gravação, mas pode capturar áudio através deste dispositivo USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Página inicial"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Anterior"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Aplicações recentes"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notificações"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Definições rápidas"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Caixa de diálogo de energia"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Ativar/desativar o ecrã dividido"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Ecrã de bloqueio"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Captura de ecrã"</string>
</resources>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 45a2abd26749..4d68520f90f3 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse o local deste dispositivo?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"O app só terá acesso ao local enquanto estiver sendo usado"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Permitir que o &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse o local do dispositivo &lt;b&gt;o tempo todo&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"No momento, o app só pode acessar o local enquanto estiver sendo usado"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Agenda"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"acesse sua agenda"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse sua agenda?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Toque para verificar o que está bloqueado."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistema"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Configurações"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Espera"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"O dispositivo Android TV entrará no modo de espera em breve. Pressione um botão para mantê-lo ativado."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"O dispositivo entrará no modo de espera em breve. Pressione para mantê-lo ativado."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Câmera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microfone"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"exibindo sobre outros apps na sua tela"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Compartilhamento direto indisponível"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Lista de apps"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Este app não tem permissão de gravação, mas pode capturar áudio pelo dispositivo USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Início"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Voltar"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Apps recentes"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notificações"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Configurações rápidas"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Caixa de diálogo de liga/desliga"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Ativar tela dividida"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Bloquear tela"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Capturar tela"</string>
</resources>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index a878628cce10..8fc87d88cf5a 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -289,7 +289,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Permiteți &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să acceseze locația acestui dispozitiv?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Aplicația va avea acces la locație doar atunci când o folosiți"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Permiteți aplicației &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să acceseze locația dispozitivului &lt;b&gt;tot timpul&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Aplicația poate accesa locația numai când folosiți aplicația"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"Este posibil ca aplicația să dorească să vă acceseze în permanență locația, chiar și când nu o folosiți. Acordați această permisiune din "<annotation id="link">"setări"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendar"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"acceseze calendarul"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Permiteți &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să vă acceseze calendarul?"</string>
@@ -1996,9 +1996,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Atingeți pentru a verifica ce este blocat."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistem"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Setări"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Standby"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Dispozitivul Android TV se va opri în curând. Apăsați un buton pentru a-l menține pornit."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Dispozitivul se va opri în curând. Apăsați pentru a-l menține pornit."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Cameră foto"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Microfon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"se afișează peste alte aplicații de pe ecran"</string>
@@ -2040,22 +2037,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Trimiterea directă nu este disponibilă"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Lista de aplicații"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Permisiunea de înregistrare nu a fost acordată aplicației, dar aceasta poate să înregistreze conținut audio prin intermediul acestui dispozitiv USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Pornire"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Înapoi"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Aplicații recente"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Notificări"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Setări rapide"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Power Dialog"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Activați ecranul împărțit"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Ecran de blocare"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Captură de ecran"</string>
</resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index aa94aa6f2bc0..ce206d07c0d9 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -292,7 +292,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Разрешить приложению &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ к данным о местоположении устройства?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Доступ к местоположению будет открыт, только пока вы пользуетесь приложением."</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Разрешить приложению \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" постоянный доступ к местоположению устройства?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Сейчас у приложения есть доступ к местоположению только во время его использования."</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Календарь"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"доступ к календарю"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Разрешить приложению &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ к календарю?"</string>
@@ -2029,9 +2030,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Нажмите, чтобы проверить настройки."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Система"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Настройки"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Переход в режим ожидания"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Устройство Android TV скоро выключится. Чтобы этого не произошло, нажмите любую кнопку."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Устройство скоро выключится. Чтобы этого не произошло, нажмите любую кнопку или коснитесь экрана."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Камера"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Микрофон"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"показ поверх других окон"</string>
@@ -2074,22 +2072,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Функция Direct Share недоступна."</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Список приложений"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Приложению не разрешено записывать звук, однако оно может делать это с помощью этого USB-устройства."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Главный экран"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Назад"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Недавние приложения"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Уведомления"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Быстрые настройки"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Диалоговое окно питания"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Включить или выключить разделение экрана"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Заблокированный экран"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Скриншот"</string>
</resources>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index ee261a54ea95..d48d78e2b642 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; වෙත මෙම උපාංගයේ ස්ථානය ලබා ගැනීමට ඉඩ දෙන්නද?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"ඔබ යෙදුම භාවිත කරන විට පමණක් යෙදුමට ස්ථානය වෙත ප්‍රවේශය ඇත"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; හට ඔබේ උපාංයේ ස්ථානය වෙත &lt;b&gt;සැම විටම&lt;/b&gt; ප්‍රවේශ වීමට ඉඩ දෙන්නේද?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"යෙදුමට දැනට ඔබ යෙදුම භාවිත කරන විට පමණක් ස්ථානය වෙත ප්‍රවේශ විය හැක"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"දින දර්ශනය"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"ඔබේ දින දර්ශනයට පිවිසෙන්න"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; වෙත ඔබගේ දින දර්ශනය ප්‍රවේශ කිරීමට ඉඩ දෙන්නද?"</string>
@@ -1965,9 +1966,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"අවහිර කර ඇති දේ පරීක්ෂා කිරීමට තට්ටු කරන්න."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"පද්ධතිය"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"සැකසීම්"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"පොරොත්තු"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV උපාංගය ඉක්මනින් ක්‍රියා විරහිත වනු ඇත; එය දිගටම ක්‍රියාත්මක කර තැබීමට බොත්තමක් ඔබන්න."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"උපාංගය ඉක්මනින් ක්‍රියා විරහිත වනු ඇත; එය දිගටම ක්‍රියාත්මක කර තැබීමට ඔබන්න."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"කැමරාව"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"මයික්‍රෆෝනය"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ඔබගේ තිරය මත වෙනත් යෙදුම්වලට උඩින් සංදර්ශනය කරමින්"</string>
@@ -2008,22 +2006,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"ඍජු බෙදා ගැනීම නොලැබේ"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"යෙදුම් ලැයිස්තුව"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"මෙම යෙදුමට පටිගත කිරීම් අවසරයක් ලබා දී නොමැති නමුත් මෙම USB උපාංගය හරහා ශ්‍රව්‍ය ග්‍රහණය කර ගත හැකිය."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"මුල් පිටුව"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"ආපසු"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"මෑත යෙදුම්"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"දැනුම්දීම්"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"ඉක්මන් සැකසීම්"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"බල සංවාදය"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"බෙදුම් තිරය ටොගල කරන්න"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"අගුලු තිරය"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"තිර රුව"</string>
</resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index ed4f68c91b99..7123dbaf299a 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -292,7 +292,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Povoliť aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; prístup k polohe tohto zariadenia?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Aplikácia bude mať prístup k polohe iba vtedy, keď ju budete používať"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Chcete povoliť aplikácii <xliff:g id="APP_NAME">%1$s</xliff:g> prístup k polohe tohto zariadenia po celý čas?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Aplikácia má momentálne prístup k polohe iba vtedy, keď ju budete používať"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendár"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"prístup ku kalendáru"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Povoliť aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; prístup ku kalendáru?"</string>
@@ -2029,9 +2030,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Klepnutím skontrolujete, čo je blokované."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Systém"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Nastavenia"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Pohotovostný režim"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Zariadenie Android TV sa čoskoro vypne. Ak ho chcete ponechať zapnuté, stlačte ľubovoľné tlačidlo."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Zariadenie sa čoskoro vypne. Ak ho chcete ponechať zapnuté, stlačte ľubovoľné tlačidlo."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Fotoaparát"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofón"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"sa zobrazuje cez ďalšie aplikácie na obrazovke"</string>
@@ -2074,22 +2072,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Priame zdieľanie nie je k dispozícii"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Zoznam aplikácií"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Tejto aplikácii nebolo udelené povolenie na nahrávanie, ale môže nasnímať zvuk cez toto zariadenie USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Domov"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Späť"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Nedávne aplikácie"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Upozornenia"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Rýchle nastavenia"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Dialógové okno napájania"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Prepnúť rozdelenú obrazovku"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Uzamknúť obrazovku"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Snímka obrazovky"</string>
</resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index dc162a88fa08..852073ee01d1 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -292,7 +292,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Dovolite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; dostop do lokacije te naprave?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Aplikacija bo imela dostop do lokacije samo, ko aplikacijo uporabljate"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Dovolite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;, da &lt;b&gt;ves čas&lt;/b&gt; dostopa do lokacije te naprave?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Trenutno lahko aplikacija dostopa do lokacije samo, ko aplikacijo uporabljate"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"Ta aplikacija bo morda želela imeti stalen dostop do vaše lokacije, tudi ko aplikacije ne boste uporabljali. Omogočite v "<annotation id="link">"nastavitvah"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Koledar"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"dostop do koledarja"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Dovolite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; dostop do koledarja?"</string>
@@ -2029,9 +2029,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Dotaknite se, da preverite, kaj je blokirano."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistem"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Nastavitve"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Stanje pripravljenosti"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Naprava Android TV se bo kmalu izklopila. Če tega ne želite, pritisnite poljuben gumb."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Naprava se bo kmalu izklopila. Če tega ne želite, pritisnite."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Fotoaparat"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"prekriva druge aplikacije na zaslonu"</string>
@@ -2074,22 +2071,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Neposredna skupna raba ni na voljo"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Seznam aplikacij"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Ta aplikacija sicer nima dovoljenja za snemanje, vendar bi lahko zajemala zvok prek te naprave USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Začetni zaslon"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Nazaj"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Nedavne aplikacije"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Obvestila"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Hitre nastavitve"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Pogovorno okno o porabi energije"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Preklop razdeljenega zaslona"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Zaklenjen zaslon"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Posnetek zaslona"</string>
</resources>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index 4973f9f1d112..26b5932278ed 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Të lejohet që &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të ketë qasje te vendndodhja e kësaj pajisjeje?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Aplikacioni do të ketë qasje te vendndodhja vetëm kur po e përdor aplikacionin"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Të lejohet që &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të qaset te vendndodhja e kësaj pajisjeje &lt;b&gt;gjatë të gjithë kohës&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Aplikacioni aktualisht mund të qaset te vendndodhja vetëm kur ti e përdor aplikacionin"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendari"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"qasje te kalendari yt"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Të lejohet që &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të ketë qasje te kalendari yt?"</string>
@@ -1771,10 +1772,8 @@
<string name="package_updated_device_owner" msgid="1847154566357862089">"Përditësuar nga administratori"</string>
<string name="package_deleted_device_owner" msgid="2307122077550236438">"Fshirë nga administratori"</string>
<string name="confirm_battery_saver" msgid="639106420541753635">"Në rregull"</string>
- <!-- no translation found for battery_saver_description_with_learn_more (1002571337088673987) -->
- <skip />
- <!-- no translation found for battery_saver_description (2307555792915978653) -->
- <skip />
+ <string name="battery_saver_description_with_learn_more" msgid="1002571337088673987">"Për të rritur kohëzgjatjen e baterisë, \"Kursyesi i baterisë\":\n·Aktivizon \"Temën e errët\"\n·Çaktivizon ose kufizon aktivitetin në sfond, disa efekte vizuale dhe veçori të tjera si “Ok Google”\n\n"<annotation id="url">"Mëso më shumë"</annotation></string>
+ <string name="battery_saver_description" msgid="2307555792915978653">"Për të rritur kohëzgjatjen e baterisë, \"Kursyesi i baterisë\":\n·Aktivizon \"Temën e errët\"\n·Çaktivizon ose kufizon aktivitetin në sfond, disa efekte vizuale dhe veçori të tjera si “Ok Google”"</string>
<string name="data_saver_description" msgid="6015391409098303235">"Për të ndihmuar në reduktimin e përdorimit të të dhënave, \"Kursyesi i të dhënave\" pengon që disa aplikacione të dërgojnë apo të marrin të dhëna në sfond. Një aplikacion që po përdor aktualisht mund të ketë qasje te të dhënat, por këtë mund ta bëjë më rrallë. Kjo mund të nënkuptojë, për shembull, se imazhet nuk shfaqen kur troket mbi to."</string>
<string name="data_saver_enable_title" msgid="4674073932722787417">"Të aktivizohet \"Kursyesi i të dhënave\"?"</string>
<string name="data_saver_enable_button" msgid="7147735965247211818">"Aktivizo"</string>
@@ -1965,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Trokit për të shënuar atë që është bllokuar"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistemi"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Cilësimet"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Në gatishmëri"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Pajisja Android TV së shpejti do të fiket. Shtyp një buton për ta mbajtur të ndezur."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Pajisja së shpejti do të fiket. Shtype për ta mbajtur të ndezur."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofoni"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"po shfaqet mbi aplikacionet e tjera në ekranin tënd"</string>
@@ -2008,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Ndarja e drejtpërdrejtë nuk ofrohet"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Lista e aplikacioneve"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Këtij aplikacioni nuk i është dhënë leje për regjistrim, por mund të regjistrojë audio përmes kësaj pajisjeje USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Ekrani bazë"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Prapa"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Aplikacionet e fundit"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Njoftimet"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Cilësimet e shpejta"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Dialogu i energjisë"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Kalo tek ekrani i ndarë"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Ekrani i kyçjes"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Pamja e ekranit"</string>
</resources>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 48658bb4922a..f3146017233f 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -289,7 +289,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Желите ли да омогућите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; приступа локацији овог уређаја?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Апликација ће имати приступ локацији само док користите апликацију"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Желите ли да дозволите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; приступа локацији уређаја &lt;b&gt;у било ком тренутку&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Апликација тренутно може да приступа локацији само када користите апликацију"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"Ова апликација можда жели да приступа локацији све време, чак и када не користите апликацију. Омогућите у "<annotation id="link">"подешавањима"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Календар"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"приступи календару"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Желите ли да омогућите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; приступа календару?"</string>
@@ -1996,9 +1996,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Додирните да бисте проверили шта је блокирано."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Систем"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Подешавања"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Стање приправности"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV ће се ускоро искључити. Притисните дугме да би остао укључен."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Уређај ће се ускоро искључити. Притисните да би остао укључен."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Камера"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Микрофон"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"приказује се на екрану док користите друге апликације"</string>
@@ -2040,22 +2037,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Директно дељење није доступно"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Листа апликација"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Ова апликација нема дозволу за снимање, али би могла да снима звук помоћу овог USB уређаја."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Почетак"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Назад"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Недавне апликације"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Обавештења"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Брза подешавања"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Дијалог напајања"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Укључите/искључите подељени екран"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Закључани екран"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Снимак екрана"</string>
</resources>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 09a25132ca6e..d67ffa2c5b06 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Vill du ge &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; åtkomst till enhetens plats?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Appen får endast åtkomst till din plats när du använder den"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Vill du tillåta att &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; alltid får åtkomst till platsen för den här &lt;b&gt;enheten&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Appen har för närvarande endast åtkomst till din plats när du använder den"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalender"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"få tillgång till din kalender"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Vill du ge &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; åtkomst till din kalender?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Tryck om du vill se vad som blockeras."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"System"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Inställningar"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Viloläge"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV-enheten stängs snart av. Tryck på en knapp för att behålla den på."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Enheten stängs snart av. Tryck för att behålla den på."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"visar över andra appar på mobilen"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Dela direkt är inte tillgängligt"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Applista"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Appen har inte fått inspelningsbehörighet men kan spela in ljud via denna USB-enhet."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Startsida"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Tillbaka"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Senaste apparna"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Aviseringar"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Snabbinställningar"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Dialogruta för ström"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Aktivera och inaktivera delad skärm"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Låsskärm"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Skärmdump"</string>
</resources>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 483c39f81e6c..5713ef11718c 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Ungependa kuiruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; itambue mahali kifaa kilipo?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Programu itafikia data ya mahali ulipo unapoitumia tu"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Je, ungependa kuruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ifikie kifaa cha mahali &lt;b&gt;kila wakati&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Programu sasa inaweza kufikia data ya mahali wakati unapoitumia tu"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"Huenda programu hii ikataka kufikia maelezo ya mahali ulipo kila wakati, hata wakati huitumii. Iruhusu katika "<annotation id="link">"mipangilio"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalenda"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"ifikie kalenda yako"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Ungependa kuiruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ifikie kalenda yako?"</string>
@@ -1963,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Gusa ili uangalie kipengee ambacho kimezuiwa."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Mfumo"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Mipangilio"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Hali tuli"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Kifaa cha Android TV kitazima hivi karibuni; bonyeza kitufe ili kisizime."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Kifaa kitazima hivi karibuni; bonyeza ili kisizime."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Maikrofoni"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"inachomoza kwenye programu zingine katika skrini yako"</string>
@@ -2006,22 +2003,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Huwezi kushiriki moja kwa moja"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Orodha ya programu"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Programu hii haijapewa ruhusa ya kurekodi lakini inaweza kurekodi sauti kupitia kifaa hiki cha USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Mwanzo"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Rudi nyuma"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Programu za Hivi Karibuni"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Arifa"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Mipangilio ya Haraka"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Kidirisha cha Nishati"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Geuza Skrini Iliyogawanywa"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Skrini Iliyofungwa"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Picha ya skrini"</string>
</resources>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index 0c4e20ee6c1a..cae06c3637a4 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; இந்தச் சாதனத்தின் இருப்பிடத்தை அணுகுவதற்கு அனுமதிக்கவா?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"இந்த ஆப்ஸை நீங்கள் உபயோகிக்கும்போது மட்டுமே இருப்பிடத்தை அணுகும்"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸிற்கு &lt;b&gt;எப்போதும்&lt;/b&gt; இந்தச் சாதனத்தின் இருப்பிட அணுகலை அனுமதிக்கவா?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"நீங்கள் ஆப்ஸை உபயோகிக்கும்போது மட்டுமே அது இருப்பிடத்தை அணுக முடியும்"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"கேலெண்டர்"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"கேலெண்டரை அணுகலாம்"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"கேலெண்டரை அணுகுவதற்கு &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை அனுமதிக்கவா?"</string>
@@ -1342,7 +1343,7 @@
<string name="alert_windows_notification_channel_group_name" msgid="1463953341148606396">"பிற ஆப்ஸின் மேலே காட்டு"</string>
<string name="alert_windows_notification_channel_name" msgid="3116610965549449803">"<xliff:g id="NAME">%s</xliff:g> பிற ஆப்ஸின் மீது தோன்றுகிறது"</string>
<string name="alert_windows_notification_title" msgid="3697657294867638947">"<xliff:g id="NAME">%s</xliff:g> பிற ஆப்ஸின் மீது தோன்றுகிறது"</string>
- <string name="alert_windows_notification_message" msgid="8917232109522912560">"<xliff:g id="NAME">%s</xliff:g> இந்த அம்சத்தைப் பயன்படுத்த வேண்டாம் என நினைத்தால், அமைப்புகளைத் திறந்து அதை முடக்க, தட்டவும்."</string>
+ <string name="alert_windows_notification_message" msgid="8917232109522912560">"<xliff:g id="NAME">%s</xliff:g> இந்த அம்சத்தைப் பயன்படுத்த வேண்டாம் என நினைத்தால் இங்கு தட்டி அமைப்புகளைத் திறந்து இதை முடக்கவும்."</string>
<string name="alert_windows_notification_turn_off_action" msgid="2902891971380544651">"ஆஃப் செய்"</string>
<string name="ext_media_checking_notification_title" msgid="4411133692439308924">"<xliff:g id="NAME">%s</xliff:g>ஐச் சரிபார்க்கிறது…"</string>
<string name="ext_media_checking_notification_message" msgid="410185170877285434">"தற்போதைய உள்ளடக்கத்தை மதிப்பாய்வு செய்கிறது"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"எவற்றையெல்லாம் தடுக்கிறது என்பதைப் பார்க்க, தட்டவும்."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"சிஸ்டம்"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"அமைப்புகள்"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"இயக்க நேரம்"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV விரைவில் ஆஃப் ஆகலாம். இதைத் தொடர்ந்து ஆனில் வைக்க ஒரு பட்டனைத் தட்டவும்."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"இந்தச் சாதனம் விரைவில் ஆஃப் ஆகலாம். இதைத் தொடர்ந்து ஆனில் வைக்கத் தட்டவும்."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"கேமரா"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"மைக்ரோஃபோன்"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"உங்கள் திரையில் உள்ள பிற ஆப்ஸின் மேல் காட்டுகிறது"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"நேரடிப் பகிர்வு இல்லை"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"ஆப்ஸ் பட்டியல்"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"இந்த ஆப்ஸிற்கு ரெக்கார்டு செய்வதற்கான அனுமதி வழங்கப்படவில்லை, எனினும் இந்த USB சாதனம் மூலம் ஆடியோவைப் பதிவுசெய்ய முடியும்."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"முகப்பு"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"பின் செல்"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"சமீபத்திய ஆப்ஸ்"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"அறிவிப்புகள்"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"விரைவு அமைப்புகள்"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"பவர் உரையாடல்"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"திரைப் பிரிப்பை நிலைமாற்று"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"பூட்டுத் திரை"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"ஸ்கிரீன்ஷாட்"</string>
</resources>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index 1b3df6e5f7c9..167cc9b4cd30 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"ఈ పరికరం యొక్క లొకేషన్‌ను యాక్సెస్ చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ను అనుమతించాలా?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"మీరు యాప్‌ను ఉపయోగిస్తున్నప్పుడు మాత్రమే స్థానానికి యాప్ యాక్సెస్ కలిగి ఉంటుంది"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"ఈ పరికరం యొక్క లొకేషన్‌ను &lt;b&gt;అన్ని సమయాలలో&lt;/b&gt; యాక్సెస్ చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ను అనుమతించాలా?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"యాప్ ప్రస్తుతం మీరు ఆ యాప్‌ను ఉపయోగిస్తున్నప్పుడు మాత్రమే స్థానాన్ని యాక్సెస్ చేయగలుగుతుంది"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"ఈ యాప్‌నకు మీ లొకేషన్ యాక్సెస్ అన్ని సమయాలలో, అంటే యాప్‌ను ఉపయోగించనప్పుడు కూడా, అవసరం ఉండవచ్చు. అనుమతిని ఇక్కడ ఇవ్వండి: "<annotation id="link">"సెట్టింగ్‌లు"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"క్యాలెండర్"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"మీ క్యాలెండర్‌ను యాక్సెస్ చేయడానికి"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"మీ క్యాలెండర్‌ని యాక్సెస్ చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ని అనుమతించాలా?"</string>
@@ -1340,9 +1340,9 @@
<string name="fast_scroll_alphabet" msgid="5433275485499039199">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
<string name="fast_scroll_numeric_alphabet" msgid="4030170524595123610">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
<string name="alert_windows_notification_channel_group_name" msgid="1463953341148606396">"ఇతర యాప్‌ల ఎగువన ప్రదర్శన"</string>
- <string name="alert_windows_notification_channel_name" msgid="3116610965549449803">"<xliff:g id="NAME">%s</xliff:g> ఇతర అనువర్తనాలలో చూపబడుతోంది"</string>
- <string name="alert_windows_notification_title" msgid="3697657294867638947">"<xliff:g id="NAME">%s</xliff:g> ఇతర అనువర్తనాలలో చూపబడుతోంది"</string>
- <string name="alert_windows_notification_message" msgid="8917232109522912560">"<xliff:g id="NAME">%s</xliff:g> ఈ లక్షణాన్ని ఉపయోగించకూడదు అని మీరు అనుకుంటే, సెట్టింగ్‌లను తెరవడానికి నొక్కి, దీన్ని ఆఫ్ చేయండి."</string>
+ <string name="alert_windows_notification_channel_name" msgid="3116610965549449803">"<xliff:g id="NAME">%s</xliff:g> ఇతర యాప్‌లలో చూపబడుతోంది"</string>
+ <string name="alert_windows_notification_title" msgid="3697657294867638947">"<xliff:g id="NAME">%s</xliff:g> ఇతర యాప్‌లలో చూపబడుతోంది"</string>
+ <string name="alert_windows_notification_message" msgid="8917232109522912560">"<xliff:g id="NAME">%s</xliff:g> ఈ లక్షణాన్ని ఉపయోగించకూడదు అని మీరు అనుకుంటే, సెట్టింగ్‌లను తెరవడానికి ట్యాప్ చేసి, దీన్ని ఆఫ్ చేయండి."</string>
<string name="alert_windows_notification_turn_off_action" msgid="2902891971380544651">"ఆఫ్ చేయి"</string>
<string name="ext_media_checking_notification_title" msgid="4411133692439308924">"<xliff:g id="NAME">%s</xliff:g>ని తనిఖీ చేస్తోంది…"</string>
<string name="ext_media_checking_notification_message" msgid="410185170877285434">"ప్రస్తుత కంటెంట్ సమీక్షించబడుతోంది"</string>
@@ -1771,10 +1771,8 @@
<string name="package_updated_device_owner" msgid="1847154566357862089">"మీ నిర్వాహకులు నవీకరించారు"</string>
<string name="package_deleted_device_owner" msgid="2307122077550236438">"మీ నిర్వాహకులు తొలగించారు"</string>
<string name="confirm_battery_saver" msgid="639106420541753635">"సరే"</string>
- <!-- no translation found for battery_saver_description_with_learn_more (1002571337088673987) -->
- <skip />
- <!-- no translation found for battery_saver_description (2307555792915978653) -->
- <skip />
+ <string name="battery_saver_description_with_learn_more" msgid="1002571337088673987">"బ్యాటరీ జీవితకాలాన్ని పెంచడానికి, బ్యాటరీ సేవర్:\n ముదురు రంగు·థీమ్‌ను ఆన్ చేస్తుంది\n·నేపథ్య కార్యకలాపం, కొన్ని విజువల్ ఎఫెక్ట్స్ మరియు “Hey Google” వంటి ఇతర ఫీచర్‌లను ఆపివేస్తుంది లేదా పరిమితం చేస్తుంది\n\n"<annotation id="url">"మరింత తెలుసుకోండి"</annotation></string>
+ <string name="battery_saver_description" msgid="2307555792915978653">"బ్యాటరీ జీవితకాలాన్ని పెంచడానికి, బ్యాటరీ సేవర్:\n ముదురు రంగు·థీమ్‌ను ఆన్ చేస్తుంది\n·నేపథ్య కార్యకలాపం, కొన్ని విజువల్ ఎఫెక్ట్స్ మరియు “Hey Google” వంటి ఇతర ఫీచర్‌లను ఆపివేస్తుంది లేదా పరిమితం చేస్తుంది"</string>
<string name="data_saver_description" msgid="6015391409098303235">"డేటా వినియోగాన్ని తగ్గించడంలో డేటా సేవర్ సహాయకరంగా ఉంటుంది. బ్యాక్‌గ్రౌండ్‌లో కొన్ని యాప్‌లు డేటాను పంపకుండా లేదా స్వీకరించకుండా నిరోధిస్తుంది. మీరు ప్రస్తుతం ఉపయోగిస్తోన్న యాప్‌ డేటాను యాక్సెస్ చేయగలదు. కానీ అలా అరుదుగా చేయవచ్చు. ఉదాహరణకు, మీరు చిత్రాలను నొక్కే వరకు అవి ప్రదర్శించబడవు."</string>
<string name="data_saver_enable_title" msgid="4674073932722787417">"డేటా సేవర్‌ను ఆన్ చేయాలా?"</string>
<string name="data_saver_enable_button" msgid="7147735965247211818">"ఆన్ చేయి"</string>
@@ -1890,7 +1888,7 @@
<string name="app_category_image" msgid="4867854544519846048">"ఫోటోలు &amp; చిత్రాలు"</string>
<string name="app_category_social" msgid="5842783057834965912">"సామాజికం &amp; కమ్యూనికేషన్"</string>
<string name="app_category_news" msgid="7496506240743986873">"వార్తలు &amp; వార్తాపత్రికలు"</string>
- <string name="app_category_maps" msgid="5878491404538024367">"మ్యాప్స్ &amp; నావిగేషన్"</string>
+ <string name="app_category_maps" msgid="5878491404538024367">"Maps &amp; నావిగేషన్"</string>
<string name="app_category_productivity" msgid="3742083261781538852">"ఉత్పాదకత"</string>
<string name="device_storage_monitor_notification_channel" msgid="3295871267414816228">"పరికర నిల్వ"</string>
<string name="adb_debugging_notification_channel_tv" msgid="5537766997350092316">"USB డీబగ్గింగ్"</string>
@@ -1965,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"బ్లాక్ చేయబడిన దాన్ని తనిఖీ చేయడానికి నొక్కండి."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"సిస్టమ్"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"సెట్టింగ్‌లు"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"స్టాండ్‌బై"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV పరికరం త్వరలో ఆపివేయబడుతుంది; దాన్ని ఆన్‌లో ఉంచడానికి బటన్‌ను నొక్కండి."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"పరికరం త్వరలో ఆపివేయబడుతుంది; దీన్ని ఆన్‌లో ఉంచడానికి నొక్కండి."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"కెమెరా"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"మైక్రోఫోన్"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"మీ స్క్రీన్‌పై ఇతర యాప్‌ల ద్వారా ప్రదర్శించబడుతోంది"</string>
@@ -2008,22 +2003,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"డైరెక్ట్ షేర్ అందుబాటులో లేదు"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"యాప్‌ల జాబితా"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"ఈ యాప్‌కు రికార్డ్ చేసే అనుమతి మంజూరు కాలేదు, అయినా ఈ USB పరికరం ద్వారా ఆడియోను క్యాప్చర్ చేయగలదు."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"హోమ్"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"వెనుకకు"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"ఇటీవలి యాప్‌లు"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"నోటిఫికేషన్‌లు"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"శీఘ్ర సెట్టింగ్‌లు"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"పవర్ డైలాగ్‌ను తెరువు"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"స్క్రీన్ విభజనను టోగుల్ చేయి"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"స్క్రీన్‌ను లాక్ చేయి"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"స్క్రీన్‌షాట్"</string>
</resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index ff1ea21e3c30..ab350086c05d 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"อนุญาตให้&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;เข้าถึงตำแหน่งของอุปกรณ์นี้ไหม"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"แอปจะมีสิทธิ์เข้าถึงตำแหน่งในขณะที่คุณใช้แอปเท่านั้น"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; เข้าถึงตำแหน่งของอุปกรณ์นี้&lt;b&gt;ตลอดเวลา&lt;/b&gt;ไหม"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"ปัจจุบันแอปมีสิทธิ์เข้าถึงตำแหน่งในขณะที่คุณใช้แอปเท่านั้น"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"ปฏิทิน"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"เข้าถึงปฏิทิน"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; เข้าถึงปฏิทินไหม"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"แตะเพื่อดูรายการที่ถูกบล็อก"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"ระบบ"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"การตั้งค่า"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"สแตนด์บาย"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"อุปกรณ์ Android TV จะปิดเครื่องในอีกไม่ช้า กดปุ่มเพื่อเปิดอุปกรณ์ต่อไป"</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"อุปกรณ์จะปิดเครื่องในอีกไม่ช้า กดเพื่อเปิดอุปกรณ์ต่อไป"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"กล้อง"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"ไมโครโฟน"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"แสดงทับแอปอื่นๆ บนหน้าจอ"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"การแชร์โดยตรงไม่พร้อมใช้งาน"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"รายชื่อแอป"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"แอปนี้ไม่ได้รับอนุญาตให้บันทึกเสียงแต่จะบันทึกเสียงผ่านอุปกรณ์ USB นี้ได้"</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"หน้าแรก"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"กลับ"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"แอปล่าสุด"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"การแจ้งเตือน"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"การตั้งค่าด่วน"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"กล่องโต้ตอบพลังงาน"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"เปิด/ปิดการแบ่งหน้าจอ"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"หน้าจอล็อก"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"ภาพหน้าจอ"</string>
</resources>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 79c040f36d57..0dccb4be5cc5 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na i-access ang lokasyon ng device na ito?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Magkakaroon lang ang app ng access sa lokasyon habang ginagamit mo ang app"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na &lt;b&gt;palaging&lt;/b&gt; i-access ang lokasyon ng device na ito?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Kasalukuyang maa-access ng app ang lokasyon habang ginagamit mo lang ang app"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendaryo"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"i-access ang iyong kalendaryo"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na i-access ang iyong kalendaryo?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"I-tap para tingnan kung ano ang naka-block."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"System"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Mga Setting"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Standby"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Mag-o-off na ang Android TV device; pumindot ng button para panatilihin itong naka-on."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Mag-o-off na ang device; pumindot para panatilihin itong naka-on."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Camera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikropono"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ipinapakita sa ibabaw ng ibang app sa iyong screen"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Hindi available ang direktang pagbabahagi"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Listahan ng mga app"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Hindi nabigyan ng pahintulot ang app na ito para mag-record pero nakakapag-capture ito ng audio sa pamamagitan ng USB device na ito."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Home"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Bumalik"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Mga Kamakailang Apps"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Mga Notification"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Mga Mabilisang Setting"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Dialog ng Power"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"I-toggle ang Split Screen"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Lock Screen"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Screenshot"</string>
</resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index d6841f0ac9f3..0a0e64d2218f 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasının bu cihazın konumuna erişmesine izin verilsin mi?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Bu uygulama konum bilgisine yalnızca kullanıldığı sırada erişebilecektir"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasının bu cihazın konumuna &lt;b&gt;her zaman&lt;/b&gt; erişmesine izin verilsin mi?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Uygulama şu anda yalnızca siz kullanırken konuma erişebilir"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Takvim"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"takviminize erişme"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasının takviminize erişmesine izin verilsin mi?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Nelerin engellendiğini kontrol etmek için dokunun."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Sistem"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Ayarlar"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Beklemeye alınıyor"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV cihazı kısa süre içinde kapanacak; açık tutmak için bir düğmeye basın."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Cihaz kısa süre içinde kapanacak; açık tutmak için düğmeye basın."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ekranınızdaki diğer uygulamaların üzerinde görüntüleniyor"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Doğrudan paylaşım mevcut değil"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Uygulama listesi"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Bu uygulamaya ses kaydetme izni verilmedi ancak bu USB cihazı üzerinden sesleri yakalayabilir."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Ana Ekran"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Geri"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Son Uygulamalar"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Bildirimler"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Hızlı Ayarlar"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Güç İletişim Kutusu"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Bölünmüş Ekranı aç/kapat"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Kilit Ekranı"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Ekran görüntüsü"</string>
</resources>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 3412eb2dcc96..7cc5857a8190 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -292,7 +292,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Надати додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ до геоданих пристрою?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Додаток матиме доступ до геоданих, лише коли ви ним користуєтеся"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Дозволити додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; &lt;b&gt;завжди&lt;/b&gt; отримувати доступ до геоданих цього пристрою?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Зараз додаток має доступ до геоданих, лише коли ви ним користуєтеся"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Календар"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"отримувати доступ до календаря"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Надати додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ до календаря?"</string>
@@ -2029,9 +2030,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Торкніться, щоб перевірити, що заблоковано."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Система"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Налаштування"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Режим очікування"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Незабаром пристрій Android TV буде вимкнено. Натисніть кнопку, щоб цього не сталося."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Незабаром пристрій буде вимкнено. Натисніть, щоб цього не сталося."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Камера"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Мікрофон"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"показ поверх інших додатків на екрані"</string>
@@ -2074,22 +2072,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Прямий обмін даними недоступний"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Список додатків"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Цей додаток не має дозволу на запис, але він може фіксувати звук через цей USB-пристрій."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"На головний екран"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Назад"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Нещодавні додатки"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Сповіщення"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Швидкі налаштування"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Відкрити вікно"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Розділити екран"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Заблокувати екран"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Знімок екрана"</string>
</resources>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index 003fd54e6812..51895ae27797 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; کو اس آلہ کے مقام تک رسائی کی اجازت دیں؟"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"جب آپ ایپ استعمال کریں گے تبھی ایپ کو مقام تک رسائی حاصل ہوگی"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"‏‎&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;‎ کو اس آلہ کے مقام تک ‎&lt;b&gt;‎ہر وقت‎&lt;/b&gt;‎ رسائی حاصل کرنے کی اجازت دیں؟"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"ایپ کو فی الحال صرف اسی صورت میں مقام تک رسائی حاصل ہو سکتی ہے جب ایپ آپ کے زير استعمال ہو"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"کیلنڈر"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"اپنے کیلنڈر تک رسائی حاصل کریں"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; کو آپ کے کیلنڈر تک رسائی کی اجازت دیں؟"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"مسدود کی گئی چیزوں کو چیک کرنے کے لیے تھپتھپائیں۔"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"سسٹم"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"ترتیبات"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"اسٹینڈ بائی"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"‏Android TV آلہ جلد ہی بند ہوجائے گا آن رکھنے کے ليے بٹن دبائیں۔"</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"آلہ جلد ہی بند ہوجائے گا اسے آن رکھنے کے ليے دبائیں۔"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"کیمرا"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"مائیکروفون"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"آپ کی اسکرین پر دیگر ایپس پر دکھایا جا رہا ہے"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"بلاواسطہ اشتراک دستیاب نہیں ہے"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"ایپس کی فہرست"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"‏اس ایپ کو ریکارڈ کرنے کی اجازت عطا نہیں کی گئی ہے مگر اس USB آلہ کے ذریعے آڈیو کیپچر کر سکتی ہے۔"</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"گھر"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"پیچھے"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"حالیہ ایپس"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"اطلاعات"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"فوری ترتیبات"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"پاور ڈائیلاگ"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"اسپلٹ اسکرین ٹوگل کریں"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"مقفل اسکرین"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"اسکرین شاٹ"</string>
</resources>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index 83e99b9abaaa..5640c4ddab36 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun bu qurilmaning joylashuvi haqidagi axborotdan foydalanish ruxsati berilsinmi?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Bu ilovadan foydalanilayotdangina u joylashuv axborotidan foydalana oladi"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun bu qurilmaning joylashuvi haqidagi axborotdan &lt;b&gt;doim&lt;/b&gt; foydalanish ruxsati berilsinmi?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Ilova hozirda joylashuv axborotidan faqat ilova ishlatilayotgandagina foydalana oladi"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"Bu ilova ishlamaganda ham joylashuvingiz axborotidan har doim foydalanmoqchi. Bunga "<annotation id="link">"sozlamalar"</annotation>" orqali ruxsat bering."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Taqvim"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"taqvimingizga kirish"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun taqvimingizga ruxsat berilsinmi?"</string>
@@ -1963,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Nimalar bloklanganini tekshirish uchun bosing"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Tizim"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Sozlamalar"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Kutib turing"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV qurilmasi oʻchish arafasida, yoniq qolishi uchun istalgan tugmani bosing."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Qurilma oʻchish arafasida, yoniq qolishi uchun istalgan tugmani bosing"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Kamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Mikrofon"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"ekranda boshqa ilovalar ustidan ochiladi"</string>
@@ -2006,22 +2003,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Bevosita ulashuv ishlamaydi"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Ilovalar roʻyxati"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Bu ilovaga yozib olish ruxsati berilmagan, lekin shu USB orqali ovozlarni yozib olishi mumkin."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Bosh sahifa"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Orqaga"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Yaqinda ishlatilgan ilovalar"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Bildirishnomalar"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Tezkor sozlamalar"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Quvvat muloqot oynasi"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Ekranni ikkiga ajratish tugmasi"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Ekran qulfi"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Skrinshot"</string>
</resources>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 7b17de7d0b83..9bf7729a3ed5 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; truy cập vào vị trí của thiết bị này?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Ứng dụng này sẽ chỉ có quyền truy cập vào vị trí khi bạn đang sử dụng ứng dụng này"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Bạn muốn cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; truy cập vào vị trí của thiết bị này &lt;b&gt;trong mọi trường hợp&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Hiện tại, ứng dụng này chỉ có thể truy cập vào vị trí trong khi bạn dùng"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Lịch"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"truy cập lịch của bạn"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; truy cập vào lịch của bạn?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Nhấn để xem những thông báo bị chặn."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Hệ thống"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Cài đặt"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Chế độ chờ"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Thiết bị Android TV sẽ sớm tắt. Hãy nhấn vào một nút để thiết bị vẫn bật."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Thiết bị sẽ sớm tắt. Hãy nhấn vào một nút để thiết bị vẫn bật."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Máy ảnh"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Micrô"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"hiển thị qua các ứng dụng khác trên màn hình của bạn"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Không thể chia sẻ trực tiếp"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Danh sách ứng dụng"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Ứng dụng này chưa được cấp quyền ghi âm nhưng vẫn có thể ghi âm thông qua thiết bị USB này."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Màn hình chính"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Quay lại"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Ứng dụng gần đây"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Thông báo"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Cài đặt nhanh"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Hộp thoại thao tác với nguồn"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Bật/tắt chế độ chia đôi màn hình"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Khóa màn hình"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Chụp ảnh màn hình"</string>
</resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index e29898fc9fa4..7da1a070618d 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"要允许“<xliff:g id="APP_NAME">%1$s</xliff:g>”获取此设备的位置信息吗?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"只有当您使用该应用时,该应用才有权访问位置信息"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"要&lt;b&gt;一律允许&lt;/b&gt;允许&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;访问此设备的位置信息吗?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"目前只有当您使用该应用时,该应用才能访问位置信息"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"日历"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"访问您的日历"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"允许&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;访问您的日历吗?"</string>
@@ -1771,10 +1772,8 @@
<string name="package_updated_device_owner" msgid="1847154566357862089">"已由您的管理员更新"</string>
<string name="package_deleted_device_owner" msgid="2307122077550236438">"已由您的管理员删除"</string>
<string name="confirm_battery_saver" msgid="639106420541753635">"确定"</string>
- <!-- no translation found for battery_saver_description_with_learn_more (1002571337088673987) -->
- <skip />
- <!-- no translation found for battery_saver_description (2307555792915978653) -->
- <skip />
+ <string name="battery_saver_description_with_learn_more" msgid="1002571337088673987">"为了延长电池续航时间,省电模式会执行以下操作:\n开启深色主题\n关闭或限制后台活动、部分视觉效果和其他功能,例如“Ok Google”\n\n"<annotation id="url">"了解详情"</annotation></string>
+ <string name="battery_saver_description" msgid="2307555792915978653">"为了延长电池续航时间,省电模式会执行以下操作:\n开启深色主题\n关闭或限制后台活动、部分视觉效果和其他功能,例如“Ok Google”"</string>
<string name="data_saver_description" msgid="6015391409098303235">"为了减少流量消耗,流量节省程序会阻止某些应用在后台收发数据。您当前使用的应用可以收发数据,但频率可能会降低。举例而言,这可能意味着图片只有在您点按之后才会显示。"</string>
<string name="data_saver_enable_title" msgid="4674073932722787417">"要开启流量节省程序吗?"</string>
<string name="data_saver_enable_button" msgid="7147735965247211818">"开启"</string>
@@ -1965,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"点按即可查看屏蔽内容。"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"系统"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"设置"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"待机"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV 设备即将关闭;按一下相应的按钮即可让设备保持开启状态。"</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"设备即将关闭;按一下即可让设备保持开启状态。"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"相机"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"麦克风"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"显示在屏幕上其他应用的上层"</string>
@@ -2008,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"无法使用直接分享功能"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"应用列表"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"此应用未获得录音权限,但能通过此 USB 设备录制音频。"</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"主屏幕"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"返回"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"最近用过的应用"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"通知"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"快捷设置"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"电源对话框"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"开启/关闭分屏"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"锁定屏幕"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"屏幕截图"</string>
</resources>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 40f0c9403a10..064095366a04 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;存取此裝置的位置資訊嗎?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"只有在您使用此應用程式時,應用程式才能存取位置資訊"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"要允許&lt;b&gt;「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;/b&gt;&lt;b&gt;長期&lt;/b&gt;存取此裝置的位置資訊嗎?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"只有在您使用此應用程式時,應用程式才能存取位置資訊"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"日曆"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"存取您的日曆"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;存取您的日曆嗎?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"輕按即可查看封鎖內容。"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"系統"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"設定"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"待機"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV 裝置即將關閉,按下按鈕即可保持開啟。"</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"裝置即將關閉,輕按即可保持開啟。"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"相機"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"麥克風"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"顯示在畫面上的其他應用程式上層"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"無法直接分享"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"應用程式清單"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"此應用程式尚未獲授予錄音權限,但可透過此 USB 裝置記錄音訊。"</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"主頁"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"返回"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"最近使用的應用程式"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"通知"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"快速設定"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"電源對話框"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"切換分割螢幕"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"將畫面上鎖"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"螢幕截圖"</string>
</resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 2fb155e5aed5..026342654593 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -286,7 +286,8 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」存取這個裝置的位置資訊嗎?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"該應用程式只有在你使用時,才能存取位置資訊"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"要&lt;b&gt;一律允許&lt;/b&gt;「<xliff:g id="APP_NAME">%1$s</xliff:g>」存取這個裝置的位置資訊嗎?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"目前應用程式只有在你使用時,才能存取位置資訊"</string>
+ <!-- no translation found for permgroupbackgroundrequestdetail_location (6969122401786527350) -->
+ <skip />
<string name="permgrouplab_calendar" msgid="5863508437783683902">"日曆"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"存取你的日曆"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」存取你的日曆嗎?"</string>
@@ -1963,9 +1964,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"輕觸即可查看遭封鎖的項目。"</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"系統"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"設定"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"待機"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Android TV 裝置即將關閉。如要讓裝置保持開啟狀態,請按下任一按鈕。"</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"裝置即將關閉。輕觸螢幕或按下按鈕即可讓裝置保持開啟狀態。"</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"相機"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"麥克風"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"顯示在畫面上的其他應用程式上層"</string>
@@ -2006,22 +2004,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"無法使用直接分享功能"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"應用程式清單"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"這個應用程式未取得錄製內容的權限,但可以透過這部 USB 裝置錄製音訊。"</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"主螢幕"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"返回"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"最近使用的應用程式"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"通知"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"快速設定"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"開啟電源對話方塊"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"切換分割畫面模式"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"螢幕鎖定"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"擷取螢幕畫面"</string>
</resources>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 2ecc83518318..bc022155e2b9 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -286,7 +286,7 @@
<string name="permgrouprequest_location" msgid="3788275734953323491">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuthi ingene kundawo yale divayisi?"</string>
<string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Uhlelo lokusebenza luzoba nokufinyelela kuphela kundawo ngenkathi usebenzisa uhlelo lokusebenza"</string>
<string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuze ifinyelele indawo yale divayisi &lt;b&gt;ngaso sonke isikhathi&lt;/b&gt;?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Uhlelo lokusebenza manje lungafinyelela kundawo kuphela ngenkathi usebenzisa uhlelo lokusebenza"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="6969122401786527350">"Lolu hlelo lokusebenza lungafuna ukufinyelela indawo yakho ngaso sonke isikhathi, ngisho noma ungasebenzisi uhlelo lokusebenza. Vumela kokuthi "<annotation id="link">"izilungiselelo"</annotation>"."</string>
<string name="permgrouplab_calendar" msgid="5863508437783683902">"Ikhalenda"</string>
<string name="permgroupdesc_calendar" msgid="3889615280211184106">"finyelela kukhalenda yakho"</string>
<string name="permgrouprequest_calendar" msgid="289900767793189421">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuthi ifinyelele kukhalenda yakho?"</string>
@@ -1963,9 +1963,6 @@
<string name="zen_upgrade_notification_content" msgid="1794994264692424562">"Thepha ukuze uhlole ukuthi yini evinjelwe."</string>
<string name="notification_app_name_system" msgid="4205032194610042794">"Isistimu"</string>
<string name="notification_app_name_settings" msgid="7751445616365753381">"Izilungiselelo"</string>
- <string name="standby_warning_title" msgid="9221585425153642453">"Ilindile"</string>
- <string name="standby_warning_message" product="tv" msgid="6373301881876406323">"Idivayisi ye-Android TV maduze izovalwa, cindezela inkinobho ukuze uyigcine ivuliwe."</string>
- <string name="standby_warning_message" product="default" msgid="5222741828239073484">"Idivayisi maduze izovalwa, cindezela ukuze uyigcine ivuliwe."</string>
<string name="notification_appops_camera_active" msgid="5050283058419699771">"Ikhamera"</string>
<string name="notification_appops_microphone_active" msgid="4335305527588191730">"Imakrofoni"</string>
<string name="notification_appops_overlay_active" msgid="633813008357934729">"iboniswa ngaphezulu kwezinye izinhlelo zokusebenza kusikrini sakho"</string>
@@ -2006,22 +2003,13 @@
<string name="chooser_no_direct_share_targets" msgid="997970693708458895">"Ukwabelana okuqondile akutholakali"</string>
<string name="chooser_all_apps_button_label" msgid="3631524352936289457">"Uhlu lwezinhlelo zokusebenza"</string>
<string name="usb_device_resolve_prompt_warn" msgid="5701272284724577469">"Lolu hlelo lokusebenza alunikeziwe imvume yokurekhoda kodwa lungathwebula umsindo ngale divayisi ye-USB."</string>
- <!-- no translation found for accessibility_system_action_home_label (6089400419441597916) -->
- <skip />
- <!-- no translation found for accessibility_system_action_back_label (8986628898117178971) -->
- <skip />
- <!-- no translation found for accessibility_system_action_recents_label (7607601657790855723) -->
- <skip />
- <!-- no translation found for accessibility_system_action_notifications_label (1578681904050072545) -->
- <skip />
- <!-- no translation found for accessibility_system_action_quick_settings_label (3885565587471448947) -->
- <skip />
- <!-- no translation found for accessibility_system_action_power_dialog_label (2299530700682199873) -->
- <skip />
- <!-- no translation found for accessibility_system_action_toggle_split_screen_label (2853334443686935668) -->
- <skip />
- <!-- no translation found for accessibility_system_action_lock_screen_label (2377933717780192594) -->
- <skip />
- <!-- no translation found for accessibility_system_action_screenshot_label (1933564892301816480) -->
- <skip />
+ <string name="accessibility_system_action_home_label" msgid="6089400419441597916">"Ikhaya"</string>
+ <string name="accessibility_system_action_back_label" msgid="8986628898117178971">"Emuva"</string>
+ <string name="accessibility_system_action_recents_label" msgid="7607601657790855723">"Izinhlelo zokusebenza zakamuva"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="1578681904050072545">"Izaziso"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="3885565587471448947">"Izilungiselelo ezisheshayo"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="2299530700682199873">"Ibhokisi lamandla"</string>
+ <string name="accessibility_system_action_toggle_split_screen_label" msgid="2853334443686935668">"Guqula ukuhlukanisa isikrini"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="2377933717780192594">"Khiya isikrini"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="1933564892301816480">"Isithombe-skrini"</string>
</resources>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 42e62d740edd..0f650e37db2f 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -704,96 +704,57 @@
<string name="permgrouplab_contacts">Contacts</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgroupdesc_contacts">access your contacts</string>
- <!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgrouprequest_contacts">Allow
- &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to access your contacts?</string>
<!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgrouplab_location">Location</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgroupdesc_location">access this device\'s location</string>
- <!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgrouprequest_location">Allow
- &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to access this device\'s location?</string>
- <!-- Subtitle of the message shown to the user when the apps requests permission to use the location only while app is in foreground [CHAR LIMIT=150]-->
- <string name="permgrouprequestdetail_location">The app will only have access to the location while you\u2019re using the app</string>
- <!-- Message shown to the user when the apps requests permission to use the location while app is in foreground and background. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgroupbackgroundrequest_location">Allow
- &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to access this device\u2019s location &lt;b>all the time&lt;/b>?</string>
- <!-- Subtitle of the message shown to the user when the apps requests permission to use the location while app is in foreground and background. Try to keep the link annotation at the end of the string [CHAR LIMIT=150] -->
- <string name="permgroupbackgroundrequestdetail_location">This app may want to access your location all the time, even when you\u2019re not using the app. Allow in <annotation id="link">settings</annotation>.</string>
<!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgrouplab_calendar">Calendar</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgroupdesc_calendar">access your calendar</string>
- <!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgrouprequest_calendar">Allow
- &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to access your calendar?</string>
<!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgrouplab_sms">SMS</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgroupdesc_sms">send and view SMS messages</string>
- <!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgrouprequest_sms">Allow
- &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to send and view SMS messages?</string>
<!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgrouplab_storage">Storage</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgroupdesc_storage">access photos, media, and files on your device</string>
- <!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgrouprequest_storage">Allow
- &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to access photos, media, and files on your device?</string>
<!-- Title of a category of application permissioncds, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgrouplab_microphone">Microphone</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgroupdesc_microphone">record audio</string>
- <!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgrouprequest_microphone">Allow
- &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to record audio?</string>
<!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=40]-->
<string name="permgrouplab_activityRecognition">Physical activity</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=40]-->
<string name="permgroupdesc_activityRecognition">access your physical activity</string>
- <!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgrouprequest_activityRecognition">Allow
- &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to access your physical activity?</string>
<!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgrouplab_camera">Camera</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgroupdesc_camera">take pictures and record video</string>
- <!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgrouprequest_camera">Allow
- &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to take pictures and record video?</string>
<!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgrouplab_calllog">Call logs</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgroupdesc_calllog">read and write phone call log</string>
- <!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgrouprequest_calllog">Allow
- &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to access your phone call logs?</string>
<!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgrouplab_phone">Phone</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgroupdesc_phone">make and manage phone calls</string>
<!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgrouprequest_phone">Allow
- &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to make and manage phone calls?</string>
<!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgrouplab_sensors">Body sensors</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgroupdesc_sensors">access sensor data about your vital signs</string>
- <!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgrouprequest_sensors">Allow
- &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to access sensor data about your vital signs?</string>
<!-- Title for the capability of an accessibility service to retrieve window content. -->
<string name="capability_title_canRetrieveWindowContent">Retrieve window content</string>
@@ -3064,9 +3025,9 @@
<string name="ok">OK</string>
<!-- Preference framework strings. -->
<string name="cancel">Cancel</string>
- <!-- Preference framework strings. -->
+ <!-- Preference framework strings. {@deprecated Do not use. Incorrectly matches android.R.string.ok rather than "yes".} -->
<string name="yes">OK</string>
- <!-- Preference framework strings. -->
+ <!-- Preference framework strings. {@deprecated Do not use. Incorrectly matches android.R.string.cancel rather than "no".} -->
<string name="no">Cancel</string>
<!-- This is the generic "attention" string to be used in attention dialogs. Typically
combined with setIconAttribute(android.R.attr.alertDialogIcon)
@@ -5359,4 +5320,7 @@
<string name="accessibility_system_action_lock_screen_label">Lock Screen</string>
<!-- Label for taking screenshot action [CHAR LIMIT=NONE] -->
<string name="accessibility_system_action_screenshot_label">Screenshot</string>
+
+ <!-- Accessibility description of caption view -->
+ <string name="accessibility_freeform_caption"><xliff:g id="app_name">%1$s</xliff:g> app in Pop-up window.</string>
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index e56bbf6fa08f..23402c143fa0 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -3763,4 +3763,6 @@
<java-symbol type="string" name="accessibility_system_action_recents_label" />
<java-symbol type="string" name="accessibility_system_action_screenshot_label" />
<java-symbol type="string" name="accessibility_system_action_toggle_split_screen_label" />
+
+ <java-symbol type="string" name="accessibility_freeform_caption" />
</resources>
diff --git a/core/tests/coretests/src/android/hardware/display/BrightnessConfigurationTest.java b/core/tests/coretests/src/android/hardware/display/BrightnessConfigurationTest.java
index 823fca5a68ad..85aa1184c501 100644
--- a/core/tests/coretests/src/android/hardware/display/BrightnessConfigurationTest.java
+++ b/core/tests/coretests/src/android/hardware/display/BrightnessConfigurationTest.java
@@ -23,13 +23,23 @@ import static org.junit.Assert.fail;
import android.os.Parcel;
import android.util.Pair;
+import android.util.Xml;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
+import com.android.internal.util.FastXmlSerializer;
+
import org.junit.Test;
import org.junit.runner.RunWith;
-
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+import org.xmlpull.v1.XmlSerializer;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
import java.util.Arrays;
@SmallTest
@@ -104,11 +114,15 @@ public class BrightnessConfigurationTest {
});
}
-
@Test
public void testParceledConfigIsEquivalent() {
BrightnessConfiguration.Builder builder =
new BrightnessConfiguration.Builder(LUX_LEVELS, NITS_LEVELS);
+ builder.setShouldCollectColorSamples(true);
+ builder.addCorrectionByCategory(3,
+ BrightnessCorrection.createScaleAndTranslateLog(1.0f, 2.0f));
+ builder.addCorrectionByPackageName("a.package.name",
+ BrightnessCorrection.createScaleAndTranslateLog(1.0f, 2.0f));
BrightnessConfiguration config = builder.build();
Parcel p = Parcel.obtain();
p.writeParcelable(config, 0 /*flags*/);
@@ -119,12 +133,49 @@ public class BrightnessConfigurationTest {
}
@Test
+ public void testWriteReadXml() throws IOException, XmlPullParserException {
+ BrightnessConfiguration.Builder builder =
+ new BrightnessConfiguration.Builder(LUX_LEVELS, NITS_LEVELS);
+ builder.setShouldCollectColorSamples(true);
+ builder.addCorrectionByCategory(3,
+ BrightnessCorrection.createScaleAndTranslateLog(1.0f, 2.0f));
+ builder.addCorrectionByPackageName("a.package.name",
+ BrightnessCorrection.createScaleAndTranslateLog(1.0f, 2.0f));
+ BrightnessConfiguration config = builder.build();
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ XmlSerializer out = new FastXmlSerializer();
+ out.setOutput(baos, StandardCharsets.UTF_8.name());
+ out.startDocument(null, true);
+ config.saveToXml(out);
+ out.endDocument();
+ baos.flush();
+
+ ByteArrayInputStream input = new ByteArrayInputStream(baos.toByteArray());
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(input, StandardCharsets.UTF_8.name());
+ BrightnessConfiguration loadedConfig = BrightnessConfiguration.loadFromXml(parser);
+
+ assertEquals(config, loadedConfig);
+ }
+
+ @Test
public void testEquals() {
BrightnessConfiguration.Builder builder =
new BrightnessConfiguration.Builder(LUX_LEVELS, NITS_LEVELS);
+ builder.setShouldCollectColorSamples(true);
+ builder.addCorrectionByCategory(3,
+ BrightnessCorrection.createScaleAndTranslateLog(1.0f, 2.0f));
+ builder.addCorrectionByPackageName("a.package.name",
+ BrightnessCorrection.createScaleAndTranslateLog(1.0f, 2.0f));
BrightnessConfiguration baseConfig = builder.build();
builder = new BrightnessConfiguration.Builder(LUX_LEVELS, NITS_LEVELS);
+ builder.setShouldCollectColorSamples(true);
+ builder.addCorrectionByCategory(3,
+ BrightnessCorrection.createScaleAndTranslateLog(1.0f, 2.0f));
+ builder.addCorrectionByPackageName("a.package.name",
+ BrightnessCorrection.createScaleAndTranslateLog(1.0f, 2.0f));
BrightnessConfiguration identicalConfig = builder.build();
assertEquals(baseConfig, identicalConfig);
assertEquals("hashCodes must be equal for identical configs",
@@ -133,14 +184,37 @@ public class BrightnessConfigurationTest {
float[] lux = Arrays.copyOf(LUX_LEVELS, LUX_LEVELS.length);
lux[lux.length - 1] = lux[lux.length - 1] * 2;
builder = new BrightnessConfiguration.Builder(lux, NITS_LEVELS);
+ builder.setShouldCollectColorSamples(true);
+ builder.addCorrectionByCategory(3,
+ BrightnessCorrection.createScaleAndTranslateLog(1.0f, 2.0f));
+ builder.addCorrectionByPackageName("a.package.name",
+ BrightnessCorrection.createScaleAndTranslateLog(1.0f, 2.0f));
BrightnessConfiguration luxDifferConfig = builder.build();
assertNotEquals(baseConfig, luxDifferConfig);
float[] nits = Arrays.copyOf(NITS_LEVELS, NITS_LEVELS.length);
nits[nits.length - 1] = nits[nits.length - 1] * 2;
builder = new BrightnessConfiguration.Builder(LUX_LEVELS, nits);
+ builder.setShouldCollectColorSamples(true);
+ builder.addCorrectionByCategory(3,
+ BrightnessCorrection.createScaleAndTranslateLog(1.0f, 2.0f));
+ builder.addCorrectionByPackageName("a.package.name",
+ BrightnessCorrection.createScaleAndTranslateLog(1.0f, 2.0f));
BrightnessConfiguration nitsDifferConfig = builder.build();
assertNotEquals(baseConfig, nitsDifferConfig);
+
+ builder = new BrightnessConfiguration.Builder(LUX_LEVELS, NITS_LEVELS);
+ builder.addCorrectionByCategory(3,
+ BrightnessCorrection.createScaleAndTranslateLog(1.0f, 2.0f));
+ builder.addCorrectionByPackageName("a.package.name",
+ BrightnessCorrection.createScaleAndTranslateLog(1.0f, 2.0f));
+ BrightnessConfiguration colorCollectionDiffers = builder.build();
+ assertNotEquals(baseConfig, colorCollectionDiffers);
+
+ builder = new BrightnessConfiguration.Builder(LUX_LEVELS, NITS_LEVELS);
+ builder.setShouldCollectColorSamples(true);
+ BrightnessConfiguration correctionsDiffer = builder.build();
+ assertNotEquals(baseConfig, correctionsDiffer);
}
private static void assertArrayEquals(float[] expected, float[] actual, String name) {
diff --git a/core/tests/screenshothelpertests/src/com/android/internal/util/ScreenshotHelperTest.java b/core/tests/screenshothelpertests/src/com/android/internal/util/ScreenshotHelperTest.java
index 848364584ef3..e16d1caa98eb 100644
--- a/core/tests/screenshothelpertests/src/com/android/internal/util/ScreenshotHelperTest.java
+++ b/core/tests/screenshothelpertests/src/com/android/internal/util/ScreenshotHelperTest.java
@@ -19,7 +19,7 @@ package com.android.internal.util;
import static android.view.WindowManager.TAKE_SCREENSHOT_FULLSCREEN;
import static android.view.WindowManager.TAKE_SCREENSHOT_SELECTED_REGION;
-import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertNull;
import static junit.framework.Assert.fail;
import static org.mockito.ArgumentMatchers.any;
@@ -80,8 +80,8 @@ public final class ScreenshotHelperTest {
CountDownLatch lock = new CountDownLatch(1);
mScreenshotHelper.takeScreenshot(TAKE_SCREENSHOT_FULLSCREEN, false, false, timeoutMs,
mHandler,
- worked -> {
- assertFalse(worked);
+ uri -> {
+ assertNull(uri);
lock.countDown();
});
diff --git a/media/java/android/media/tv/OWNER b/media/java/android/media/tv/OWNER
deleted file mode 100644
index 64c0bb53e894..000000000000
--- a/media/java/android/media/tv/OWNER
+++ /dev/null
@@ -1,5 +0,0 @@
-amyjojo@google.com
-nchalko@google.com
-shubang@google.com
-quxiangfang@google.com
-
diff --git a/media/java/android/media/tv/OWNERS b/media/java/android/media/tv/OWNERS
index 4a03b3c6852e..64c0bb53e894 100644
--- a/media/java/android/media/tv/OWNERS
+++ b/media/java/android/media/tv/OWNERS
@@ -1,2 +1,5 @@
+amyjojo@google.com
nchalko@google.com
+shubang@google.com
+quxiangfang@google.com
diff --git a/media/java/android/media/tv/tuner/FrontendSettings.java b/media/java/android/media/tv/tuner/FrontendSettings.java
new file mode 100644
index 000000000000..3782cc6c6ec3
--- /dev/null
+++ b/media/java/android/media/tv/tuner/FrontendSettings.java
@@ -0,0 +1,274 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.media.tv.tuner;
+
+import android.media.tv.tuner.TunerConstants.FrontendSettingsType;
+
+import java.util.List;
+
+/**
+ * @hide
+ */
+public abstract class FrontendSettings {
+ protected int mFrequency;
+
+ /**
+ * Returns the frontend type.
+ */
+ @FrontendSettingsType
+ public abstract int getType();
+
+ public int getFrequency() {
+ return mFrequency;
+ }
+
+ // TODO: use hal constants for enum fields
+ // TODO: javaDoc
+ // TODO: add builders and getters for other settings type
+
+ /**
+ * Frontend settings for analog.
+ */
+ public static class FrontendAnalogSettings extends FrontendSettings {
+ private int mAnalogType;
+ private int mSifStandard;
+
+ @Override
+ public int getType() {
+ return TunerConstants.FRONTEND_TYPE_ANALOG;
+ }
+
+ public int getAnalogType() {
+ return mAnalogType;
+ }
+
+ public int getSifStandard() {
+ return mSifStandard;
+ }
+
+ /**
+ * Creates a new builder object.
+ */
+ public static Builder newBuilder() {
+ return new Builder();
+ }
+
+ private FrontendAnalogSettings(int frequency, int analogType, int sifStandard) {
+ mFrequency = frequency;
+ mAnalogType = analogType;
+ mSifStandard = sifStandard;
+ }
+
+ /**
+ * Builder for FrontendAnalogSettings.
+ */
+ public static class Builder {
+ private int mFrequency;
+ private int mAnalogType;
+ private int mSifStandard;
+
+ private Builder() {}
+
+ /**
+ * Sets frequency.
+ */
+ public Builder setFrequency(int frequency) {
+ mFrequency = frequency;
+ return this;
+ }
+
+ /**
+ * Sets analog type.
+ */
+ public Builder setAnalogType(int analogType) {
+ mAnalogType = analogType;
+ return this;
+ }
+
+ /**
+ * Sets sif standard.
+ */
+ public Builder setSifStandard(int sifStandard) {
+ mSifStandard = sifStandard;
+ return this;
+ }
+
+ /**
+ * Builds a FrontendAnalogSettings instance.
+ */
+ public FrontendAnalogSettings build() {
+ return new FrontendAnalogSettings(mFrequency, mAnalogType, mSifStandard);
+ }
+ }
+ }
+
+ /**
+ * Frontend settings for ATSC.
+ */
+ public static class FrontendAtscSettings extends FrontendSettings {
+ public int modulation;
+
+ @Override
+ public int getType() {
+ return TunerConstants.FRONTEND_TYPE_ATSC;
+ }
+ }
+
+ /**
+ * Frontend settings for ATSC-3.
+ */
+ public static class FrontendAtsc3Settings extends FrontendSettings {
+ public int bandwidth;
+ public byte demodOutputFormat;
+ public List<FrontendAtsc3PlpSettings> plpSettings;
+
+ @Override
+ public int getType() {
+ return TunerConstants.FRONTEND_TYPE_ATSC3;
+ }
+ }
+
+ /**
+ * Frontend settings for DVBS.
+ */
+ public static class FrontendDvbsSettings extends FrontendSettings {
+ public int modulation;
+ public FrontendDvbsCodeRate coderate;
+ public int symbolRate;
+ public int rolloff;
+ public int pilot;
+ public int inputStreamId;
+ public byte standard;
+
+ @Override
+ public int getType() {
+ return TunerConstants.FRONTEND_TYPE_DVBS;
+ }
+ }
+
+ /**
+ * Frontend settings for DVBC.
+ */
+ public static class FrontendDvbcSettings extends FrontendSettings {
+ public int modulation;
+ public long fec;
+ public int symbolRate;
+ public int outerFec;
+ public byte annex;
+ public int spectralInversion;
+
+ @Override
+ public int getType() {
+ return TunerConstants.FRONTEND_TYPE_DVBC;
+ }
+ }
+
+ /**
+ * Frontend settings for DVBT.
+ */
+ public static class FrontendDvbtSettings extends FrontendSettings {
+ public int transmissionMode;
+ public int bandwidth;
+ public int constellation;
+ public int hierarchy;
+ public int hpCoderate;
+ public int lpCoderate;
+ public int guardInterval;
+ public boolean isHighPriority;
+ public byte standard;
+ public boolean isMiso;
+ public int plpMode;
+ public byte plpId;
+ public byte plpGroupId;
+
+ @Override
+ public int getType() {
+ return TunerConstants.FRONTEND_TYPE_DVBT;
+ }
+ }
+
+ /**
+ * Frontend settings for ISDBS.
+ */
+ public static class FrontendIsdbsSettings extends FrontendSettings {
+ public int streamId;
+ public int streamIdType;
+ public int modulation;
+ public int coderate;
+ public int symbolRate;
+ public int rolloff;
+
+ @Override
+ public int getType() {
+ return TunerConstants.FRONTEND_TYPE_ISDBS;
+ }
+ }
+
+ /**
+ * Frontend settings for ISDBS-3.
+ */
+ public static class FrontendIsdbs3Settings extends FrontendSettings {
+ public int streamId;
+ public int streamIdType;
+ public int modulation;
+ public int coderate;
+ public int symbolRate;
+ public int rolloff;
+
+ @Override
+ public int getType() {
+ return TunerConstants.FRONTEND_TYPE_ISDBS3;
+ }
+ }
+
+ /**
+ * Frontend settings for ISDBT.
+ */
+ public static class FrontendIsdbtSettings extends FrontendSettings {
+ public int modulation;
+ public int bandwidth;
+ public int coderate;
+ public int guardInterval;
+ public int serviceAreaId;
+
+ @Override
+ public int getType() {
+ return TunerConstants.FRONTEND_TYPE_ISDBT;
+ }
+ }
+
+ /**
+ * PLP settings for ATSC-3.
+ */
+ public static class FrontendAtsc3PlpSettings {
+ public byte plpId;
+ public int modulation;
+ public int interleaveMode;
+ public int codeRate;
+ public int fec;
+ }
+
+ /**
+ * Code rate for DVBS.
+ */
+ public static class FrontendDvbsCodeRate {
+ public long fec;
+ public boolean isLinear;
+ public boolean isShortFrames;
+ public int bitsPer1000Symbol;
+ }
+}
diff --git a/media/java/android/media/tv/tuner/Tuner.java b/media/java/android/media/tv/tuner/Tuner.java
index c91325aa9a09..82cef2e43307 100644
--- a/media/java/android/media/tv/tuner/Tuner.java
+++ b/media/java/android/media/tv/tuner/Tuner.java
@@ -16,6 +16,7 @@
package android.media.tv.tuner;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.media.tv.tuner.TunerConstants.DemuxPidType;
import android.os.Handler;
@@ -78,6 +79,7 @@ public final class Tuner implements AutoCloseable {
* Native method to open frontend of the given ID.
*/
private native Frontend nativeOpenFrontendById(int id);
+ private native int nativeTune(int type, FrontendSettings settings);
private native Filter nativeOpenFilter(int type, int subType, int bufferSize);
@@ -207,6 +209,13 @@ public final class Tuner implements AutoCloseable {
}
}
+ /**
+ * Tunes the frontend to using the settings given.
+ */
+ public int tune(@NonNull FrontendSettings settings) {
+ return nativeTune(settings.getType(), settings);
+ }
+
private List<Integer> getFrontendIds() {
mFrontendIds = nativeGetFrontendIds();
return mFrontendIds;
diff --git a/media/java/android/media/tv/tuner/TunerConstants.java b/media/java/android/media/tv/tuner/TunerConstants.java
index 01f9367dd4f3..458cb1678ded 100644
--- a/media/java/android/media/tv/tuner/TunerConstants.java
+++ b/media/java/android/media/tv/tuner/TunerConstants.java
@@ -75,6 +75,21 @@ final class TunerConstants {
public static final int DEMUX_T_PID = 1;
public static final int DEMUX_MMPT_PID = 2;
+ @IntDef({FRONTEND_SETTINGS_ANALOG, FRONTEND_SETTINGS_ATSC, FRONTEND_SETTINGS_ATSC3,
+ FRONTEND_SETTINGS_DVBS, FRONTEND_SETTINGS_DVBC, FRONTEND_SETTINGS_DVBT,
+ FRONTEND_SETTINGS_ISDBS, FRONTEND_SETTINGS_ISDBS3, FRONTEND_SETTINGS_ISDBT})
+ public @interface FrontendSettingsType {}
+
+ public static final int FRONTEND_SETTINGS_ANALOG = 1;
+ public static final int FRONTEND_SETTINGS_ATSC = 2;
+ public static final int FRONTEND_SETTINGS_ATSC3 = 3;
+ public static final int FRONTEND_SETTINGS_DVBS = 4;
+ public static final int FRONTEND_SETTINGS_DVBC = 5;
+ public static final int FRONTEND_SETTINGS_DVBT = 6;
+ public static final int FRONTEND_SETTINGS_ISDBS = 7;
+ public static final int FRONTEND_SETTINGS_ISDBS3 = 8;
+ public static final int FRONTEND_SETTINGS_ISDBT = 9;
+
private TunerConstants() {
}
}
diff --git a/media/jni/android_media_MediaDataSource.cpp b/media/jni/android_media_MediaDataSource.cpp
index 9705b91dd52a..0cb4b2dc52f0 100644
--- a/media/jni/android_media_MediaDataSource.cpp
+++ b/media/jni/android_media_MediaDataSource.cpp
@@ -26,7 +26,6 @@
#include <nativehelper/JNIHelp.h>
#include <binder/MemoryDealer.h>
-#include <drm/drm_framework_common.h>
#include <media/stagefright/foundation/ADebug.h>
#include <nativehelper/ScopedLocalRef.h>
@@ -161,8 +160,4 @@ String8 JMediaDataSource::toString() {
return String8::format("JMediaDataSource(pid %d, uid %d)", getpid(), getuid());
}
-sp<DecryptHandle> JMediaDataSource::DrmInitialization(const char * /* mime */) {
- return NULL;
-}
-
} // namespace android
diff --git a/media/jni/android_media_MediaDataSource.h b/media/jni/android_media_MediaDataSource.h
index 39405d2db579..378baf433fed 100644
--- a/media/jni/android_media_MediaDataSource.h
+++ b/media/jni/android_media_MediaDataSource.h
@@ -47,7 +47,6 @@ public:
virtual void close();
virtual uint32_t getFlags();
virtual String8 toString();
- virtual sp<DecryptHandle> DrmInitialization(const char *mime);
private:
// Protect all member variables with mLock because this object will be
diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp
index f5202fc17f71..5216906d5ec5 100644
--- a/media/jni/android_media_tv_Tuner.cpp
+++ b/media/jni/android_media_tv_Tuner.cpp
@@ -31,6 +31,9 @@ using ::android::hardware::tv::tuner::V1_0::DemuxFilterMainType;
using ::android::hardware::tv::tuner::V1_0::DemuxMmtpPid;
using ::android::hardware::tv::tuner::V1_0::DemuxTpid;
using ::android::hardware::tv::tuner::V1_0::DemuxTsFilterType;
+using ::android::hardware::tv::tuner::V1_0::FrontendAnalogSettings;
+using ::android::hardware::tv::tuner::V1_0::FrontendAnalogSifStandard;
+using ::android::hardware::tv::tuner::V1_0::FrontendAnalogType;
using ::android::hardware::tv::tuner::V1_0::ITuner;
using ::android::hardware::tv::tuner::V1_0::Result;
@@ -263,6 +266,15 @@ jobject JTuner::openLnbById(int id) {
id);
}
+int JTuner::tune(const FrontendSettings& settings) {
+ if (mFe == NULL) {
+ ALOGE("frontend is not initialized");
+ return (int)Result::INVALID_STATE;
+ }
+ Result result = mFe->tune(settings);
+ return (int)result;
+}
+
bool JTuner::openDemux() {
if (mTuner == nullptr) {
return false;
@@ -417,6 +429,32 @@ static DemuxPid getDemuxPid(int pidType, int pid) {
return demuxPid;
}
+static FrontendSettings getFrontendSettings(JNIEnv *env, int type, jobject settings) {
+ FrontendSettings frontendSettings;
+ jclass clazz = env->FindClass("android/media/tv/tuner/FrontendSettings");
+ jfieldID freqField = env->GetFieldID(clazz, "frequency", "I");
+ uint32_t freq = static_cast<uint32_t>(env->GetIntField(clazz, freqField));
+
+ // TODO: handle the other 8 types of settings
+ if (type == 1) {
+ // analog
+ clazz = env->FindClass("android/media/tv/tuner/FrontendSettings$FrontendAnalogSettings");
+ FrontendAnalogType analogType =
+ static_cast<FrontendAnalogType>(
+ env->GetIntField(settings, env->GetFieldID(clazz, "mAnalogType", "I")));
+ FrontendAnalogSifStandard sifStandard =
+ static_cast<FrontendAnalogSifStandard>(
+ env->GetIntField(settings, env->GetFieldID(clazz, "mSifStandard", "I")));
+ FrontendAnalogSettings frontendAnalogSettings {
+ .frequency = freq,
+ .type = analogType,
+ .sifStandard = sifStandard,
+ };
+ frontendSettings.analog(frontendAnalogSettings);
+ }
+ return frontendSettings;
+}
+
static sp<IFilter> getFilter(JNIEnv *env, jobject filter) {
return (IFilter *)env->GetLongField(filter, gFields.filterContext);
}
@@ -476,6 +514,11 @@ static jobject android_media_tv_Tuner_open_frontend_by_id(JNIEnv *env, jobject t
return tuner->openFrontendById(id);
}
+static int android_media_tv_Tuner_tune(JNIEnv *env, jobject thiz, jint type, jobject settings) {
+ sp<JTuner> tuner = getTuner(env, thiz);
+ return tuner->tune(getFrontendSettings(env, type, settings));
+}
+
static jobject android_media_tv_Tuner_get_lnb_ids(JNIEnv *env, jobject thiz) {
sp<JTuner> tuner = getTuner(env, thiz);
return tuner->getLnbIds();
@@ -612,6 +655,8 @@ static const JNINativeMethod gTunerMethods[] = {
(void *)android_media_tv_Tuner_get_frontend_ids },
{ "nativeOpenFrontendById", "(I)Landroid/media/tv/tuner/Tuner$Frontend;",
(void *)android_media_tv_Tuner_open_frontend_by_id },
+ { "nativeTune", "(ILandroid/media/tv/tuner/FrontendSettings;)I",
+ (void *)android_media_tv_Tuner_tune },
{ "nativeOpenFilter", "(III)Landroid/media/tv/tuner/Tuner$Filter;",
(void *)android_media_tv_Tuner_open_filter },
{ "nativeGetLnbIds", "()Ljava/util/List;",
diff --git a/media/jni/android_media_tv_Tuner.h b/media/jni/android_media_tv_Tuner.h
index 3bf6ec84c8f7..f856791e2618 100644
--- a/media/jni/android_media_tv_Tuner.h
+++ b/media/jni/android_media_tv_Tuner.h
@@ -34,6 +34,7 @@ using ::android::hardware::tv::tuner::V1_0::FrontendEventType;
using ::android::hardware::tv::tuner::V1_0::FrontendId;
using ::android::hardware::tv::tuner::V1_0::FrontendScanMessage;
using ::android::hardware::tv::tuner::V1_0::FrontendScanMessageType;
+using ::android::hardware::tv::tuner::V1_0::FrontendSettings;
using ::android::hardware::tv::tuner::V1_0::IDemux;
using ::android::hardware::tv::tuner::V1_0::IDescrambler;
using ::android::hardware::tv::tuner::V1_0::IDvr;
@@ -95,6 +96,7 @@ struct JTuner : public RefBase {
sp<ITuner> getTunerService();
jobject getFrontendIds();
jobject openFrontendById(int id);
+ int tune(const FrontendSettings& settings);
jobject getLnbIds();
jobject openLnbById(int id);
jobject openFilter(DemuxFilterType type, int bufferSize);
diff --git a/packages/CarSystemUI/res/values/integers_car.xml b/packages/CarSystemUI/res/values/integers_car.xml
index d6c16cb4180b..e53446e7c057 100644
--- a/packages/CarSystemUI/res/values/integers_car.xml
+++ b/packages/CarSystemUI/res/values/integers_car.xml
@@ -20,11 +20,6 @@
<!-- Full screen user switcher column number TODO: move to support library-->
<integer name="user_fullscreen_switcher_num_col">3</integer>
- <!-- Number of milliseconds user can spend driving with the keyguard up. After that, we switch to Guest. -->
- <!-- If the number is negative, the feature is disabled.
- If it's zero, we switch to guest immediately as we start driving. -->
- <integer name="driving_on_keyguard_timeout_ms">-1</integer>
-
<!--Percentage of the screen height, from the bottom, that a notification panel being
partially closed at will result in it remaining open if released-->
<integer name="notification_settle_open_percentage">20</integer>
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
index 4e5a3a633c3e..bef769d7ba10 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
@@ -24,7 +24,6 @@ import android.animation.ValueAnimator;
import android.annotation.Nullable;
import android.app.ActivityManager;
import android.car.Car;
-import android.car.drivingstate.CarDrivingStateEvent;
import android.car.drivingstate.CarUxRestrictionsManager;
import android.car.hardware.power.CarPowerManager.CarPowerStateListener;
import android.content.Context;
@@ -114,6 +113,7 @@ import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.LightBarController;
import com.android.systemui.statusbar.phone.LightsOutNotifController;
+import com.android.systemui.statusbar.phone.LockscreenLockIconController;
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper;
import com.android.systemui.statusbar.phone.NotificationGroupManager;
@@ -121,6 +121,7 @@ import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
+import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter;
import com.android.systemui.statusbar.phone.StatusBarWindowController;
import com.android.systemui.statusbar.phone.StatusBarWindowViewController;
import com.android.systemui.statusbar.policy.BatteryController;
@@ -153,7 +154,10 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
private static final float FLING_ANIMATION_MAX_TIME = 0.5f;
// acceleration rate for the fling animation
private static final float FLING_SPEED_UP_FACTOR = 0.6f;
+
private final ScrimController mScrimController;
+ private final StatusBarWindowViewController mStatusBarWindowViewController;
+ private final LockscreenLockIconController mLockscreenLockIconController;
private float mOpeningVelocity = DEFAULT_FLING_VELOCITY;
private float mClosingVelocity = DEFAULT_FLING_VELOCITY;
@@ -175,10 +179,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
private final CarServiceProvider mCarServiceProvider;
private DeviceProvisionedController mDeviceProvisionedController;
- private DrivingStateHelper mDrivingStateHelper;
private PowerManagerHelper mPowerManagerHelper;
private FlingAnimationUtils mFlingAnimationUtils;
- private SwitchToGuestTimer mSwitchToGuestTimer;
private NotificationDataManager mNotificationDataManager;
private NotificationClickHandlerFactory mNotificationClickHandlerFactory;
private ScreenLifecycle mScreenLifecycle;
@@ -287,7 +289,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
NotificationListener notificationListener,
ConfigurationController configurationController,
StatusBarWindowController statusBarWindowController,
- StatusBarWindowViewController.Builder statusBarWindowViewControllerBuild,
+ StatusBarWindowViewController statusBarWindowViewController,
+ LockscreenLockIconController lockscreenLockIconController,
DozeParameters dozeParameters,
ScrimController scrimController,
Lazy<LockscreenWallpaper> lockscreenWallpaperLazy,
@@ -304,6 +307,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
Optional<Divider> dividerOptional,
SuperStatusBarViewFactory superStatusBarViewFactory,
LightsOutNotifController lightsOutNotifController,
+ StatusBarNotificationActivityStarter.Builder
+ statusBarNotificationActivityStarterBuilder,
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
ViewMediatorCallback viewMediatorCallback,
DismissCallbackRegistry dismissCallbackRegistry,
@@ -363,7 +368,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
notificationListener,
configurationController,
statusBarWindowController,
- statusBarWindowViewControllerBuild,
+ statusBarWindowViewController,
+ lockscreenLockIconController,
dozeParameters,
scrimController,
null /* keyguardLiftController */,
@@ -380,11 +386,14 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
remoteInputUriController,
dividerOptional,
lightsOutNotifController,
+ statusBarNotificationActivityStarterBuilder,
superStatusBarViewFactory,
statusBarKeyguardViewManager,
viewMediatorCallback,
dismissCallbackRegistry);
mScrimController = scrimController;
+ mStatusBarWindowViewController = statusBarWindowViewController;
+ mLockscreenLockIconController = lockscreenLockIconController;
mDeviceProvisionedController = deviceProvisionedController;
mCarServiceProvider = carServiceProvider;
mDrivingStateHelperLazy = drivingStateHelperLazy;
@@ -400,22 +409,22 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
mScreenLifecycle = Dependency.get(ScreenLifecycle.class);
mScreenLifecycle.addObserver(mScreenObserver);
- // Notification bar related setup.
+ // Notification bar related setup.
mInitialBackgroundAlpha = (float) mContext.getResources().getInteger(
- R.integer.config_initialNotificationBackgroundAlpha) / 100;
+ R.integer.config_initialNotificationBackgroundAlpha) / 100;
if (mInitialBackgroundAlpha < 0 || mInitialBackgroundAlpha > 100) {
throw new RuntimeException(
- "Unable to setup notification bar due to incorrect initial background alpha"
- + " percentage");
+ "Unable to setup notification bar due to incorrect initial background alpha"
+ + " percentage");
}
float finalBackgroundAlpha = Math.max(
- mInitialBackgroundAlpha,
- (float) mContext.getResources().getInteger(
- R.integer.config_finalNotificationBackgroundAlpha) / 100);
+ mInitialBackgroundAlpha,
+ (float) mContext.getResources().getInteger(
+ R.integer.config_finalNotificationBackgroundAlpha) / 100);
if (finalBackgroundAlpha < 0 || finalBackgroundAlpha > 100) {
throw new RuntimeException(
- "Unable to setup notification bar due to incorrect final background alpha"
- + " percentage");
+ "Unable to setup notification bar due to incorrect final background alpha"
+ + " percentage");
}
mBackgroundAlphaDiff = finalBackgroundAlpha - mInitialBackgroundAlpha;
@@ -432,15 +441,6 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
createBatteryController();
mCarBatteryController.startListening();
- // Used by onDrivingStateChanged and it can be called inside
- // DrivingStateHelper.connectToCarService()
- mSwitchToGuestTimer = new SwitchToGuestTimer(mContext);
-
- // Register a listener for driving state changes.
- mDrivingStateHelper = mDrivingStateHelperLazy.get();
- mDrivingStateHelper.setCarDrivingStateEventListener(this::onDrivingStateChanged);
- mDrivingStateHelper.connectToCarService();
-
mPowerManagerHelper = mPowerManagerHelperLazy.get();
mPowerManagerHelper.setCarPowerStateListener(mCarPowerStateListener);
mPowerManagerHelper.connectToCarService();
@@ -560,13 +560,6 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
});
CarNotificationListener carNotificationListener = new CarNotificationListener();
mCarUxRestrictionManagerWrapper = new CarUxRestrictionManagerWrapper();
- mCarServiceProvider.addListener(car -> {
- CarUxRestrictionsManager carUxRestrictionsManager =
- (CarUxRestrictionsManager)
- car.getCarManager(Car.CAR_UX_RESTRICTION_SERVICE);
- mCarUxRestrictionManagerWrapper.setCarUxRestrictionsManager(
- carUxRestrictionsManager);
- });
mNotificationDataManager = new NotificationDataManager();
mNotificationDataManager.setOnUnseenCountUpdateListener(
@@ -681,14 +674,21 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
return handled || isTracking;
}
});
+ mCarServiceProvider.addListener(car -> {
+ CarUxRestrictionsManager carUxRestrictionsManager =
+ (CarUxRestrictionsManager)
+ car.getCarManager(Car.CAR_UX_RESTRICTION_SERVICE);
+ mCarUxRestrictionManagerWrapper.setCarUxRestrictionsManager(
+ carUxRestrictionsManager);
- mNotificationViewController = new NotificationViewController(
- mNotificationView,
- PreprocessingManager.getInstance(mContext),
- carNotificationListener,
- mCarUxRestrictionManagerWrapper,
- mNotificationDataManager);
- mNotificationViewController.enable();
+ mNotificationViewController = new NotificationViewController(
+ mNotificationView,
+ PreprocessingManager.getInstance(mContext),
+ carNotificationListener,
+ mCarUxRestrictionManagerWrapper,
+ mNotificationDataManager);
+ mNotificationViewController.enable();
+ });
}
/**
@@ -906,20 +906,6 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
}
}
- private void onDrivingStateChanged(CarDrivingStateEvent notUsed) {
- // Check if we need to start the timer every time driving state changes.
- startSwitchToGuestTimerIfDrivingOnKeyguard();
- }
-
- private void startSwitchToGuestTimerIfDrivingOnKeyguard() {
- if (mDrivingStateHelper.isCurrentlyDriving() && mState != StatusBarState.SHADE) {
- // We're driving while keyguard is up.
- mSwitchToGuestTimer.start();
- } else {
- mSwitchToGuestTimer.cancel();
- }
- }
-
@Override
protected void createUserSwitcher() {
UserSwitcherController userSwitcherController =
@@ -945,8 +931,6 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
public void onStateChanged(int newState) {
super.onStateChanged(newState);
- startSwitchToGuestTimerIfDrivingOnKeyguard();
-
if (newState != StatusBarState.FULLSCREEN_USER_SWITCHER) {
hideUserSwitcher();
} else {
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java
index 4813d6dfeb7e..6529868c19ad 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java
@@ -73,12 +73,14 @@ import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.LightBarController;
import com.android.systemui.statusbar.phone.LightsOutNotifController;
+import com.android.systemui.statusbar.phone.LockscreenLockIconController;
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper;
import com.android.systemui.statusbar.phone.NotificationGroupManager;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
+import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter;
import com.android.systemui.statusbar.phone.StatusBarWindowController;
import com.android.systemui.statusbar.phone.StatusBarWindowViewController;
import com.android.systemui.statusbar.policy.BatteryController;
@@ -160,7 +162,8 @@ public class CarStatusBarModule {
NotificationListener notificationListener,
ConfigurationController configurationController,
StatusBarWindowController statusBarWindowController,
- StatusBarWindowViewController.Builder statusBarWindowViewControllerBuilder,
+ StatusBarWindowViewController statusBarWindowViewController,
+ LockscreenLockIconController lockscreenLockIconController,
DozeParameters dozeParameters,
ScrimController scrimController,
Lazy<LockscreenWallpaper> lockscreenWallpaperLazy,
@@ -177,6 +180,8 @@ public class CarStatusBarModule {
Optional<Divider> dividerOptional,
SuperStatusBarViewFactory superStatusBarViewFactory,
LightsOutNotifController lightsOutNotifController,
+ StatusBarNotificationActivityStarter.Builder
+ statusBarNotificationActivityStarterBuilder,
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
ViewMediatorCallback viewMediatorCallback,
DismissCallbackRegistry dismissCallbackRegistry,
@@ -235,7 +240,8 @@ public class CarStatusBarModule {
notificationListener,
configurationController,
statusBarWindowController,
- statusBarWindowViewControllerBuilder,
+ statusBarWindowViewController,
+ lockscreenLockIconController,
dozeParameters,
scrimController,
lockscreenWallpaperLazy,
@@ -252,6 +258,7 @@ public class CarStatusBarModule {
dividerOptional,
superStatusBarViewFactory,
lightsOutNotifController,
+ statusBarNotificationActivityStarterBuilder,
statusBarKeyguardViewManager,
viewMediatorCallback,
dismissCallbackRegistry,
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/SwitchToGuestTimer.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/SwitchToGuestTimer.java
deleted file mode 100644
index 0c91cba43390..000000000000
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/SwitchToGuestTimer.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.statusbar.car;
-
-import android.car.userlib.CarUserManagerHelper;
-import android.content.Context;
-import android.os.CountDownTimer;
-import android.util.Log;
-
-import androidx.annotation.GuardedBy;
-
-import com.android.systemui.R;
-
-/**
- * Wrapper for a countdown timer that switches to Guest if the user has been driving with
- * the keyguard up for configurable number of seconds.
- */
-public class SwitchToGuestTimer {
- private static final String TAG = "SwitchToGuestTimer";
-
- // After how many ms CountdownTimer.onTick gets triggered.
- private static final int COUNTDOWN_INTERVAL_MS = 1000;
-
- private final CarUserManagerHelper mCarUserManagerHelper;
- private final Object mTimerLock;
- private final String mGuestName;
- private final int mTimeoutMs;
- private final boolean mEnabled;
-
- @GuardedBy("mTimerLock")
- private CountDownTimer mSwitchToGuestTimer;
-
- public SwitchToGuestTimer(Context context) {
- mCarUserManagerHelper = new CarUserManagerHelper(context);
- mGuestName = context.getResources().getString(R.string.car_guest);
- mTimeoutMs = context.getResources().getInteger(R.integer.driving_on_keyguard_timeout_ms);
-
- // Lock prevents multiple timers being started.
- mTimerLock = new Object();
-
- // If milliseconds to switch is a negative number, the feature is disabled.
- mEnabled = mTimeoutMs >= 0;
- }
-
- /**
- * Starts the timer if it's not already running.
- */
- public void start() {
- if (!mEnabled) {
- logD("Switching to guest after driving on keyguard is disabled.");
- return;
- }
-
- synchronized (mTimerLock) {
- if (mSwitchToGuestTimer != null) {
- logD("Timer is already running.");
- return;
- }
-
- mSwitchToGuestTimer = new CountDownTimer(mTimeoutMs, COUNTDOWN_INTERVAL_MS) {
- @Override
- public void onTick(long msUntilFinished) {
- logD("Ms until switching to guest: " + Long.toString(msUntilFinished));
- }
-
- @Override
- public void onFinish() {
- mCarUserManagerHelper.startGuestSession(mGuestName);
- cancel();
- }
- };
-
- logI("Starting timer");
- mSwitchToGuestTimer.start();
- }
- }
-
- /**
- * Cancels the running timer.
- */
- public void cancel() {
- synchronized (mTimerLock) {
- if (mSwitchToGuestTimer != null) {
- logI("Cancelling timer");
- mSwitchToGuestTimer.cancel();
- mSwitchToGuestTimer = null;
- }
- }
- }
-
- private void logD(String message) {
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, message);
- }
- }
-
- private void logI(String message) {
- if (Log.isLoggable(TAG, Log.INFO)) {
- Log.i(TAG, message);
- }
- }
-}
diff --git a/packages/SettingsLib/HelpUtils/Android.bp b/packages/SettingsLib/HelpUtils/Android.bp
index af60185adc8b..285131d19725 100644
--- a/packages/SettingsLib/HelpUtils/Android.bp
+++ b/packages/SettingsLib/HelpUtils/Android.bp
@@ -4,6 +4,10 @@ android_library {
srcs: ["src/**/*.java"],
resource_dirs: ["res"],
+ libs: [
+ "androidx.annotation_annotation",
+ ],
+
sdk_version: "system_current",
min_sdk_version: "21",
}
diff --git a/packages/SettingsLib/HelpUtils/src/com/android/settingslib/HelpUtils.java b/packages/SettingsLib/HelpUtils/src/com/android/settingslib/HelpUtils.java
index 2d13b73d3d1f..a77683d7b8c2 100644
--- a/packages/SettingsLib/HelpUtils/src/com/android/settingslib/HelpUtils.java
+++ b/packages/SettingsLib/HelpUtils/src/com/android/settingslib/HelpUtils.java
@@ -33,6 +33,8 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
+import androidx.annotation.VisibleForTesting;
+
import com.android.settingslib.widget.R;
import java.net.URISyntaxException;
@@ -45,7 +47,8 @@ import java.util.Locale;
public class HelpUtils {
private final static String TAG = HelpUtils.class.getSimpleName();
- private static final int MENU_HELP = Menu.FIRST + 100;
+ @VisibleForTesting
+ static final int MENU_HELP = Menu.FIRST + 100;
/**
* Help URL query parameter key for the preferred language.
@@ -68,11 +71,16 @@ public class HelpUtils {
*/
private static String sCachedVersionCode = null;
- /** Static helper that is not instantiable*/
- private HelpUtils() { }
+ /** Static helper that is not instantiable */
+ private HelpUtils() {
+ }
public static boolean prepareHelpMenuItem(Activity activity, Menu menu, String helpUri,
String backupContext) {
+ // menu contains help item, skip it
+ if (menu.findItem(MENU_HELP) != null) {
+ return false;
+ }
MenuItem helpItem = menu.add(0, MENU_HELP, 0, R.string.help_feedback_label);
helpItem.setIcon(R.drawable.ic_help_actionbar);
return prepareHelpMenuItem(activity, helpItem, helpUri, backupContext);
@@ -80,6 +88,10 @@ public class HelpUtils {
public static boolean prepareHelpMenuItem(Activity activity, Menu menu, int helpUriResource,
String backupContext) {
+ // menu contains help item, skip it
+ if (menu.findItem(MENU_HELP) != null) {
+ return false;
+ }
MenuItem helpItem = menu.add(0, MENU_HELP, 0, R.string.help_feedback_label);
helpItem.setIcon(R.drawable.ic_help_actionbar);
return prepareHelpMenuItem(activity, helpItem, activity.getString(helpUriResource),
@@ -90,11 +102,12 @@ public class HelpUtils {
* Prepares the help menu item by doing the following.
* - If the helpUrlString is empty or null, the help menu item is made invisible.
* - Otherwise, this makes the help menu item visible and sets the intent for the help menu
- * item to view the URL.
+ * item to view the URL.
*
* @return returns whether the help menu item has been made visible.
*/
- public static boolean prepareHelpMenuItem(final Activity activity, MenuItem helpMenuItem,
+ @VisibleForTesting
+ static boolean prepareHelpMenuItem(final Activity activity, MenuItem helpMenuItem,
String helpUriString, String backupContext) {
if (Global.getInt(activity.getContentResolver(), Global.DEVICE_PROVISIONED, 0) == 0) {
return false;
@@ -117,10 +130,10 @@ public class HelpUtils {
/**
* TODO: Enable metrics logger for @SystemApi (b/111552654)
*
- MetricsLogger.action(activity,
- MetricsEvent.ACTION_SETTING_HELP_AND_FEEDBACK,
- intent.getStringExtra(EXTRA_CONTEXT));
- */
+ MetricsLogger.action(activity,
+ MetricsEvent.ACTION_SETTING_HELP_AND_FEEDBACK,
+ intent.getStringExtra(EXTRA_CONTEXT));
+ */
try {
activity.startActivityForResult(intent, 0);
} catch (ActivityNotFoundException exc) {
@@ -212,6 +225,7 @@ public class HelpUtils {
/**
* Adds two query parameters into the Uri, namely the language code and the version code
* of the app's package as gotten via the context.
+ *
* @return the uri with added query parameters
*/
private static Uri uriWithAddedParameters(Context context, Uri baseUri) {
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
index 97b2cb5733b2..3ff5cf490811 100644
--- a/packages/SettingsLib/res/values-af/strings.xml
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Middelmatig"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Vinnig"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Baie vinnig"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Verval"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Ontkoppel"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Ontkoppel tans…"</string>
diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml
index 62d5dca4541c..264d8de17872 100644
--- a/packages/SettingsLib/res/values-am/strings.xml
+++ b/packages/SettingsLib/res/values-am/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"መካከለኛ"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"ፈጣን"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"እጅግ በጣም ፈጣን"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"ጊዜው አልፏል"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"ተለያይቷል"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"በመለያየት ላይ..."</string>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index c786e0900199..c23023671c73 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"متوسطة"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"سريعة"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"سريعة جدًا"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"منتهية الصلاحية"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"غير متصل"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"جارٍ قطع الاتصال..."</string>
diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml
index 552fbb871f51..ab0ed2976508 100644
--- a/packages/SettingsLib/res/values-as/strings.xml
+++ b/packages/SettingsLib/res/values-as/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"মধ্যমীয়া"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"দ্ৰুত"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"অতি দ্ৰুত"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"ম্যাদ উকলিছে"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"সংযোগ বিচ্ছিন্ন কৰা হ’ল"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"সংযোগ বিচ্ছিন্ন কৰি থকা হৈছে…"</string>
diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml
index 3af2e2559969..fe62d3139b40 100644
--- a/packages/SettingsLib/res/values-az/strings.xml
+++ b/packages/SettingsLib/res/values-az/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Orta"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Sürətli"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Çox Sürətli"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Vaxtı keçib"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Ayrıldı"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Ayrılır..."</string>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
index 8a76242fd5f0..1619584883bd 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Srednja"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Brza"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Veoma brza"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Isteklo"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Veza je prekinuta"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Prekidanje veze..."</string>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index 5ed4495cd62f..0f2df493696a 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Сярэдняя"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Хуткая"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Вельмі хуткая"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Тэрмін скончыўся"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Адключана"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Адключэнне..."</string>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
index f7a715343ee9..a3be2812ee2e 100644
--- a/packages/SettingsLib/res/values-bg/strings.xml
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Средна"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Бърза"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Много бърза"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Изтекло"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Изкл."</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Изключва се..."</string>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index f4c677fe69ec..743de50fbb44 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"মাঝারি"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"দ্রুত"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"খুব দ্রুত"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"মেয়াদ শেষ হয়ে গেছে"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"ডিসকানেক্ট করা হয়েছে"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"ডিসকানেক্ট হচ্ছে..."</string>
diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml
index fc653b7b1ab5..75a4047bedab 100644
--- a/packages/SettingsLib/res/values-bs/strings.xml
+++ b/packages/SettingsLib/res/values-bs/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Srednja brzina"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Brzo"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Veoma brzo"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Istekao"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Isključen"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Prekidanje veze…"</string>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index f79375e5d765..8627cf30f707 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Mitjana"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Ràpida"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Molt ràpida"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Caducat"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Desconnectat"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"S\'està desconnectant..."</string>
diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml
index 64400a4958dc..6fef07a566f2 100644
--- a/packages/SettingsLib/res/values-cs/strings.xml
+++ b/packages/SettingsLib/res/values-cs/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Střední"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Rychlá"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Velmi rychlá"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Platnost vypršela"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Odpojeno"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Odpojování..."</string>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index de7a2289f083..80ee95e40a28 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Middel"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Hurtig"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Meget hurtig"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Udløbet"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> – <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Afbrudt"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Afbryder ..."</string>
diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml
index eafe9d0b500d..7dee120826bd 100644
--- a/packages/SettingsLib/res/values-el/strings.xml
+++ b/packages/SettingsLib/res/values-el/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Μέτρια"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Γρήγορη"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Πολύ γρήγορη"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Έληξε"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Αποσυνδέθηκε"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Αποσύνδεση..."</string>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index 840f5eede087..41c817e0f6db 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Media"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Rápida"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Muy rápida"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Vencido"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Desconectado"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Desconectando…"</string>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index c86eb34d94b2..897eaa3ffb7f 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Media"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Rápida"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Muy rápida"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Caducado"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Desconectado"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Desconectando…"</string>
diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml
index f59b96aabc02..9b94222a8fa5 100644
--- a/packages/SettingsLib/res/values-et/strings.xml
+++ b/packages/SettingsLib/res/values-et/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Keskmine"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Kiire"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Väga kiire"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Aegunud"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Ühendus katkestatud"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Ühenduse katkestamine ..."</string>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index 9648139c9136..b0e4b2623a8c 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Tartekoa"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Bizkorra"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Oso bizkorra"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Iraungita"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Deskonektatuta"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Deskonektatzen…"</string>
@@ -455,7 +454,7 @@
<string name="cancel" msgid="5665114069455378395">"Utzi"</string>
<string name="okay" msgid="949938843324579502">"Ados"</string>
<string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Aktibatu"</string>
- <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Aktibatu \"Ez molestatu\" modua"</string>
+ <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Aktibatu ez molestatzeko modua"</string>
<string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Inoiz ez"</string>
<string name="zen_interruption_level_priority" msgid="5392140786447823299">"Lehentasuna dutenak soilik"</string>
<string name="zen_mode_and_condition" msgid="8877086090066332516">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>. <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index 3e8de9795e95..7298826f2614 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"متوسط"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"سریع"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"خیلی سریع"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"منقضی‌شده"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"اتصال قطع شد"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"در حال قطع اتصال..."</string>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index 68ddf7df9639..6f58f0352a0a 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Kohtuullinen"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Nopea"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Hyvin nopea"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Vanhentunut"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Yhteys katkaistu"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Katkaistaan yhteyttä..."</string>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index ef4800cda193..a5526f3a41b7 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Moyenne"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Élevée"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Très rapide"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Expiré"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> : <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Déconnecté"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Déconnexion…"</string>
diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml
index 256ea03ac55a..eaab027a5659 100644
--- a/packages/SettingsLib/res/values-gl/strings.xml
+++ b/packages/SettingsLib/res/values-gl/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Media"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Rápida"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Moi rápida"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Caducou"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Desconectado"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Desconectando..."</string>
diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml
index ed50f4b2a8cb..00fd024c1323 100644
--- a/packages/SettingsLib/res/values-gu/strings.xml
+++ b/packages/SettingsLib/res/values-gu/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"મધ્યમ"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"ઝડપી"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"ખૂબ ઝડપી"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"સમય સમાપ્ત થયો"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"ડિસ્કનેક્ટ કર્યું"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"ડિસ્કનેક્ટ થઈ રહ્યું છે..."</string>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index 550eaf82d60f..96aec94808e3 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"मध्यम"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"तेज़"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"अत्‍यधिक तेज़"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"समयसीमा खत्म हो गई"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"डिसकनेक्ट किया गया"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"डिस्‍कनेक्‍ट हो रहा है..."</string>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index 18ea1de4e92b..6df46ca407c0 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Srednje"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Brzo"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Vrlo brzo"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Isteklo"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Niste povezani"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Isključivanje…"</string>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index 7baa0442d9da..6b5b05e6f00d 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Közepes"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Gyors"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Nagyon gyors"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Lejárt"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Szétkapcsolva"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Szétkapcsolás..."</string>
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index a5b03eafb965..c4002b9a1446 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Միջին"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Արագ"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Շատ արագ"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Սպառվել է"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Անջատված է"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Անջատվում է..."</string>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index dea51a889520..753f225491db 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Sedang"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Cepat"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Sangat Cepat"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Sudah tidak berlaku"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Sambungan terputus"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Memutus sambungan..."</string>
diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml
index 0a85d06e7ad2..b1d40bfbe923 100644
--- a/packages/SettingsLib/res/values-is/strings.xml
+++ b/packages/SettingsLib/res/values-is/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Miðlungshratt"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Hratt"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Mjög hratt"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Útrunninn"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Aftengt"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Aftengist…"</string>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index 980bdf9446b6..7f2bd3e9198b 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Media"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Veloce"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Molto veloce"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Scaduto"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Disconnesso"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Disconnessione..."</string>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index 77fd156e6698..bdd1babefa32 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"בינונית"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"מהירה"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"מהירה מאוד"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"התוקף פג"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"מנותק"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"מתנתק..."</string>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index 1d6b3d596c36..a6192a458ca8 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"普通"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"速い"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"非常に速い"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"期限切れ"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"切断"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"切断中..."</string>
diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml
index a69713a7a955..a3633f64a9f8 100644
--- a/packages/SettingsLib/res/values-ka/strings.xml
+++ b/packages/SettingsLib/res/values-ka/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"საშუალო"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"სწრაფი"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"ძალიან სწრაფი"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"ვადაგასულია"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"კავშირი გაწყვეტილია"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"მიმდინარეობს გათიშვა…"</string>
diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml
index 380d648e24ab..0962e55e2dda 100644
--- a/packages/SettingsLib/res/values-kk/strings.xml
+++ b/packages/SettingsLib/res/values-kk/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Орташа"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Жылдам"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Өте жылдам"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Мерзімі өтті."</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Ажыратылған"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Ажыратылуда…"</string>
diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml
index 478e036204eb..45620e831f9c 100644
--- a/packages/SettingsLib/res/values-km/strings.xml
+++ b/packages/SettingsLib/res/values-km/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"មធ្យម"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"លឿន"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"លឿន​ណាស់"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"ផុតកំណត់"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"បាន​ផ្ដាច់"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"កំពុង​ផ្ដាច់…"</string>
diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml
index 73aa99851c5e..1fc2e4a91081 100644
--- a/packages/SettingsLib/res/values-kn/strings.xml
+++ b/packages/SettingsLib/res/values-kn/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"ಮಧ್ಯಮ"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"ವೇಗ"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"ತುಂಬಾ ವೇಗವಾಗಿದೆ"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"ಅವಧಿ ಮುಕ್ತಾಯವಾಗಿದೆ"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗುತ್ತಿದೆ..."</string>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index 3ecde32aaa36..8e7c6977245f 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"보통"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"빠름"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"매우 빠름"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"만료됨"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"연결 끊김"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"연결을 끊는 중…"</string>
diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml
index ca8992f63f0b..18a1468f2d75 100644
--- a/packages/SettingsLib/res/values-ky/strings.xml
+++ b/packages/SettingsLib/res/values-ky/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Орто"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Ылдам"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Абдан ылдам"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Мөөнөтү бүткөн"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Ажыратылган"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Ажыратылууда…"</string>
diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml
index b8a93229af06..808d5a796a48 100644
--- a/packages/SettingsLib/res/values-lo/strings.xml
+++ b/packages/SettingsLib/res/values-lo/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"ປານກາງ"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"ໄວ"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"ໄວຫຼາຍ"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"ໝົດອາຍຸແລ້ວ"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"ຕັດການເຊື່ອມຕໍ່ແລ້ວ"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"ກຳລັງຢຸດການເຊື່ອມຕໍ່..."</string>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
index 3d6dfbb4aaa7..78d1b1bf0c5c 100644
--- a/packages/SettingsLib/res/values-lt/strings.xml
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Vidutinis"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Greitas"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Labai greitas"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Baigėsi galiojimo laikas"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Atsijungęs (-usi)"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Atjungiama..."</string>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index bf0c97d6d3d5..0ae10aa6c43c 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Vidējs"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Ātrs"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Ļoti ātrs"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Beidzies derīguma termiņš"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Atvienots"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Notiek atvienošana..."</string>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index 53b0d4c35090..9850ac5b4ed9 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Средна"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Брза"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Многу брза"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Истечено"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Исклучено"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Се исклучува..."</string>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index 66ff005ee286..2692a30a85d2 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"ഇടത്തരം"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"വേഗത്തിൽ"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"വളരെ വേഗത്തിൽ"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"കാലഹരണപ്പെട്ടത്"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"വിച്ഛേദിച്ചു"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"വിച്‌ഛേദിക്കുന്നു..."</string>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index 75633ab01803..966cdffe729b 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"मध्‍यम"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"जलद"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"खूप जलद"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"मुदत संपली"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"डिस्कनेक्ट केले"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"डिस्कनेक्ट करत आहे..."</string>
diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml
index fad37fe13d06..88d7c7d6fd6f 100644
--- a/packages/SettingsLib/res/values-ms/strings.xml
+++ b/packages/SettingsLib/res/values-ms/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Sederhana"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Laju"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Sangat Laju"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Tamat tempoh"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Diputuskan sambungan"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Memutuskan sambungan..."</string>
diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml
index fd626f6c1536..6dfd2909efd5 100644
--- a/packages/SettingsLib/res/values-my/strings.xml
+++ b/packages/SettingsLib/res/values-my/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"အတော်အသင့်"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"မြန်"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"အလွန်မြန်"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"သက်တမ်းကုန်သွားပါပြီ"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"ချိတ်ဆက်မှုပြတ်တောက်သည်"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"အဆက်အသွယ်ဖြတ်တောက်သည်"</string>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
index baf3c64b5c28..760c409c0048 100644
--- a/packages/SettingsLib/res/values-nb/strings.xml
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Middels"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Rask"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Veldig rask"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Utløpt"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Frakoblet"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Kobler fra…"</string>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index 00a30220acdb..77f87ffc4ea8 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"मध्यम"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"छिटो"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"धेरै छिटो"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"म्याद सकियो"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"विच्छेदन गरियो"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"जडान हटाइँदै ..."</string>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
index 533b0f23c28f..55f56d98483b 100644
--- a/packages/SettingsLib/res/values-nl/strings.xml
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Gemiddeld"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Snel"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Zeer snel"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Verlopen"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Verbinding verbroken"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Verbinding verbreken..."</string>
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index 4a2ab808fc7e..98c302db0c7d 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"ମଧ୍ୟମ"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"ଦ୍ରୁତ"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"ଅତି ଦ୍ରୁତ"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"ମିଆଦ ଶେଷ ହୋଇଯାଇଛି"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"ବିଛିନ୍ନ ହେଲା"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"ବିଚ୍ଛିନ୍ନ କରୁଛି…"</string>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 62da49b0bc4d..525ad2e9a8fb 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"ਔਸਤ"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"ਤੇਜ਼"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"ਬਹੁਤ ਤੇਜ਼"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"ਮਿਆਦ ਮੁੱਕ ਗਈ"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"ਡਿਸਕਨੈਕਟ ਕੀਤਾ"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"ਡਿਸਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ..."</string>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index 027afc31d28a..69ebc595f9b6 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Średnia"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Szybka"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Bardzo szybka"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Ważność wygasła"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Rozłączona"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Rozłączanie..."</string>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
index 9259c035985b..62017f103241 100644
--- a/packages/SettingsLib/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Média"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Rápida"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Muito rápida"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Expirado"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Desconectado"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Desconectando…"</string>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index 0961b27d5512..8304768462f6 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Média"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Rápida"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Muito rápida"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Expirado"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Desligado"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"A desligar..."</string>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
index 9259c035985b..62017f103241 100644
--- a/packages/SettingsLib/res/values-pt/strings.xml
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Média"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Rápida"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Muito rápida"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Expirado"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Desconectado"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Desconectando…"</string>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
index 1fc1d35a5b71..50ea4a00e5cd 100644
--- a/packages/SettingsLib/res/values-ro/strings.xml
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Medie"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Rapidă"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Foarte rapidă"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Expirat"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Deconectat"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"În curs de deconectare..."</string>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index c3baea2dc665..0582a0cde4f7 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Средняя"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Быстрая"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Очень быстрая"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Срок действия истек"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Нет подключения"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Отключение..."</string>
diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml
index f8d2d08abea1..43a49781eeca 100644
--- a/packages/SettingsLib/res/values-si/strings.xml
+++ b/packages/SettingsLib/res/values-si/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"මධ්‍යම"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"වේගවත්"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"ඉතා වේගවත්"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"කල් ඉකුත් විය"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"විසන්ධි වුණි"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"විසන්ධි වෙමින්…"</string>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index 0d576b4d5456..3a3958f3a441 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Stredná"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Vysoká"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Veľmi vysoká"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Platnosť vypršala"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Odpojený"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Prebieha odpájanie..."</string>
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
index 7c62d52e816b..068f2214659c 100644
--- a/packages/SettingsLib/res/values-sl/strings.xml
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Srednje hitra"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Hitra"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Zelo hitra"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Poteklo"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Prekinjena povezava"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Prekinjanje povezave ..."</string>
diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml
index 7a1bdb55084b..54d463775535 100644
--- a/packages/SettingsLib/res/values-sq/strings.xml
+++ b/packages/SettingsLib/res/values-sq/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Mesatare"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"E shpejtë"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Shumë e shpejtë"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Skaduar"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Shkëputur"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Po shkëputet..."</string>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
index e809ab9a9091..ab081ae21a9b 100644
--- a/packages/SettingsLib/res/values-sr/strings.xml
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Средња"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Брза"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Веома брза"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Истекло"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Веза је прекинута"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Прекидање везе..."</string>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index 52a82dbfae02..cab971f8ae1e 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Medelsnabb"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Snabb"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Mycket snabb"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Har upphört att gälla"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Kopplas ifrån"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Kopplar ifrån…"</string>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index c83388a083f9..df71b826f4b9 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Wastani"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Haraka"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Haraka Sana"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Muda umeisha"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Haijaunganishwa"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Inatenganisha..."</string>
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index 856fd4f6eafb..084ec16ec05b 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"நடுத்தரம்"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"வேகம்"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"மிகவும் வேகமானது"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"காலாவதியாகிவிட்டது"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"தொடர்பு துண்டிக்கப்பட்டது"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"துண்டிக்கிறது..."</string>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index cc172473b3b2..cbcaf1a8ddfc 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"మధ్యస్థం"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"వేగవంతం"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"చాలా వేగవంతం"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"గడువు ముగిసింది"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"డిస్‌కనెక్ట్ చేయబడింది"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"డిస్‌కనెక్ట్ చేస్తోంది..."</string>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index 4feb0d6862e8..fa8caa17b824 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"ปานกลาง"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"เร็ว"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"เร็วมาก"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"หมดอายุแล้ว"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"ตัดการเชื่อมต่อ"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"กำลังตัดการเชื่อมต่อ..."</string>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
index e6963b96f851..21fe58c2db28 100644
--- a/packages/SettingsLib/res/values-tl/strings.xml
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Katamtaman"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Mabilis"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Napakabilis"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Nag-expire na"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Hindi nakakonekta"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Nadidiskonekta..."</string>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
index bd457d3ef9e2..4e7f38dca25b 100644
--- a/packages/SettingsLib/res/values-tr/strings.xml
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Orta"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Hızlı"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Çok Hızlı"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Süresi sona erdi"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Bağlantı kesildi"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Bağlantı kesiliyor…"</string>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index 36a82ea1e92f..98074173f5c9 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Середня"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Швидка"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Дуже швидка"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Термін дії минув"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>: <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Роз’єднано"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Відключення..."</string>
diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml
index 50dc72e2218e..e17b0b05838f 100644
--- a/packages/SettingsLib/res/values-ur/strings.xml
+++ b/packages/SettingsLib/res/values-ur/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"متوسط"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"تیز"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"بہت تیز"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"میعاد ختم ہو گئی"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"منقطع"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"منقطع کیا جارہا ہے…"</string>
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index 38edb6d0dcdb..ea51eba747a3 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"O‘rtacha"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Tez"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Juda tez"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Muddati tugagan"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Uzildi"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Uzilyapti…"</string>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index e0798aa54d14..0b71a8c6243a 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Trung bình"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Nhanh"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Rất nhanh"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Đã hết hạn"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Đã ngắt kết nối"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Đang ngắt kết nối…"</string>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index 4303615591b9..1805694c3b1f 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"适中"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"快"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"很快"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"已失效"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"已断开连接"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"正在断开连接..."</string>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
index f3b8653cf4e9..1d217b500cc9 100644
--- a/packages/SettingsLib/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"適中"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"快"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"非常快"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"已過期"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"已中斷連線"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"正在中斷連線..."</string>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index 53b54c4092b6..ee6866505bdb 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"適中"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"快"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"非常快"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"已失效"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"已中斷連線"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"正在中斷連線…"</string>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
index 249e73ccfa0d..820aa772e7e6 100644
--- a/packages/SettingsLib/res/values-zu/strings.xml
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -61,8 +61,7 @@
<string name="speed_label_medium" msgid="9078405312828606976">"Okumaphakathi"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"Sheshayo"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"Kushesha kakhulu"</string>
- <!-- no translation found for wifi_passpoint_expired (6540867261754427561) -->
- <skip />
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Iphelelwe isikhathi"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
<string name="bluetooth_disconnected" msgid="7739366554710388701">"Ayixhunyiwe"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"Inqamula uxhumano kwi-inthanethi..."</string>
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index a1ef831523b1..80240affc1c1 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -609,6 +609,9 @@
<string name="bluetooth_select_a2dp_codec_sample_rate">Bluetooth Audio Sample Rate</string>
<!-- UI debug setting: Trigger Bluetooth Audio Codec Selection: Sample Rate -->
<string name="bluetooth_select_a2dp_codec_sample_rate_dialog_title">Trigger Bluetooth Audio Codec\u000ASelection: Sample Rate</string>
+ <!-- UI debug setting: Label for unsupported Bluetooth Audio Codec. [CHAR LIMIT=none] -->
+ <string name="bluetooth_select_a2dp_codec_type_help_info">Gray-out means not supported by phone
+ or headset</string>
<!-- UI debug setting: Trigger Bluetooth Audio Bits Per Sample Selection -->
<string name="bluetooth_select_a2dp_codec_bits_per_sample">Bluetooth Audio Bits Per Sample</string>
diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java
index a5f403690dab..4c3e605e3a94 100644
--- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java
+++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java
@@ -44,7 +44,7 @@ public abstract class AbstractImsStatusPreferenceController
private static final String[] CONNECTIVITY_INTENTS = {
BluetoothAdapter.ACTION_STATE_CHANGED,
ConnectivityManager.CONNECTIVITY_ACTION,
- WifiManager.LINK_CONFIGURATION_CHANGED_ACTION,
+ WifiManager.ACTION_LINK_CONFIGURATION_CHANGED,
WifiManager.NETWORK_STATE_CHANGED_ACTION,
};
diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractIpAddressPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractIpAddressPreferenceController.java
index 24da72ea611a..3bb3a0c412a5 100644
--- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractIpAddressPreferenceController.java
+++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractIpAddressPreferenceController.java
@@ -42,7 +42,7 @@ public abstract class AbstractIpAddressPreferenceController
private static final String[] CONNECTIVITY_INTENTS = {
ConnectivityManager.CONNECTIVITY_ACTION,
- WifiManager.LINK_CONFIGURATION_CHANGED_ACTION,
+ WifiManager.ACTION_LINK_CONFIGURATION_CHANGED,
WifiManager.NETWORK_STATE_CHANGED_ACTION,
};
diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java
index 097c028714a1..b5f275b463f4 100644
--- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java
+++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java
@@ -44,7 +44,7 @@ public abstract class AbstractWifiMacAddressPreferenceController
private static final String[] CONNECTIVITY_INTENTS = {
ConnectivityManager.CONNECTIVITY_ACTION,
- WifiManager.LINK_CONFIGURATION_CHANGED_ACTION,
+ WifiManager.ACTION_LINK_CONFIGURATION_CHANGED,
WifiManager.NETWORK_STATE_CHANGED_ACTION,
};
diff --git a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java
index ea3c1d95925c..092cbf3c7c12 100644
--- a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java
+++ b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java
@@ -222,7 +222,8 @@ public class DataUsageController {
}
}
- return TelephonyManager.from(mContext).createForSubscriptionId(subscriptionId);
+ return mContext.getSystemService(
+ TelephonyManager.class).createForSubscriptionId(subscriptionId);
}
public void setMobileDataEnabled(boolean enabled) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
index ab274b5ba6c7..9518f5c4ab8d 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
@@ -748,20 +748,7 @@ public class AccessPoint implements Comparable<AccessPoint> {
|| (mConfig != null && mConfig.shared != config.shared)) {
return false;
}
-
- final int configSecurity = getSecurity(config);
- final WifiManager wifiManager = getWifiManager();
- switch (security) {
- case SECURITY_PSK_SAE_TRANSITION:
- return configSecurity == SECURITY_PSK
- || (wifiManager.isWpa3SaeSupported() && configSecurity == SECURITY_SAE);
- case SECURITY_OWE_TRANSITION:
- return configSecurity == SECURITY_NONE
- || (wifiManager.isEnhancedOpenSupported()
- && configSecurity == SECURITY_OWE);
- default:
- return security == configSecurity;
- }
+ return security == getSecurity(config);
}
public WifiConfiguration getConfig() {
@@ -1334,34 +1321,10 @@ public class AccessPoint implements Comparable<AccessPoint> {
mAccessPointListener = listener;
}
- private static final String sPskSuffix = "," + String.valueOf(SECURITY_PSK);
- private static final String sSaeSuffix = "," + String.valueOf(SECURITY_SAE);
- private static final String sPskSaeSuffix = "," + String.valueOf(SECURITY_PSK_SAE_TRANSITION);
- private static final String sOweSuffix = "," + String.valueOf(SECURITY_OWE);
- private static final String sOpenSuffix = "," + String.valueOf(SECURITY_NONE);
- private static final String sOweTransSuffix = "," + String.valueOf(SECURITY_OWE_TRANSITION);
-
private boolean isKeyEqual(String compareTo) {
if (mKey == null) {
return false;
}
-
- if (compareTo.endsWith(sPskSuffix) || compareTo.endsWith(sSaeSuffix)) {
- if (mKey.endsWith(sPskSaeSuffix)) {
- // Special handling for PSK-SAE transition mode. If the AP has advertised both,
- // we compare the key with both PSK and SAE for a match.
- return TextUtils.equals(mKey.substring(0, mKey.lastIndexOf(',')),
- compareTo.substring(0, compareTo.lastIndexOf(',')));
- }
- }
- if (compareTo.endsWith(sOpenSuffix) || compareTo.endsWith(sOweSuffix)) {
- if (mKey.endsWith(sOweTransSuffix)) {
- // Special handling for OWE/Open networks. If AP advertises OWE in transition mode
- // and we have an Open network saved, allow this connection to be established.
- return TextUtils.equals(mKey.substring(0, mKey.lastIndexOf(',')),
- compareTo.substring(0, compareTo.lastIndexOf(',')));
- }
- }
return mKey.equals(compareTo);
}
@@ -1698,8 +1661,6 @@ public class AccessPoint implements Comparable<AccessPoint> {
private static int getSecurity(ScanResult result) {
if (result.capabilities.contains("WEP")) {
return SECURITY_WEP;
- } else if (result.capabilities.contains("PSK+SAE")) {
- return SECURITY_PSK_SAE_TRANSITION;
} else if (result.capabilities.contains("SAE")) {
return SECURITY_SAE;
} else if (result.capabilities.contains("PSK")) {
@@ -1708,8 +1669,6 @@ public class AccessPoint implements Comparable<AccessPoint> {
return SECURITY_EAP_SUITE_B;
} else if (result.capabilities.contains("EAP")) {
return SECURITY_EAP;
- } else if (result.capabilities.contains("OWE_TRANSITION")) {
- return SECURITY_OWE_TRANSITION;
} else if (result.capabilities.contains("OWE")) {
return SECURITY_OWE;
}
@@ -1756,10 +1715,6 @@ public class AccessPoint implements Comparable<AccessPoint> {
return "SUITE_B";
} else if (security == SECURITY_OWE) {
return "OWE";
- } else if (security == SECURITY_PSK_SAE_TRANSITION) {
- return "PSK+SAE";
- } else if (security == SECURITY_OWE_TRANSITION) {
- return "OWE_TRANSITION";
}
return "NONE";
}
@@ -1937,4 +1892,16 @@ public class AccessPoint implements Comparable<AccessPoint> {
}
}
}
+
+ /**
+ * Lets the caller know if the network was cloned from another network
+ *
+ * @return true if the network is cloned
+ */
+ public boolean isCloned() {
+ if (mConfig == null) {
+ return false;
+ }
+ return mConfig.clonedNetworkConfigKey != null;
+ }
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
index d3bab5f41f39..97fddc0e3e79 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
@@ -180,7 +180,7 @@ public class WifiTracker implements LifecycleObserver, OnStart, OnStop, OnDestro
filter.addAction(WifiManager.NETWORK_IDS_CHANGED_ACTION);
filter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION);
- filter.addAction(WifiManager.LINK_CONFIGURATION_CHANGED_ACTION);
+ filter.addAction(WifiManager.ACTION_LINK_CONFIGURATION_CHANGED);
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.RSSI_CHANGED_ACTION);
@@ -866,7 +866,7 @@ public class WifiTracker implements LifecycleObserver, OnStart, OnStop, OnDestro
fetchScansAndConfigsAndUpdateAccessPoints();
} else if (WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION.equals(action)
- || WifiManager.LINK_CONFIGURATION_CHANGED_ACTION.equals(action)) {
+ || WifiManager.ACTION_LINK_CONFIGURATION_CHANGED.equals(action)) {
fetchScansAndConfigsAndUpdateAccessPoints();
} else if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
// TODO(sghuman): Refactor these methods so they cannot result in duplicate
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java
index 7fac81211dc1..942ee4f7404c 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java
@@ -902,7 +902,7 @@ public class WifiTrackerTest {
tracker.mReceiver.onReceive(
mContext, new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION));
tracker.mReceiver.onReceive(
- mContext, new Intent(WifiManager.LINK_CONFIGURATION_CHANGED_ACTION));
+ mContext, new Intent(WifiManager.ACTION_LINK_CONFIGURATION_CHANGED));
verify(mockWifiListener, never()).onAccessPointsChanged();
@@ -920,7 +920,7 @@ public class WifiTrackerTest {
tracker.mReceiver.onReceive(
mContext, new Intent(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION));
tracker.mReceiver.onReceive(
- mContext, new Intent(WifiManager.LINK_CONFIGURATION_CHANGED_ACTION));
+ mContext, new Intent(WifiManager.ACTION_LINK_CONFIGURATION_CHANGED));
verify(mockWifiListener, never()).onAccessPointsChanged();
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/HelpUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/HelpUtilsTest.java
index 4d76331d8da7..4811d9507c8d 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/HelpUtilsTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/HelpUtilsTest.java
@@ -16,11 +16,15 @@
package com.android.settingslib;
+import static com.android.settingslib.HelpUtils.MENU_HELP;
+
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -35,6 +39,7 @@ import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.provider.Settings;
+import android.view.Menu;
import android.view.MenuItem;
import org.junit.Before;
@@ -171,4 +176,34 @@ public class HelpUtilsTest {
verify(item).setVisible(true);
verify(item).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
+
+ @Test
+ public void prepareHelpMenuItem_noItem_addItem() {
+ final Menu item = mock(Menu.class);
+ when(item.findItem(MENU_HELP)).thenReturn(null);
+ when(item.add(0, MENU_HELP, 0,
+ com.android.settingslib.widget.R.string.help_feedback_label)).thenReturn(
+ mock(MenuItem.class));
+
+ HelpUtils.prepareHelpMenuItem(mActivity, item, TEST_HELP_URL, "backup_url");
+ HelpUtils.prepareHelpMenuItem(mActivity, item, 0, "backup_url");
+
+ verify(item, times(2)).add(0, MENU_HELP, 0,
+ com.android.settingslib.widget.R.string.help_feedback_label);
+ }
+
+ @Test
+ public void prepareHelpMenuItem_hasItem_notAddItem() {
+ final Menu item = mock(Menu.class);
+ when(item.findItem(MENU_HELP)).thenReturn(mock(MenuItem.class));
+ when(item.add(0, MENU_HELP, 0,
+ com.android.settingslib.widget.R.string.help_feedback_label)).thenReturn(
+ mock(MenuItem.class));
+
+ HelpUtils.prepareHelpMenuItem(mActivity, item, TEST_HELP_URL, "backup_url");
+ HelpUtils.prepareHelpMenuItem(mActivity, item, 0, "backup_url");
+
+ verify(item, never()).add(0, MENU_HELP, 0,
+ com.android.settingslib.widget.R.string.help_feedback_label);
+ }
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/IpAddressPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/IpAddressPreferenceControllerTest.java
index 76a26d917969..a83d7e099e51 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/IpAddressPreferenceControllerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/IpAddressPreferenceControllerTest.java
@@ -63,7 +63,7 @@ public class IpAddressPreferenceControllerTest {
new ConcreteIpAddressPreferenceController(mContext, mLifecycle);
final List<String> expectedIntents = Arrays.asList(
ConnectivityManager.CONNECTIVITY_ACTION,
- WifiManager.LINK_CONFIGURATION_CHANGED_ACTION,
+ WifiManager.ACTION_LINK_CONFIGURATION_CHANGED,
WifiManager.NETWORK_STATE_CHANGED_ACTION);
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java
index 7c2f0a8aaa71..40b9b13ef55f 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java
@@ -84,7 +84,7 @@ public class WifiMacAddressPreferenceControllerTest {
public void testHasIntentFilters() {
final List<String> expectedIntents = Arrays.asList(
ConnectivityManager.CONNECTIVITY_ACTION,
- WifiManager.LINK_CONFIGURATION_CHANGED_ACTION,
+ WifiManager.ACTION_LINK_CONFIGURATION_CHANGED,
WifiManager.NETWORK_STATE_CHANGED_ACTION);
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java
index 3da5e766c389..f7bee30a087f 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java
@@ -75,7 +75,7 @@ public class DataUsageControllerTest {
public void setUp() throws RemoteException {
MockitoAnnotations.initMocks(this);
when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager);
- when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
+ when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
when(mContext.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE))
.thenReturn(mSubscriptionManager);
when(mContext.getSystemService(NetworkStatsManager.class)).thenReturn(mNetworkStatsManager);
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index cd64a3880803..ab433d26cb3d 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -232,9 +232,6 @@
<!-- to read and change hvac values in a car -->
<uses-permission android:name="android.car.permission.CONTROL_CAR_CLIMATE" />
- <!-- to be able to detect the driving state in a car-->
- <uses-permission android:name="android.car.permission.CAR_DRIVING_STATE" />
-
<!-- Permission necessary to change car audio volume through CarAudioManager -->
<uses-permission android:name="android.car.permission.CAR_CONTROL_AUDIO_VOLUME" />
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 66a8aded496b..ed8117c6d96f 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Hou aan om kennisgewings van hierdie program af te wys?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Stil"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Waarskuwings"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Borrel"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Help jou om te fokus sonder klank of vibrasie."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Kry jou aandag met klank of vibrasie."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Hou jou aandag met \'n swewende kortpad na hierdie inhoud toe."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Hierdie kennisgewings kan nie gewysig word nie."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Hierdie groep kennisgewings kan nie hier opgestel word nie"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Instaanbediener-kennisgewing"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Maak toe"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Stelselnavigasie is opgedateer. Gaan na Instellings toe om veranderinge te maak."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Gaan na Instellings toe om stelselnavigasie op te dateer"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Bystandmodus"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Die Android TV-toestel gaan binnekort afskakel; druk \'n knoppie om dit aan te hou."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Die toestel gaan binnekort afskakel; druk om dit aan te hou."</string>
</resources>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 3f02c95f38fa..025031faba14 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"ከዚህ መተግበሪያ ማሳወቂያዎችን ማሳየት ይቀጥል?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"ፀጥ ያለ"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"ማንቃት"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"አረፋ"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"ያለ ድምፅ ወይም ንዝረት እርስዎ ትኩረት እንዲያደርጉ ያግዛል።"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"ከድምፅ ወይም ንዝረት ጋር የእርስዎን ትኩረት ይስባል።"</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"ለዚህ ይዞታ ከተንሳፋፊ አቋራጭ ጋር የእርስዎን ትኩረት ያቆያል።"</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"እነዚህ ማሳወቂያዎች ሊሻሻሉ አይችሉም።"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"የማሳወቂያዎች ይህ ቡድን እዚህ ላይ ሊዋቀር አይችልም"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"ተኪ ማሳወቂያ"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"አሰናብት"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"የስርዓት ዳሰሳ ተዘምኗል። ለውጦችን ለማድረግ ወደ ቅንብሮች ይሂዱ።"</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"የስርዓት ዳሰሳን ለማዘመን ወደ ቅንብሮች ይሂዱ"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"ተጠባባቂ"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"የAndroid TV መሣሪያው በቅርቡ ይጠፋል፣ እንደበራ ለማቆየት ይጫኑ።"</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"መሣሪያው በቅርቡ ይጠፋል፤ እንደበራ ለማቆየት ይጫኑ።"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 8c765ac61c0f..767343bad4e0 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -673,8 +673,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"هل تريد الاستمرار في تلقي إشعارات من هذا التطبيق؟"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"إشعار صامت"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"إشعار مصحوب بتنبيه صوتي"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"يساعدك هذا الإشعار على التركيز بدون صوت أو اهتزاز."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"يلفت هذا الإشعار انتباهك باستخدام الصوت والاهتزاز."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"يتعذّر تعديل هذه الإشعارات."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"يتعذّر ضبط مجموعة الإشعارات هذه هنا."</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"إشعار مستند إلى خادم وكيل"</string>
@@ -966,4 +970,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"تجاهل"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"تم تحديث التنقل داخل النظام. لإجراء التغييرات، يُرجى الانتقال إلى \"الإعدادات\"."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"الانتقال إلى \"الإعدادات\" لتعديل التنقل داخل النظام"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"وضع الاستعداد"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"‏سيتم إيقاف جهاز Android TV قريبًا، اضغط على أحد الأزرار لمواصلة تشغيله."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"سيتم إيقاف الجهاز قريبًا، اضغط لمواصلة تشغيله."</string>
</resources>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 87be3eb0b4cd..3197d4fee4c9 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"এই এপটোৰ জাননী দেখুওৱাই থাকিব লাগিবনে?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"নীৰৱ"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"সতৰ্ক কৰক"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"কোনো ধ্বনি অথবা কম্পন অবিহনে আপোনাক মনোযোগ দিয়াত সহায় কৰে।"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"ধ্বনি অথবা কম্পনৰ জৰিয়তে আপোনাৰ মনোযোগ আকৰ্ষণ কৰে।"</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"এই জাননীসমূহ সংশোধন কৰিব নোৱাৰি।"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"এই ধৰণৰ জাননীবোৰ ইয়াত কনফিগাৰ কৰিব পৰা নাযায়"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"প্ৰক্সি হিচাপে পঠিওৱা জাননী"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"অগ্ৰাহ্য কৰক"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"ছিষ্টেম নেভিগেশ্বন আপডে’ট কৰা হ’ল। সলনি কৰিবলৈ ছেটিংসমূহ-লৈ যাওক।"</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"ছিষ্টেম নেভিগেশ্বন আপডে’ট কৰিবলৈ ছেটিংসমূহ-লৈ যাওক"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"ষ্টেণ্ডবাই"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV ডিভাইচটো অতি সোনকালে অফ হ\'ব, এইটো অন ৰাখিবলৈ যিকোনো এটা বুটাম টিপক।"</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"এই ডিভাইচটো অতি সোনকালে অফ হ\'ব, এইটো অন ৰাখিবলৈ টিপক।"</string>
</resources>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index a756ac080033..6ad64bebb9da 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Bu tətbiqin bildirişləri göstərilməyə davam edilsin?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Səssiz"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Siqnal"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Səs və ya vibrasiya olmadan fokuslanmağınıza kömək edir."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Səs və ya vibrasiya ilə diqqətinizi çəkir."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Bu bildirişlər dəyişdirilə bilməz."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Bu bildiriş qrupunu burada konfiqurasiya etmək olmaz"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Proksi bildirişi"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Kənarlaşdırın"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Sistem naviqasiyası yeniləndi. Dəyişiklik etmək üçün Ayarlara daxil olun."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Sistem naviqasiyasını yeniləmək üçün Ayarlara keçin"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Gözləmə rejimi"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV cihazı tezliklə sönəcək; aktiv saxlamaq üçün düyməyə basın."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Cihaz tezliklə sönəcək; aktiv saxlamaq üçün basın."</string>
</resources>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index a3232e1a36f1..1bc7121aaeca 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -664,8 +664,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Želite li da se obaveštenja iz ove aplikacije i dalje prikazuju?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Nečujno"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Upozoravanje"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Oblačić"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Pomaže vam da se koncentrišete bez zvuka ili vibracije."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Privlači vam pažnju pomoću zvuka ili vibracije."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Privlači vam pažnju pomoću plutajuće prečice do ovog sadržaja."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Ova obaveštenja ne mogu da se menjaju."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Ova grupa obaveštenja ne može da se konfiguriše ovde"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Obaveštenje preko proksija"</string>
@@ -951,4 +953,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Odbaci"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Navigacija sistema je ažurirana. Da biste uneli izmene, idite u Podešavanja."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Idite u Podešavanja da biste ažurirali navigaciju sistema"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Stanje pripravnosti"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV će se uskoro isključiti. Pritisnite dugme da bi ostao uključen."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Uređaj će se uskoro isključiti. Pritisnite da bi ostao uključen."</string>
</resources>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index ec90354a5193..52d28484e891 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -669,8 +669,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Працягваць паказваць апавяшчэнні гэтай праграмы?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Бязгучны рэжым"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Абвесткі"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Не адцягвае ўвагу дзякуючы выключаным гуку і вібрацыі."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Прыцягвае ўвагу гукам і вібрацыяй."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Гэтыя апавяшчэнні нельга змяніць."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Тут канфігурыраваць гэту групу апавяшчэнняў забаронена"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Праксіраванае апавяшчэнне"</string>
@@ -958,4 +962,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Адхіліць"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Навігацыя ў сістэме абноўлена. Каб унесці змяненні, перайдзіце ў Налады."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Перайдзіце ў Налады, каб абнавіць параметры навігацыі ў сістэме"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Рэжым чакання"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Прылада Android TV неўзабаве выключыцца. Каб пакінуць яе ўключанай, націсніце кнопку."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Прылада неўзабаве выключыцца. Націсніце, каб пакінуць яе ўключанай."</string>
</resources>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 856c020fb5bf..5429f8412d75 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Да продължат ли да се показват известията от това приложение?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Тих режим"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Сигнализиране"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Помага ви да се фокусирате без звук или вибриране."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Привлича вниманието ви със звук или вибриране."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Тези известия не могат да бъдат променяни."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Тази група от известия не може да бъде конфигурирана тук"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Известие, получено чрез делегиране"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Отхвърляне"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Режимът за навигиране в системата е актуализиран. За да извършите промени, отворете настройките."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Отворете настройките, за да актуализирате режима за навигиране в системата"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Режим на готовност"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Устройството с Android TV скоро ще се изключи. Натиснете бутон, за да остане включено."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Устройството скоро ще се изключи. Натиснете, за да остане включено."</string>
</resources>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index 7c3f250f997e..0aa4ee98b75f 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"এই অ্যাপের বিজ্ঞপ্তি পরেও দেখে যেতে চান?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"সাইলেন্ট"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"সতর্ক করুন"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"সাউন্ড বা ভাইব্রেশন ছাড়া ফোকাস করতে আপনাকে সাহায্য করে।"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"সাউন্ড বা ভাইব্রেশনের সাহায্যে দৃষ্টি আকর্ষণ করে।"</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"এই বিজ্ঞপ্তিগুলি পরিবর্তন করা যাবে না।"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"এই সমস্ত বিজ্ঞপ্তিকে এখানে কনফিগার করা যাবে না"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"প্রক্সি করা বিজ্ঞপ্তি"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"খারিজ করুন"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"সিস্টেম নেভিগেশন আপডেট হয়েছে। পরিবর্তন করার জন্য সেটিংসে যান।"</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"সিস্টেম নেভিগেশন আপডেট করতে সেটিংসে যান"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"স্ট্যান্ডবাই"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV ডিভাইস শীঘ্রই বন্ধ হয়ে যাবে, চালু রাখতে বোতাম প্রেস করুন।"</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"ডিভাইস শীঘ্রই বন্ধ হয়ে যাবে, চালু রাখতে প্রেস করুন।"</string>
</resources>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index 62cb309f3594..a97e4638519c 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -666,8 +666,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Nastaviti prikazivanje obavještenja iz ove aplikacije?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Nečujno"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Upozorenja"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Oblačić"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Pomaže vam da se koncentrirate bez zvuka ili vibracije."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Privlači vašu pažnju pomoću zvuka ili vibracije."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Privlači vašu pažnju pomoću plutajuće prečice do ovog sadržaja."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Ta obavještenja se ne mogu izmijeniti."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Ovdje nije moguće konfigurirati ovu grupu obavještenja"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Obavještenje preko proksi servera"</string>
@@ -953,4 +955,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Odbaci"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Navigiranje sistemom je ažurirano. Da izvršite promjene, idite u Postavke."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Idite u Postavke da ažurirate navigiranje sistemom"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Stanje mirovanja"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV uređaj će se uskoro isključiti. Pritisnite dugme da ostane uključen."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Uređaj će se uskoro isključiti. Pritisnite da ostane uključen."</string>
</resources>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 18dbd2ca4aef..4f65a6eaff9f 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Vols continuar rebent notificacions d\'aquesta aplicació?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Silenci"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Alertes"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Bombolla"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"T\'ajuda a concentrar-te sense so ni vibració."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Atrau la teva atenció amb so i vibració."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Atrau la teva atenció amb una drecera flotant a aquest contingut."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Aquestes notificacions no es poden modificar."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Aquest grup de notificacions no es pot configurar aquí"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Notificació mitjançant aplicació intermediària"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Omet"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"S\'ha actualitzat el sistema de navegació. Per fer canvis, ves a Configuració."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Ves a Configuració per actualitzar el sistema de navegació"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"En espera"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"El dispositiu Android TV s\'apagarà aviat; prem un botó per mantenir-lo encès."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"El dispositiu s\'apagarà aviat; prem per mantenir-lo encès."</string>
</resources>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 68800f046c6a..803d576df202 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -667,8 +667,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Mají se oznámení z této aplikace nadále zobrazovat?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Ticho"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Upozornění"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Pomáhá vám soustředit se vypnutím zvuku a vibrací."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Upozorňuje vás pomocí zvuku a vibrací."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Tato oznámení nelze upravit."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Tuto skupinu oznámení tady nelze nakonfigurovat"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Zprostředkované oznámení"</string>
@@ -956,4 +960,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Zavřít"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Systémová navigace byla aktualizována. Chcete-li provést změny, přejděte do Nastavení."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Přejděte do Nastavení a aktualizujte systémovou navigaci"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Pohotovostní režim"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Zařízení Android TV se brzy vypne, stisknutím tlačítka ho ponecháte zapnuté."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Zařízení se brzy vypne, stisknutím ho ponecháte zapnuté."</string>
</resources>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index d3dbc6e6dcb0..7b33b32888e7 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Vil du fortsætte med at se notifikationer fra denne app?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Lydløs"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Underretninger"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Boble"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Ingen lyde eller vibrationer, der forstyrrer dig."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Fanger din opmærksomhed med lyd eller vibration."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Fastholder din opmærksomhed med en svævende genvej til indholdet."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Disse notifikationer kan ikke redigeres."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Du kan ikke konfigurere denne gruppe notifikationer her"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Proxyforbundet notifikation"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Afvis"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Systemnavigationen blev opdateret. Gå til Indstillinger for at foretage ændringer."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Gå til Indstillinger for at opdatere systemnavigationen"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Standby"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV-enheden slukker snart. Tryk på en knap for at holde den tændt."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Enheden slukker snart. Tryk for at holde den tændt."</string>
</resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 15f7876c6128..46d36b2257ed 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -665,8 +665,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Benachrichtigungen dieser App weiterhin anzeigen?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Lautlos"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Benachrichtigen"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Benachrichtigungen werden ohne Ton oder Vibration angekündigt, um deine Konzentration nicht zu stören."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Benachrichtigungen werden mit einem Ton oder einer Vibration angekündigt."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Diese Benachrichtigungen können nicht geändert werden."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Die Benachrichtigungsgruppe kann hier nicht konfiguriert werden"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Weitergeleitete Benachrichtigung"</string>
@@ -950,4 +954,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Schließen"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Systemsteuerungseinstellungen wurden angepasst. Änderungen kannst du in den Einstellungen vornehmen."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Gehe zu den Einstellungen, um die Systemsteuerung anzupassen"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Standby"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Das Android TV-Gerät wird demnächst abgeschaltet. Drücke eine Taste, damit es eingeschaltet bleibt."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Das Gerät wird demnächst abgeschaltet. Drücke beispielsweise eine Taste oder berühre den Bildschirm, damit es eingeschaltet bleibt."</string>
</resources>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index d30aec936d5f..ebfc0ebf9d06 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Να συνεχίσουν να εμφανίζονται ειδοποιήσεις από αυτήν την εφαρμογή;"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Σίγαση"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Ειδοποίηση"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Φούσκα"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Σας βοηθά να συγκεντρωθείτε χωρίς ήχο και δόνηση."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Τραβά την προσοχή σας με ήχο ή δόνηση."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Κρατάει την προσοχή σας με μια κινούμενη συντόμευση προς αυτό το περιεχόμενο."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Δεν είναι δυνατή η τροποποίηση αυτών των ειδοποιήσεων"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Δεν είναι δυνατή η διαμόρφωση αυτής της ομάδας ειδοποιήσεων εδώ"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Ειδοποίηση μέσω διακομιστή μεσολάβησης"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Παράβλεψη"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Η πλοήγηση συστήματος ενημερώθηκε. Για να κάνετε αλλαγές, μεταβείτε στις Ρυθμίσεις."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Μεταβείτε στις Ρυθμίσεις για να ενημερώσετε την πλοήγηση συστήματος"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Κατάσταση αναμονής"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Η συσκευή Android TV σύντομα θα απενεργοποιηθεί. Πατήστε ένα κουμπί για να την κρατήσετε ενεργοποιημένη."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Η συσκευή σύντομα θα απενεργοποιηθεί. Πατήστε για να την κρατήσετε ενεργοποιημένη."</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index 1e50b5a7fba4..c7c5833b636e 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Keep showing notifications from this app?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Silent"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Alerting"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Bubble"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Helps you focus without sound or vibration."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Gets your attention with sound or vibration."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Keeps your attention with a floating shortcut to this content."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"These notifications can\'t be modified."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"This group of notifications cannot be configured here"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Proxied notification"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Dismiss"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"System navigation updated. To make changes, go to Settings."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Go to Settings to update system navigation"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Standby"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"The Android TV device will soon turn off; press a button to keep it on."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"The device will soon turn off; press to keep it on."</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index b2a6e6a3c237..c89ababc8ba4 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Keep showing notifications from this app?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Silent"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Alerting"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Bubble"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Helps you focus without sound or vibration."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Gets your attention with sound or vibration."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Keeps your attention with a floating shortcut to this content."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"These notifications can\'t be modified."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"This group of notifications cannot be configured here"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Proxied notification"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Dismiss"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"System navigation updated. To make changes, go to Settings."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Go to Settings to update system navigation"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Standby"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"The Android TV device will soon turn off; press a button to keep it on."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"The device will soon turn off; press to keep it on."</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 1e50b5a7fba4..c7c5833b636e 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Keep showing notifications from this app?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Silent"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Alerting"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Bubble"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Helps you focus without sound or vibration."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Gets your attention with sound or vibration."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Keeps your attention with a floating shortcut to this content."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"These notifications can\'t be modified."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"This group of notifications cannot be configured here"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Proxied notification"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Dismiss"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"System navigation updated. To make changes, go to Settings."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Go to Settings to update system navigation"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Standby"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"The Android TV device will soon turn off; press a button to keep it on."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"The device will soon turn off; press to keep it on."</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index 1e50b5a7fba4..c7c5833b636e 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Keep showing notifications from this app?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Silent"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Alerting"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Bubble"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Helps you focus without sound or vibration."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Gets your attention with sound or vibration."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Keeps your attention with a floating shortcut to this content."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"These notifications can\'t be modified."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"This group of notifications cannot be configured here"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Proxied notification"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Dismiss"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"System navigation updated. To make changes, go to Settings."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Go to Settings to update system navigation"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Standby"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"The Android TV device will soon turn off; press a button to keep it on."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"The device will soon turn off; press to keep it on."</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml
index 568fdb551ece..a5610011c0fb 100644
--- a/packages/SystemUI/res/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res/values-en-rXC/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‎‏‎‎‏‏‎‏‏‏‎‏‎‏‎‎‏‎‎‏‎‎‎‏‏‎‏‏‎‎‎‎‎‎‎‏‎‎‎‏‏‎‏‎‎‎‏‎‎‎‎‎‏‎Keep showing notifications from this app?‎‏‎‎‏‎"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‎‎‏‏‎‎‏‏‎‏‎‏‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‎‏‎‎‎‎‏‎‏‎‏‏‎‎‏‎Silent‎‏‎‎‏‎"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‎‏‎‎‏‎‎‎‏‎‏‎‏‏‎‎‎‏‎‎‎‏‏‏‎‎‎‎‏‎‎‏‎‏‎‏‎‏‎‎‎‎‏‏‎‎‏‎‎‏‎‎‎Alerting‎‏‎‎‏‎"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‎‏‏‏‏‎‎‏‎‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‏‏‎‎‎‎‎‎‎‎‎‏‏‏‏‎‏‎‎‎Bubble‎‏‎‎‏‎"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‎‎‎‎‏‎‏‎‏‏‎‎‏‎‎‏‏‏‎‏‎‎‎‎‏‏‏‏‏‏‏‎‏‎‎‏‎‎‎‏‎‎‎‏‏‏‎‏‏‎‎‎‏‏‎Helps you focus without sound or vibration.‎‏‎‎‏‎"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‎‏‏‏‏‎‎‏‏‎‎‎‎‎‏‏‎‎‏‎‏‎‎‏‏‏‏‎‏‎‏‎‏‎‎‎‎‏‏‏‏‎‏‎‏‏‎‎‏‎‎‏‎‎Gets your attention with sound or vibration.‎‏‎‎‏‎"</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‎‎‎‎‎‎‏‎‎‏‏‎‎‎‏‏‏‏‎‏‎‏‏‏‎‎‎‎‏‎‏‏‎‏‏‎‎‎‏‏‎‏‎‎‏‎‏‎‏‎‏‎‏‏‎Keeps your attention with a floating shortcut to this content.‎‏‎‎‏‎"</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‎‎‏‏‏‏‎‏‎‏‏‎‎‏‎‎‎‏‏‎‎‎‎‏‎‎‏‏‎‎‏‎‎‎‏‎‏‎‎‏‎‎‎‎‎‏‎‎‎‎‎‎‎‏‏‎‎These notifications can\'t be modified.‎‏‎‎‏‎"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‏‎‏‎‏‏‎‏‎‎‎‎‏‎‏‎‏‎‎‎‏‏‎‏‏‎‏‎‏‎‎‎‏‎‏‎‏‏‏‏‏‎‏‏‏‎‏‎‏‎‎‏‏‎‎This group of notifications cannot be configured here‎‏‎‎‏‎"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎‏‏‏‏‎‏‏‎‏‏‏‏‏‏‎‎‎‏‏‏‎‏‎‏‎‎‏‎‏‏‎‎‏‏‏‎‎‎‏‏‏‏‏‎‎Proxied notification‎‏‎‎‏‎"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‎‎‏‎‏‎‎‏‏‏‎‏‎‎‎‏‏‏‎‎‏‏‎‎‏‏‏‏‏‎‎‎‏‎‏‏‏‎‎‎‎‏‎‎‎Dismiss‎‏‎‎‏‎"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‎‏‎‏‏‏‏‎‏‎‎‏‎‎‎‏‎‏‏‎‎‎‏‎‏‏‎‏‏‏‎‎‎‏‏‏‎‎‎‏‎‎‏‏‎‏‎‎‏‏‏‎‎‎System navigation updated. To make changes, go to Settings.‎‏‎‎‏‎"</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‏‎‎‎‎‏‎‎‎‎‏‏‎‎‎‏‎‏‎‎‏‏‏‏‏‎‏‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‏‎‎‎‎Go to Settings to update system navigation‎‏‎‎‏‎"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‏‎‏‎‏‎‎‎‏‏‏‎‏‎‏‎‎‎‎‎‎‎‏‎‏‎‏‎‎‏‎‏‏‎‏‎‎‎‎‏‎‏‎‎‎‏‎‏‎‎‏‎‎Standby‎‏‎‎‏‎"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‎‎‎‏‎‏‎‎‎‎‎‎‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‎‏‏‏‎‎‏‎‎‏‏‏‏‏‏‏‎‎‎‎‎‎‏‎‏‏‎The Android TV device will soon turn off; press a button to keep it on.‎‏‎‎‏‎"</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‎‏‏‎‏‎‏‎‏‏‏‎‎‏‎‏‏‎‏‏‎‏‏‎‎‏‏‏‎‎‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‏‎‎‏‎‏‎‎‏‎‎‎The device will soon turn off; press to keep it on.‎‏‎‎‏‎"</string>
</resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 46b402eaee79..bc51e0660a37 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"¿Quieres seguir viendo las notificaciones de esta app?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Silencio"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Alertas"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Cuadro"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Te ayuda a concentrarte sin sonar ni vibrar."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Capta tu atención con sonido o vibración."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Retiene tu atención con un acceso directo flotante a este contenido."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"No se pueden modificar estas notificaciones."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"No se puede configurar aquí este grupo de notificaciones"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Notificación almacenada en proxy"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Ignorar"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Se actualizó el sistema de navegación. Para hacer cambios, ve a Configuración."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Ve a Configuración para actualizar la navegación del sistema"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"En espera"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Pronto se apagará el dispositivo Android TV; presiona un botón para mantenerlo encendido."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Pronto se apagará el dispositivo; presiona para mantenerlo encendido."</string>
</resources>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index d45bf9fa7fdb..99fac8c8e9b0 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"¿Quieres seguir viendo las notificaciones de esta aplicación?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Silencio"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Alertas"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Burbuja"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Te ayuda a concentrarte sin sonido ni vibración."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Llama tu atención con sonido o vibración."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Llama tu atención con un acceso directo flotante a este contenido."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Estas notificaciones no se pueden modificar."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Este grupo de notificaciones no se puede configurar aquí"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Notificación mediante proxy"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Cerrar"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Se ha actualizado la navegación del sistema. Para hacer cambios, ve a Ajustes."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Ve a Ajustes para actualizar la navegación del sistema"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"En espera"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"El dispositivo Android TV pronto se apagará; pulsa un botón para evitarlo."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"El dispositivo pronto se apagará si no interactúas con él."</string>
</resources>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index 3f7c8358e207..b2b7152e0feb 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Kas jätkata selle rakenduse märguannete kuvamist?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Hääletu"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Teavitamine"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Aitab teil keskenduda (heli või vibreerimine puudub)."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Haarab heli või vibreerimisega teie tähelepanu."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Neid märguandeid ei saa muuta."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Seda märguannete rühma ei saa siin seadistada"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Puhvriga märguanne"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Loobu"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Süsteemis navigeerimine on värskendatud. Muutmiseks avage jaotis Seaded."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Süsteemi navigeerimise värskendamiseks avage jaotis Seaded"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Ooterežiim"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV seade lülitub varsti välja; selle aktiivsena hoidmiseks vajutage nuppu."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Seade lülitub värsti välja; selle aktiivsena hoidmiseks vajutage nuppu."</string>
</resources>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index 841abde20394..4eb57db401cb 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -239,9 +239,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Hegaldi modua aktibatu egin da."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"isiltasun osoa"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"alarmak soilik"</string>
- <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Ez molestatu."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Desaktibatu egin da \"Ez molestatu\" eginbidea."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Aktibatu egin da \"Ez molestatu\" modua."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Ez molestatzeko modua."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Desaktibatu egin da ez molestatzeko modua."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Aktibatu egin da ez molestatzeko modua."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth-a."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth konexioa desaktibatuta dago."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth konexioa aktibatuta dago."</string>
@@ -306,7 +306,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Pantaila-babeslea"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Aukera gehiago ikusteko, eduki sakatuta ikonoak"</string>
- <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Ez molestatu"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Ez molestatzeko modua"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Lehentasunezkoak soilik"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Alarmak soilik"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Isiltasun osoa"</string>
@@ -469,7 +469,7 @@
<string name="manage_notifications_text" msgid="2386728145475108753">"Kudeatu"</string>
<string name="notification_section_header_gentle" msgid="4372438504154095677">"Soinurik gabeko jakinarazpenak"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="4286716295850400959">"Garbitu soinurik gabeko jakinarazpen guztiak"</string>
- <string name="dnd_suppressing_shade_text" msgid="1904574852846769301">"\"Ez molestatu\" moduak pausatu egin ditu jakinarazpenak"</string>
+ <string name="dnd_suppressing_shade_text" msgid="1904574852846769301">"Ez molestatzeko moduak pausatu egin ditu jakinarazpenak"</string>
<string name="media_projection_action_text" msgid="8470872969457985954">"Hasi"</string>
<string name="empty_shade_text" msgid="708135716272867002">"Ez dago jakinarazpenik"</string>
<string name="profile_owned_footer" msgid="8021888108553696069">"Baliteke profila kontrolatuta egotea"</string>
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Aplikazio honen jakinarazpenak erakusten jarraitzea nahi duzu?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Isila"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Ohartarazlea"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Burbuila"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Ez du egiten soinu edo dardararik, arretarik gal ez dezazun."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Arreta erakartzen du soinua eta dardara eginda."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Eduki honetarako lasterbide gainerakor bat eskaintzen dizu, arretarik gal ez dezazun."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Jakinarazpen horiek ezin dira aldatu."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Jakinarazpen talde hau ezin da konfiguratu hemen"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Proxy bidezko jakinarazpena"</string>
@@ -745,9 +747,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Calendar"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Erakutsi bolumena kontrolatzeko aukerekin"</string>
- <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Ez molestatu"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Ez molestatzeko modua"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Bolumen-botoietarako lasterbidea"</string>
- <string name="volume_up_silent" msgid="7545869833038212815">"Irten \"Ez molestatu\" egoeratik bolumena igotzean"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Irten ez molestatzeko modutik bolumena igotzean"</string>
<string name="battery" msgid="7498329822413202973">"Bateria"</string>
<string name="clock" msgid="7416090374234785905">"Erlojua"</string>
<string name="headset" msgid="4534219457597457353">"Mikrofonodun entzungailua"</string>
@@ -891,10 +893,10 @@
<string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> (<xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>)"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi konexioa desaktibatuta dago"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth konexioa desaktibatuta dago"</string>
- <string name="dnd_is_off" msgid="6167780215212497572">"\"Ez molestatu\" modua desaktibatuta dago"</string>
- <string name="qs_dnd_prompt_auto_rule" msgid="862559028345233052">"\"Ez molestatu\" modua aktibatu du arau automatiko batek (<xliff:g id="ID_1">%s</xliff:g>)."</string>
- <string name="qs_dnd_prompt_app" msgid="7978037419334156034">"\"Ez molestatu\" modua aktibatu du aplikazio batek (<xliff:g id="ID_1">%s</xliff:g>)."</string>
- <string name="qs_dnd_prompt_auto_rule_app" msgid="2599343675391111951">"\"Ez molestatu\" modua aktibatu du arau automatiko edo aplikazio batek."</string>
+ <string name="dnd_is_off" msgid="6167780215212497572">"Ez molestatzeko modua desaktibatuta dago"</string>
+ <string name="qs_dnd_prompt_auto_rule" msgid="862559028345233052">"Ez molestatzeko modua aktibatu du arau automatiko batek (<xliff:g id="ID_1">%s</xliff:g>)."</string>
+ <string name="qs_dnd_prompt_app" msgid="7978037419334156034">"Ez molestatzeko modua aktibatu du aplikazio batek (<xliff:g id="ID_1">%s</xliff:g>)."</string>
+ <string name="qs_dnd_prompt_auto_rule_app" msgid="2599343675391111951">"Ez molestatzeko modua aktibatu du arau automatiko edo aplikazio batek."</string>
<string name="qs_dnd_until" msgid="3469471136280079874">"<xliff:g id="ID_1">%s</xliff:g> arte"</string>
<string name="qs_dnd_keep" msgid="1825009164681928736">"Utzi bere horretan"</string>
<string name="qs_dnd_replace" msgid="8019520786644276623">"Ordeztu"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Baztertu"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Eguneratu da sistemaren nabigazioa. Aldaketak egiteko, joan Ezarpenak atalera."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Sistemaren nabigazioa eguneratzeko, joan Ezarpenak atalera"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Egonean"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV gailua laster itzaliko da; sakatu botoi bat piztuta mantentzeko."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Gailua laster itzaliko da; sakatu piztuta mantentzeko."</string>
</resources>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 4f0422057fc1..5b7ab56ca0bc 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"نمایش اعلان از این برنامه ادامه یابد؟"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"بی‌صدا"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"هشدار دادن"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"حباب"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"به شما کمک می‌کند بدون صدا یا لرزش تمرکز کنید."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"با صدا یا لرزش توجه شما را جلب می‌کند."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"با میان‌بری شناور به این محتوا، توجه‌تان را جلب می‌کند."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"این اعلان‌ها قابل اصلاح نیستند."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"نمی‌توانید این گروه اعلان‌ها را در اینجا پیکربندی کنید"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"اعلان‌های دارای پراکسی"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"رد کردن"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"پیمایش سیستم به‌روزرسانی شد. برای انجام تغییرات به «تنظیمات» بروید."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"برای به‌روزرسانی پیمایش سیستم، به «تنظیمات» بروید"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"آماده‌به‌کار"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"‏دستگاه Android TV به‌زودی خاموش می‌شود، برای روشن نگه‌داشتن آن، دکمه‌ای را فشار دهید."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"دستگاه به‌زودی خاموش می‌شود، برای روشن نگه‌داشتن آن فشار دهید."</string>
</resources>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 63bc925683fe..30e687c74570 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Jatketaanko ilmoitusten näyttämistä tästä sovelluksesta?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Äänetön"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Hälyttää"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Kupla"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Keskittyminen on helpompaa ilman ääntä tai värinää."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Kiinnittää huomion äänellä tai värinällä"</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Kelluva sisällön pikakuvake säilyttää huomiosi"</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Näitä ilmoituksia ei voi muokata"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Tätä ilmoitusryhmää ei voi määrittää tässä"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Välitetty ilmoitus"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Ohita"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Järjestelmän navigointitapa vaihdettu. Voit muuttaa sitä asetuksista."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Vaihda järjestelmän navigointitapaa asetuksista"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Virransäästötila"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV ‑laite sammuu pian. Pidä se päällä painamalla painiketta."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Laite sammuu pian. Pidä se päällä painamalla jotakin."</string>
</resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index df8b8e4bd373..205cf2726857 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Continuer à afficher les notifications de cette application?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Mode silencieux"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Alertes"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Vous aider à vous concentrer, sans son ni vibration."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Attire votre attention à l\'aide de sons et de vibrations."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Ces notifications ne peuvent pas être modifiées"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Ce groupe de notifications ne peut pas être configuré ici"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Notification par mandataire"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Fermer"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"La navigation système a été mise à jour. Pour apporter des modifications, accédez au menu Paramètres."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Accédez au menu Paramètres pour mettre à jour la navigation système"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Veille"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"L\'appareil Android TV va bientôt s\'éteindre. Appuyez sur un bouton pour le laisser allumé."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"L\'appareil va bientôt s\'éteindre. Interagissez avec lui pour le laisser allumé."</string>
</resources>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 90a6987998ab..9fdda0c0e6c1 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Continuer d\'afficher les notifications de cette application ?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Silencieux"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Alertes"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Sans sons ni vibrations, vous aide à vous concentrer."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Attire votre attention à l\'aide de sons ou de vibrations."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Impossible de modifier ces notifications."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Vous ne pouvez pas configurer ce groupe de notifications ici"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Notification de proxy"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Ignorer"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Navigation système mise à jour. Pour apporter des modifications, accédez aux paramètres."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Accédez aux paramètres pour mettre à jour la navigation système"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Mode Veille imminent"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"L\'appareil Android TV va bientôt passer en mode Veille. Appuyez sur un bouton pour qu\'il reste allumé."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"L\'appareil va bientôt passer en mode Veille. Appuyez dessus pour qu\'il reste allumé."</string>
</resources>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index a029e197f14a..9edaf5d4ff88 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Queres seguir mostrando as notificacións desta aplicación?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Silenciosas"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Con alertas"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Axúdache a centrarte sen son nin vibración."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Chama a túa atención con son ou vibración."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Estas notificacións non se poden modificar."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Aquí non se pode configurar este grupo de notificacións"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Notificación mediante proxy"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Ignorar"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Actualizouse a navegación do sistema. Para facer cambios, vai a Configuración."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Para actualizar a navegación do sistema, vai a Configuración"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Modo de espera"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Pronto se apagará o dispositivo Android TV. Preme un botón para mantelo acendido."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Pronto se apagará o teléfono. Tócao para mantelo acendido."</string>
</resources>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index 95d7f413bd3d..79d67a119ca6 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"આ ઍપમાંથી નોટિફિકેશન બતાવવાનું ચાલુ રાખીએ?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"સાઇલન્ટ"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"અલર્ટ કરવાનું ચાલુ રાખો"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"તમને સાઉન્ડ અથવા વાઇબ્રેશન વિના ફોકસ કરવામાં સહાય કરે છે."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"સાઉન્ડ અથવા વાઇબ્રેશન વિના તમારું ધ્યાન દોરે છે."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"આ નોટિફિકેશનમાં કોઈ ફેરફાર થઈ શકશે નહીં."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"નોટિફિકેશનના આ ગ્રૂપની ગોઠવણી અહીં કરી શકાશે નહીં"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"પ્રૉક્સી નોટિફિકેશન"</string>
@@ -846,7 +850,7 @@
<string name="pip_phone_dismiss_hint" msgid="6351678169095923899">"છોડી દેવા માટે નીચે ખેંચો"</string>
<string name="pip_menu_title" msgid="4707292089961887657">"મેનૂ"</string>
<string name="pip_notification_title" msgid="3204024940158161322">"<xliff:g id="NAME">%s</xliff:g> ચિત્રમાં-ચિત્રની અંદર છે"</string>
- <string name="pip_notification_message" msgid="5619512781514343311">"જો તમે નથી ઈચ્છતા કે <xliff:g id="NAME">%s</xliff:g> આ સુવિધાનો ઉપયોગ કરે, તો સેટિંગ્સ ખોલવા માટે ટૅપ કરો અને તે સુવિધાને બંધ કરો."</string>
+ <string name="pip_notification_message" msgid="5619512781514343311">"જો તમે નથી ઇચ્છતા કે <xliff:g id="NAME">%s</xliff:g> આ સુવિધાનો ઉપયોગ કરે, તો સેટિંગ ખોલવા માટે ટૅપ કરો અને તેને બંધ કરો."</string>
<string name="pip_play" msgid="1417176722760265888">"ચલાવો"</string>
<string name="pip_pause" msgid="8881063404466476571">"થોભાવો"</string>
<string name="pip_skip_to_next" msgid="1948440006726306284">"આગલા પર જાઓ"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"છોડી દો"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"સિસ્ટમ નૅવિગેશન અપડેટ કર્યું. ફેરફારો કરવા માટે, સેટિંગ પર જાઓ."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"સિસ્ટમ નૅવિગેશનને અપડેટ કરવા માટે સેટિંગ પર જાઓ"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"સ્ટૅન્ડબાય"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android ટીવી ડિવાઇસ ટૂંક સમયમાં બંધ થશે; તેને ચાલુ રાખવા માટે બટન દબાવો."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"ડિવાઇસ ટૂંક સમયમાં બંધ થશે; તેને ચાલુ રાખવા માટે દબાવો."</string>
</resources>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 4c6edc116c02..aa163ab33bd7 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"इस ऐप्लिकेशन से जुड़ी सूचनाएं दिखाना जारी रखें?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"आवाज़ के बिना सूचनाएं दिखाएं"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"चेतावनी वाली सूचनाएं"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"आवाज़ या वाइब्रेशन न होने की वजह से आप काम में ध्यान लगा पाते हैं."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"आवाज़ या वाइब्रेशन होने की वजह से आपका ध्यान सूचनाओं पर जाता है."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"ये सूचनाएं नहीं बदली जा सकती हैं."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"सूचनाओं के इस समूह को यहां कॉन्फ़िगर नहीं किया जा सकता"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"प्रॉक्सी सूचना"</string>
@@ -845,7 +849,7 @@
<string name="pip_phone_settings" msgid="8080777499521528521">"सेटिंग"</string>
<string name="pip_phone_dismiss_hint" msgid="6351678169095923899">"खारिज करने के लिए नीचे खींचें और छोड़ें"</string>
<string name="pip_menu_title" msgid="4707292089961887657">"मेन्यू"</string>
- <string name="pip_notification_title" msgid="3204024940158161322">"<xliff:g id="NAME">%s</xliff:g> पिक्चर में पिक्चर के अंदर है"</string>
+ <string name="pip_notification_title" msgid="3204024940158161322">"<xliff:g id="NAME">%s</xliff:g> \"पिक्चर में पिक्चर\" के अंदर है"</string>
<string name="pip_notification_message" msgid="5619512781514343311">"अगर आप नहीं चाहते कि <xliff:g id="NAME">%s</xliff:g> इस सुविधा का उपयोग करे, तो सेटिंग खोलने के लिए टैप करें और उसे बंद करें ."</string>
<string name="pip_play" msgid="1417176722760265888">"चलाएं"</string>
<string name="pip_pause" msgid="8881063404466476571">"रोकें"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"खारिज करें"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"सिस्टम नेविगेशन अपडेट हो गया. बदलाव करने के लिए \'सेटिंग\' पर जाएं."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"सिस्टम नेविगेशन अपडेट करने के लिए \'सेटिंग\' में जाएं"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"स्टैंडबाई"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV डिवाइस जल्द ही बंद हो जाएगा. इसे चालू रखने के लिए किसी बटन को दबाएं."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"डिवाइस जल्द ही बंद हो जाएगा. इसे चालू रखने के लिए स्क्रीन पर टैप करें या किसी बटन को दबाएं."</string>
</resources>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index e6338785acdf..4943dc66065c 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -664,8 +664,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Želite li da se obavijesti te aplikacije nastave prikazivati?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Bešumno"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Upozoravanje"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Oblačić"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Pomaže vam da se usredotočite bez zvučnih signala i vibracija."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Privlači vašu pažnju zvučnim signalima ili vibracijama."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Održava vam pozornost pomoću plutajućeg prečaca ovom sadržaju."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Te se obavijesti ne mogu izmijeniti."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Ta se grupa obavijesti ne može konfigurirati ovdje"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Obavijest poslana putem proxyja"</string>
@@ -951,4 +953,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Odbaci"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Ažurirana je navigacija sustavom. Možete je promijeniti u Postavkama."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Navigaciju sustavom možete ažurirati u Postavkama"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Stanje mirovanja"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Uređaj Android TV uskoro će se isključiti. Pritisnite gumb da bi ostao uključen."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Uređaj će se uskoro isključiti. Pritisnite da bi ostao uključen."</string>
</resources>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 299e31857947..f2233cddc4f7 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Továbbra is megjelenjenek az alkalmazás értesítései?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Néma"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Figyelemfelkeltő"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Hangjelzés és rezgés nélkül segít a koncentrálásban."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Figyelemfelkeltő a hangjelzésnek és rezgésnek köszönhetően."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Ezeket az értesítéseket nem lehet módosítani."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Az értesítések jelen csoportját itt nem lehet beállítani"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Továbbított értesítés"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Elvetés"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"A rendszer-navigáció módja megváltozott. Módosításához nyissa meg a Beállításokat."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"A rendszer-navigációs lehetőségeket a Beállításokban módosíthatja"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Készenléti mód"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Az Android TV eszköz hamarosan kikapcsol. Nyomja meg valamelyik gombot, hogy bekapcsolva tarthassa."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Az eszköz hamarosan kikapcsol. Nyomja meg, hogy bekapcsolva tarthassa."</string>
</resources>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index 6291d5de7b23..bbc5ef4273bd 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Ցուցադրե՞լ ծանուցումներ այս հավելվածից։"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Անձայն"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Ծանուցումներ"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Ծանուցումները գալիս են առանց ձայնի և թրթռոցի։"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Ծանուցումները գալիս են ձայնով կամ թրթռոցով։"</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Այս ծանուցումները չեն կարող փոփոխվել:"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Ծանուցումների տվյալ խումբը հնարավոր չէ կարգավորել այստեղ"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Ծանուցումն ուղարկվել է պրոքսի սերվերի միջոցով"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Փակել"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Համակարգի նավիգացիան թարմացվեց: Փոփոխություններ անելու համար անցեք կարգավորումներ:"</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Թարմացրեք համակարգի նավիգացիան կարգավորումներում"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Սպասման ռեժիմ"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV սարքը շուտով կանջատվի: Սեղմեք որևէ կոճակ՝ միացրած թողնելու համար:"</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Սարքը շուտով կանջատվի: Սեղմեք՝ միացրած թողնելու համար:"</string>
</resources>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index b9eaddf8cd03..e17e5f9ff1c6 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Terus tampilkan notifikasi dari aplikasi ini?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Senyap"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Pemberitahuan"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Balon"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Membantu Anda tetap fokus tanpa suara atau getaran."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Menarik perhatian Anda dengan suara atau getaran."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Menjaga perhatian dengan pintasan floating ke konten ini."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Notifikasi ini tidak dapat diubah."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Grup notifikasi ini tidak dapat dikonfigurasi di sini"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Notifikasi proxy"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Tutup"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Navigasi sistem diupdate. Untuk melakukan perubahan, buka Setelan."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Buka Setelan untuk mengupdate navigasi sistem"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Siaga"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Perangkat Android TV akan segera dinonaktifkan; tekan tombol untuk terus menyalakannya."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Perangkat akan segera dinonaktifkan, tekan untuk terus menyalakannya."</string>
</resources>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index f98b9434148e..00776a952137 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Sýna áfram tilkynningar frá þessu forriti?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Hljóðlaust"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Viðvörun"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Blaðra"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Auðveldar þér að einbeita þér án hljóðs eða titrings."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Fangar athygli þína með hljóði eða titringi."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Fangar athygli þína með fljótandi flýtileið á þetta efni."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Ekki er hægt að breyta þessum tilkynningum."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Ekki er hægt að stilla þessar tilkynningar hér"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Staðgengilstilkynning"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Hunsa"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Kerfisstjórnun uppfærð. Þú getur breytt þessu í stillingunum."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Farðu í stillingar til að uppfæra kerfisstjórnun"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Biðstaða"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV tækið slekkur á sér fljótlega. Ýttu á takka til að það slokkni ekki á því."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Tækið slekkur á sér fljótlega. Ýttu á takka til að það slokkni ekki á því."</string>
</resources>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index c08cdd3defd1..2c270094b21e 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Continuare a ricevere notifiche da questa app?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Modalità silenziosa"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Avvisi"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Fumetto"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Favorisce la tua concentrazione grazie all\'assenza di suono o vibrazione."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Richiama la tua attenzione con suono o vibrazione."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Mantiene la tua attenzione con una scorciatoia mobile a questi contenuti."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Impossibile modificare queste notifiche."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Qui non è possibile configurare questo gruppo di notifiche"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Notifica inviata al proxy"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Ignora"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Navigazione del sistema aggiornata. Per apportare modifiche, usa le Impostazioni."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Usa le Impostazioni per aggiornare la navigazione del sistema"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Standby"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"A breve il dispositivo Android TV si spegnerà. Premi un pulsante per tenerlo acceso."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"A breve il dispositivo si spegnerà. Premi per tenerlo acceso."</string>
</resources>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index fc0c64027b06..64074a87f51e 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -667,8 +667,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"שנמשיך להציג לך התראות מהאפליקציה הזאת?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"שקט"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"שליחת התראות"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"עוזרת להתרכז ללא צלילים או רטט."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"מעוררת תשומת לב באמצעות צלילים או רטט."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"לא ניתן לשנות את ההתראות האלה."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"לא ניתן להגדיר כאן את קבוצת ההתראות הזו"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"‏התראה דרך שרת proxy"</string>
@@ -956,4 +960,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"סגירה"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"הניווט במערכת עודכן. אפשר לערוך שינויים דרך ההגדרות."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"יש לעבור להגדרות כדי לעדכן את הניווט במערכת"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"המתנה"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"‏מכשיר Android TV ייכבה בקרוב. יש ללחוץ על לחצן כלשהו כדי שהוא ימשיך לפעול."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"המכשיר ייכבה בקרוב, יש ללחוץ כדי שהוא ימשיך לפעול."</string>
</resources>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 351ace803e03..684c16e667d9 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"このアプリからの通知を今後も表示しますか?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"サイレント"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"アラートを受け取る"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"バブル"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"音やバイブレーションが作動しないため、通知に煩わされずに済みます。"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"音やバイブレーションで通知をお知らせします。"</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"このコンテンツのフローティング ショートカットで通知をお知らせします。"</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"これらの通知は変更できません。"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"このグループの通知はここでは設定できません"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"代理通知"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"閉じる"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"システム ナビゲーションを更新しました。変更するには [設定] に移動してください。"</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"システム ナビゲーションを更新するには [設定] に移動してください"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"スタンバイ"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV デバイスはまもなく OFF になります。ON 状態を維持するには、ボタンを押してください。"</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"このデバイスはまもなく OFF になります。ON 状態を維持するには、ボタンを押してください。"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index 8c10ea4e6b70..e205586a39b0 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"გაგრძელდეს შეტყობინებათა ჩვენება ამ აპიდან?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"ჩუმი"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"გამაფრთხილებელი"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"ბუშტი"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"გეხმარებათ ფოკუსირებაში ხმის ან ვიბრაციის უქონლობის გამო."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"იპყრობს თქვენს ყურადღებას ხმით ან ვიბრაციით."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"იპყრობს თქვენს ყურადღებას ამ კონტენტის მოლივლივე მალსახმობით."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"ამ შეტყობინებების შეცვლა შეუძლებელია."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"შეტყობინებების ამ ჯგუფის კონფიგურირება აქ შეუძლებელია"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"პროქსირებული შეტყობინება"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"დახურვა"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"სისტემური ნავიგაცია განახლდა. ცვლილებების შესატანად გადადით პარამეტრებზე."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"სისტემური ნავიგაციის გასაახლებლად გადადით პარამეტრებზე"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"მოლოდინის რეჟიმი"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV მოწყობილობა მალე გამოირთვება, დააჭირეთ ღილაკს, რომ ჩართული დარჩეს."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"მოწყობილობა მალე გამოირთვება, დააჭირეთ, რომ ჩართული დარჩეს."</string>
</resources>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index c64671572d3b..1c288f1f123b 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Осы қолданбаның хабарландырулары көрсетілсін бе?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Дыбыссыз"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Ескертулер"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Көпіршік"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Хабарландырулар келгенде, дыбыс шықпайды не дірілдемейді"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Хабарландырулар келгенде, дыбыс шығады не дірілдейді"</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Осы мазмұнға бекітілген қалқымалы таңбашамен назарыңызды өзіне тартады."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Бұл хабарландыруларды өзгерту мүмкін емес."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Мұндай хабарландырулар бұл жерде конфигурацияланбайды."</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Прокси-сервер арқылы жіберілген хабарландыру"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Жабу"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Жүйе навигациясы жаңартылды. Өзгерту енгізу үшін \"Параметрлер\" бөліміне өтіңіз."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Жүйе навигациясын жаңарту үшін \"Параметрлер\" бөліміне өтіңіз."</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Күту режимі"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV құрылғысы жақын арада өшеді. Оны қосулы қалдыру үшін басыңыз."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Құрылғы жақын арада өшеді. Оны қосулы қалдыру үшін басыңыз."</string>
</resources>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index 042ffd89872a..dd28931fe16e 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"បន្ត​បង្ហាញ​ការជូនដំណឹង​ពីកម្មវិធីនេះ?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"ស្ងាត់"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"បញ្ចេញ​សំឡេង"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"ពពុះ"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"ជួយឱ្យ​អ្នក​ផ្តោតអារម្មណ៍ ដោយមិនឮសំឡេង ឬ​ការញ័រ។"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"ធ្វើឱ្យ​អ្នក​ចាប់អារម្មណ៍​តាមរយៈ​សំឡេង ឬ​ការញ័រ។"</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"ធ្វើឱ្យអ្នក​ចាប់អារម្មណ៍​ដោយប្រើ​ផ្លូវកាត់​អណ្ដែត​សម្រាប់ខ្លឹមសារនេះ។"</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"មិនអាច​កែប្រែ​ការជូនដំណឹង​ទាំងនេះ​បានទេ។"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"មិនអាច​កំណត់​រចនាសម្ព័ន្ធ​ក្រុមការជូនដំណឹងនេះ​នៅទីនេះ​បានទេ"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"ការជូនដំណឹង​ជា​ប្រូកស៊ី"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"ច្រានចោល"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"បានធ្វើ​បច្ចុប្បន្នភាព​ការរុករកក្នុង​ប្រព័ន្ធ។ ដើម្បីធ្វើការផ្លាស់ប្ដូរ សូមចូលទៅ​កាន់ការកំណត់។"</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"ចូល​ទៅកាន់​ការកំណត់ ដើម្បី​ធ្វើបច្ចុប្បន្នភាព​ការរុករក​ក្នុង​ប្រព័ន្ធ"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"ផ្អាក​ដំណើរការ"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"ឧបករណ៍ Android TV នឹង​បិទ​ក្នុងពេល​ឆាប់ៗនេះ សូមចុច​ប៊ូតុង​ដើម្បី​បន្ត​បើក​ឧបករណ៍។"</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"ឧបករណ៍​នឹង​បិទ​ក្នុងពេល​ឆាប់ៗនេះ សូមចុច​ដើម្បី​បន្ត​បើក​ឧបករណ៍។"</string>
</resources>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index f208298791c0..3a4918b3001c 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"ಈ ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ ಅಧಿಸೂಚನೆಗಳನ್ನು ತೋರಿಸುತ್ತಲೇ ಇರಬೇಕೆ?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"ನಿಶ್ಶಬ್ದ"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"ಎಚ್ಚರಿಸಲಾಗುತ್ತಿದೆ"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"ಶಬ್ದ ಅಥವಾ ವೈಬ್ರೇಷನ್ ಇರದಂತೆ ನಿಮಗೆ ಗಮನಹರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"ಧ್ವನಿ ಅಥವಾ ವೈಬ್ರೇಷನ್ ಮೂಲಕ ನಿಮ್ಮ ಗಮನವನ್ನು ಸೆಳೆಯುತ್ತದೆ."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"ಈ ಅಧಿಸೂಚನೆಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"ಈ ಗುಂಪಿನ ಅಧಿಸೂಚನೆಗಳನ್ನು ಇಲ್ಲಿ ಕಾನ್ಫಿಗರ್‌ ಮಾಡಲಾಗಿರುವುದಿಲ್ಲ"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"ಪ್ರಾಕ್ಸಿ ಮಾಡಿದ ಅಧಿಸೂಚನೆಗಳು"</string>
@@ -845,7 +849,7 @@
<string name="pip_phone_settings" msgid="8080777499521528521">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
<string name="pip_phone_dismiss_hint" msgid="6351678169095923899">"ವಜಾಗೊಳಿಸಲು ಕೆಳಕ್ಕೆ ಡ್ರ್ಯಾಗ್ ಮಾಡಿ"</string>
<string name="pip_menu_title" msgid="4707292089961887657">"ಮೆನು"</string>
- <string name="pip_notification_title" msgid="3204024940158161322">"<xliff:g id="NAME">%s</xliff:g> ಚಿತ್ರದಲ್ಲಿನ ಚಿತ್ರದಲ್ಲಿದೆ"</string>
+ <string name="pip_notification_title" msgid="3204024940158161322">"<xliff:g id="NAME">%s</xliff:g> ಚಿತ್ರದಲ್ಲಿ ಚಿತ್ರವಾಗಿದೆ"</string>
<string name="pip_notification_message" msgid="5619512781514343311">"<xliff:g id="NAME">%s</xliff:g> ಈ ವೈಶಿಷ್ಟ್ಯ ಬಳಸುವುದನ್ನು ನೀವು ಬಯಸದಿದ್ದರೆ, ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಲು ಮತ್ತು ಅದನ್ನು ಆಫ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="pip_play" msgid="1417176722760265888">"ಪ್ಲೇ"</string>
<string name="pip_pause" msgid="8881063404466476571">"ವಿರಾಮಗೊಳಿಸಿ"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"ವಜಾಗೊಳಿಸಿ"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"ಸಿಸ್ಟಂ ನ್ಯಾವಿಗೇಷನ ಅಪ್‌ಡೇಟ್ ಮಾಡಲಾಗಿದೆ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲು, ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಹೋಗಿ."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"ಸಿಸ್ಟಂ ನ್ಯಾವಿಗೇಷನ್ ಅಪ್‌ಡೇಟ್ ಮಾಡಲು ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಹೋಗಿ"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"ಸ್ಟ್ಯಾಂಡ್‌ಬೈ"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"ಈ Android TV ಸಾಧನವು ಶೀಘ್ರವೇ ಆಫ್ ಆಗುತ್ತದೆ; ಇದನ್ನು ಆನ್‌ನಲ್ಲಿಡಲು ಬಟನ್ ಅನ್ನು ಒತ್ತಿರಿ."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"ಈ ಸಾಧನವು ಶೀಘ್ರವೇ ಆಫ್ ಆಗುತ್ತದೆ; ಇದನ್ನು ಆನ್‌ನಲ್ಲಿಡಲು ಒತ್ತಿರಿ."</string>
</resources>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index c57d98fc7774..2848a49168d9 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"이 앱의 알림을 계속 표시하시겠습니까?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"무음"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"주의를 끄는 알림"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"소리나 진동 없이 집중할 수 있도록 도와줍니다"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"소리나 진동으로 알립니다."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"이 알림은 수정할 수 없습니다."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"이 알림 그룹은 여기에서 설정할 수 없습니다."</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"프록시를 통한 알림"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"닫기"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"시스템 탐색이 업데이트되었습니다. 변경하려면 설정으로 이동하세요."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"설정으로 이동하여 시스템 탐색을 업데이트하세요."</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"대기"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV가 곧 꺼집니다. 계속 사용하려면 버튼을 누르세요."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"기기가 곧 꺼집니다. 계속 사용하려면 누르세요."</string>
</resources>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index b712d6299649..7a5e56831c1f 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Бул колдонмонун эскертмелери көрсөтүлө берсинби?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Үнсүз"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Шашылыш билдирүү"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Үн же дирилдөөсүз ой топтоого жардам берет."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Билдирүүдөн үн чыгат же дирилдейт."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Бул билдирмелерди өзгөртүүгө болбойт."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Бул билдирмелердин тобун бул жерде конфигурациялоого болбойт"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Прокси билдирмеси"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Жабуу"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Тутум чабыттоосу жаңыртылды. Өзгөртүү үчүн, Жөндөөлөргө өтүңүз."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Тутум чабыттоосун жаңыртуу үчүн Жөндөөлөргө өтүңүз"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Көшүү режими"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV түзмөгү жакында өчүрүлөт, аны күйүк боюнча калтыруу үчүн баскычты басыңыз."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Түзмөк жакында өчүрүлөт, күйүк боюнча калтыруу үчүн басып коюңуз."</string>
</resources>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index 7440be7563d8..550923cc43f9 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"ສະແດງການແຈ້ງເຕືອນຈາກແອັບນີ້ຕໍ່ໄປບໍ?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"ປິດສຽງ"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"ການເຕືອນ"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"ຟອງ"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"ຊ່ວຍທ່ານມີສະມາທິໂດຍບໍ່ໃຊ້ສຽງ ຫຼື ການສັ່ນເຕືອນ."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"ດຶງຄວາມສົນໃຈຂອງທ່ານດ້ວຍສຽງ ຫຼື ການສັ່ນເຕືອນ."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"ເອົາໃຈໃສ່ທາງລັດແບບລອຍໄປຫາເນື້ອຫານີ້."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"ບໍ່ສາມາດແກ້ໄຂການແຈ້ງເຕືອນເຫຼົ່ານີ້ໄດ້."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"ບໍ່ສາມາດຕັ້ງຄ່າກຸ່ມການແຈ້ງເຕືອນນີ້ຢູ່ບ່ອນນີ້ໄດ້"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"ການແຈ້ງເຕືອນແບບພຣັອກຊີ"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"ປິດໄວ້"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"ອັບເດດການນຳທາງລະບົບແລ້ວ. ເພື່ອປ່ຽນແປງ, ກະລຸນາໄປທີ່ການຕັ້ງຄ່າ."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"ໄປທີ່ການຕັ້ງຄ່າເພື່ອອັບເດດການນຳທາງລະບົບ"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"ສະແຕນບາຍ"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"ອຸປະກອນ Android TV ຈະປິດໃນອີກບໍ່ດົນ, ກົດປຸ່ມໃດໜຶ່ງເພື່ອເປີດມັນໄວ້ຕໍ່."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"ອຸປະກອນຈະປິດໃນອີກບໍ່ດົນ, ກົດເພື່ອເປີດມັນໄວ້ຕໍ່."</string>
</resources>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 4a2281d1e25b..584f5db97221 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -667,8 +667,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Toliau rodyti iš šios programos gautus pranešimus?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Tylūs"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Įspėti"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Debesėlis"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Padeda atkreipti dėmesį be garso arba vibravimo."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Atkreipia dėmesį garsu arba vibravimu."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Naudojant slankųjį spartųjį klavišą lengviau sutelkti dėmesį į šį turinį."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Šių pranešimų keisti negalima."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Šios grupės pranešimai čia nekonfigūruojami"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Per tarpinį serverį gautas pranešimas"</string>
@@ -956,4 +958,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Atmesti"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Sistemos naršymo funkcijos atnaujintos. Jei norite pakeisti, eikite į skiltį „Nustatymai“."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Eikite į skiltį „Nustatymai“, kad atnaujintumėte sistemos naršymo funkcijas"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Budėjimo laikas"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"„Android TV“ įrenginys netrukus išsijungs. Paspauskite mygtuką, kad jis liktų įjungtas."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Įrenginys netrukus išsijungs. Paspauskite, kad jis liktų įjungtas."</string>
</resources>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 250563632c86..807a0d8c1c8f 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -664,8 +664,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Vai turpināt rādīt paziņojumus no šīs lietotnes?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Klusums"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Brīdinājumu saņemšana"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Palīdz jums koncentrēties, nenovēršot uzmanību ar skaņu vai vibrāciju."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Jūsu uzmanība tiek piesaistīta ar skaņas vai vibrācijas signālu."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Šos paziņojumus nevar modificēt."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Šeit nevar konfigurēt šo paziņojumu grupu."</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Starpniekservera paziņojums"</string>
@@ -951,4 +955,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Nerādīt"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Sistēmas navigācija ir atjaunināta. Lai veiktu izmaiņas, atveriet iestatījumus."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Atveriet iestatījumus, lai atjauninātu sistēmas navigāciju"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Gaidstāve"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV ierīce drīz izslēgsies. Nospiediet pogu, lai tā paliktu ieslēgta."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Ierīce drīz izslēgsies. Nospiediet, lai tā paliktu ieslēgta."</string>
</resources>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index d2eab61a3afe..8b1071947bae 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Дали да продолжат да се прикажуваат известувања од апликацијава?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Тивко"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Предупредувај"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Балонче"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Ви помага да се концентрирате без звук или вибрации."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Ви го привлекува вниманието со звук или вибрации."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Ви го задржува вниманието со лебдечка кратенка на содржинава."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Овие известувања не може да се изменат"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Оваа група известувања не може да се конфигурира тука"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Известување преку прокси"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Отфрли"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Навигацијата на системот е ажурирана. За да извршите промени, одете во „Поставки“."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Одете во „Поставки“ за да ја ажурирате навигацијата на системот"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Подготвеност"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Уредот со Android TV наскоро ќе се исклучи, притиснете копче за да остане вклучен."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Уредот наскоро ќе се исклучи, притиснете за да остане вклучен."</string>
</resources>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index ca79e128da3b..a01340922b85 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"ഈ ആപ്പിൽ നിന്നുള്ള അറിയിപ്പുകൾ തുടർന്നും കാണിക്കണോ?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"നിശബ്‌ദം"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"മുന്നറിയിപ്പ് നൽകൽ"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"ശബ്‌ദമോ വൈബ്രേഷനോ ഇല്ലാതെ ശ്രദ്ധ കേന്ദ്രീകരിക്കാൻ നിങ്ങളെ സഹായിക്കുന്നു."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"ശബ്‌ദമോ വെെബ്രേഷനോ ഉപയോഗിച്ച് നിങ്ങളുടെ ശ്രദ്ധ ക്ഷണിക്കുന്നു."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"ഈ അറിയിപ്പുകൾ പരിഷ്ക്കരിക്കാനാവില്ല."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"അറിയിപ്പുകളുടെ ഈ ഗ്രൂപ്പ് ഇവിടെ കോണ്‍ഫിഗര്‍ ചെയ്യാൻ കഴിയില്ല"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"പ്രോക്‌സി അറിയിപ്പ്"</string>
@@ -845,8 +849,8 @@
<string name="pip_phone_settings" msgid="8080777499521528521">"ക്രമീകരണം"</string>
<string name="pip_phone_dismiss_hint" msgid="6351678169095923899">"തള്ളിക്കളയാൻ താഴേക്ക് വലിച്ചിടുക"</string>
<string name="pip_menu_title" msgid="4707292089961887657">"മെനു"</string>
- <string name="pip_notification_title" msgid="3204024940158161322">"<xliff:g id="NAME">%s</xliff:g> ചിത്രത്തിനുള്ളിലെ ചിത്രത്തിലാണ്"</string>
- <string name="pip_notification_message" msgid="5619512781514343311">"<xliff:g id="NAME">%s</xliff:g> ഈ ഫീച്ചർ ഉപയോഗിക്കുന്നതിൽ നിങ്ങൾക്ക് താൽപ്പര്യമില്ലെങ്കിൽ, ടാപ്പുചെയ്‌ത് ക്രമീകരണം തുറന്ന് അത് ഓഫാക്കുക."</string>
+ <string name="pip_notification_title" msgid="3204024940158161322">"<xliff:g id="NAME">%s</xliff:g> ചിത്രത്തിനുള്ളിൽ ചിത്രം രീതിയിലാണ്"</string>
+ <string name="pip_notification_message" msgid="5619512781514343311">"<xliff:g id="NAME">%s</xliff:g> ഈ ഫീച്ചർ ഉപയോഗിക്കേണ്ടെങ്കിൽ, ടാപ്പ് ചെയ്‌ത് ക്രമീകരണം തുറന്ന് അത് ഓഫാക്കുക."</string>
<string name="pip_play" msgid="1417176722760265888">"പ്ലേ ചെയ്യുക"</string>
<string name="pip_pause" msgid="8881063404466476571">"താൽക്കാലികമായി നിർത്തുക"</string>
<string name="pip_skip_to_next" msgid="1948440006726306284">"അടുത്തതിലേക്ക് പോകുക"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"ഡിസ്‌മിസ് ചെയ്യുക"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"സിസ്‌റ്റം നാവിഗേഷൻ അപ്‌ഡേറ്റ് ചെയ്‌തു. മാറ്റങ്ങൾ വരുത്താൻ ക്രമീകരണത്തിലേക്ക് പോവുക."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"സിസ്‌റ്റം നാവിഗേഷൻ അപ്‌ഡേറ്റ് ചെയ്യാൻ ക്രമീകരണത്തിലേക്ക് പോവുക"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"സ്‌റ്റാൻഡ്‌ബൈ"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android ടിവി ഉടൻ ഓഫാകും, ഓണാക്കി നിർത്താൻ ഒരു ബട്ടൺ അമർത്തുക."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"ഉപകരണം ഉടൻ ഓഫാകും, ഓണാക്കി നിർത്താൻ അമർത്തുക."</string>
</resources>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index 50bb578a56d2..fc07a8a3c34d 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Энэ аппаас мэдэгдэл харуулсан хэвээр байх уу?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Чимээгүй"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Дуутай"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Дуу эсвэл чичиргээгүйгээр танд төвлөрөхөд тусална."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Дуу эсвэл чичиргээгүйгээр таны анхаарлыг татна."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Эдгээр мэдэгдлийг өөрчлөх боломжгүй."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Энэ бүлэг мэдэгдлийг энд тохируулах боломжгүй байна"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Прокси хийсэн мэдэгдэл"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Үл хэрэгсэх"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Системийн навигацыг шинэчиллээ. Өөрчлөхийн тулд Тохиргоо руу очно уу."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Системийн навигацыг шинэчлэхийн тулд Тохиргоо руу очно уу"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Зогсолтын горим"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Андройд ТВ төхөөрөмж удахгүй унтрах тул асаалттай хэвээр байлгахын тулд дарна уу."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Төхөөрөмж удахгүй унтрах тул асаалттай хэвээр байлгахын тулд дарна уу."</string>
</resources>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index d6a54f89fa51..e41ac3b65ae2 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"या अ‍ॅपकडील सूचना दाखवणे सुरू ठेवायचे?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"सायलंट"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"सूचना देत आहे"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"आवाज किंवा व्हायब्रेशनशिवाय तुम्हाला लक्ष केंद्रित करण्यास मदत करते."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"आवाज किंवा व्हायब्रेशनने तुमचे लक्ष वेधून घेते."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"या सूचनांमध्ये सुधारणा केली जाऊ शकत नाही."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"या सूचनांचा संच येथे कॉन्फिगर केला जाऊ शकत नाही"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"प्रॉक्सी केलेल्या सूचना"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"डिसमिस करा"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"सिस्टम नेव्हिगेशन अपडेट केले. बदल करण्यासाठी, सेटिंग्जवर जा."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"सिस्टम नेव्हिगेशन अपडेट करण्यासाठी सेटिंग्जवर जा"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"स्टँडबाय"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV डिव्हाइस लवकरच बंद होणार आहे; सुरू ठेवण्यासाठी बटण दाबा."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"डिव्हाइस लवकरच बंद होणार आहे; सुरू ठेवण्यासाठी दाबा."</string>
</resources>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 0faaa5f64356..880a4d92aacc 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Terus tunjukkan pemberitahuan daripada apl ini?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Senyap"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Memaklumi"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Gelembung"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Membantu anda fokus tanpa bunyi atau getaran."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Menarik perhatian anda dengan bunyi atau getaran."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Memastikan anda memberikan perhatian dengan pintasan terapung ke kandungan ini."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Pemberitahuan ini tidak boleh diubah suai."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Kumpulan pemberitahuan ini tidak boleh dikonfigurasikan di sini"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Pemberitahuan berproksi"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Ketepikan"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Navigasi sistem dikemas kini. Untuk membuat perubahan, pergi ke Tetapan."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Pergi ke Tetapan untuk mengemas kini navigasi sistem"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Tunggu sedia"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Peranti Android TV akan mati tidak lama lagi; tekan butang untuk memastikan peranti terus hidup."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Peranti akan mati tidak lama lagi; tekan untuk memastikan peranti terus hidup."</string>
</resources>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index 566dc6632405..2b7dab7efd1f 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"ဤအက်ပ်ထံမှ အကြောင်းကြားချက်များကို ဆက်ပြလိုပါသလား။"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"အသံတိတ်ရန်"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"သတိပေးခြင်း"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"အသံ သို့မဟုတ် တုန်ခါမှု မပါဘဲ အာရုံစိုက်နိုင်စေရန် ကူညီပေးသည်။"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"အသံ သို့မဟုတ် တုန်ခါမှုဖြင့် အာရုံစိုက်လာအောင် ပြုလုပ်သည်။"</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"ဤအကြောင်းကြားချက်များကို ပြုပြင်၍ မရပါ။"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"ဤအကြောင်းကြားချက်အုပ်စုကို ဤနေရာတွင် စီစဉ်သတ်မှတ်၍ မရပါ"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"ပရောက်စီထည့်ထားသော အကြောင်းကြားချက်"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"ပယ်ရန်"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"စနစ်လမ်းညွှန်ခြင်း အပ်ဒိတ်လုပ်ပြီးပါပြီ။ အပြောင်းအလဲများ ပြုလုပ်ရန် \'ဆက်တင်များ\' သို့သွားပါ။"</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"စနစ်လမ်းညွှန်ခြင်း အပ်ဒိတ်လုပ်ရန် \'ဆက်တင်များ\' သို့သွားပါ"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"အသင့်အနေအထား"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV စက်သည် မကြာမီ ပိတ်သွားပါမည်၊ ဆက်ဖွင့်ထားရန် ခလုတ်တစ်ခုနှိပ်ပါ။"</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"စက်သည် အကြာမီ ပိတ်သွားပါမည်၊ ဆက်ဖွင့်ထားပါ။"</string>
</resources>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index aabdd8b9cc3f..e76b9e2f962d 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Vil du fortsette å vise varsler fra denne appen?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Lydløs"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Varsling"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Boble"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Hjelper deg med å fokusere uten lyd eller vibrering."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Får oppmerksomheten din med lyd eller vibrering."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Holder deg oppmerksom med en svevende snarvei til dette innholdet."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Disse varslene kan ikke endres."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Denne varselgruppen kan ikke konfigureres her"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Omdirigert varsel"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Avvis"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Systemnavigeringen er oppdatert. For å gjøre endringer, gå til Innstillinger."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Gå til Innstillinger for å oppdatere systemnavigeringen"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Ventemodus"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV-enheten slås snart av. Trykk på en knapp for å holde den på."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Enheten slås snart av. Trykk for å holde den på."</string>
</resources>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index ebffa2f117e7..86b6d76f62f6 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"यो अनुप्रयोगका सूचनाहरू देखाउने क्रम जारी राख्ने हो?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"मौन"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"सतर्क गराउँदै"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"तपाईंलाई आवाज वा कम्पनविना ध्यान केन्द्रित गर्न मद्दत गर्छ।"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"ध्वनि वा कम्पनमार्फत तपाईंको ध्यान आकर्षित गर्छ।"</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"यी सूचनाहरू परिमार्जन गर्न मिल्दैन।"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"यहाँबाट सूचनाहरूको यो समूह कन्फिगर गर्न सकिँदैन"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"प्रोक्सीमार्फत आउने सूचना"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"हटाउनुहोस्"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"प्रणालीको नेभिगेसन अद्यावधिक गरियो। परिवर्तन गर्न सेटिङमा जानुहोस्।"</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"प्रणालीको नेभिगेसन अद्यावधिक गर्न सेटिङमा जानुहोस्"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"स्ट्यान्डबाई"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV यन्त्र चाँडै निष्क्रिय हुने छ; सक्रिय राख्न कुनै बटन थिच्नुहोस्।"</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"यो यन्त्र चाँडै निष्क्रिय हुने छ; सक्रिय राख्न थिच्नुहोस्।"</string>
</resources>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index aa68dcee0c28..527af29750e4 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Meldingen van deze app blijven weergeven?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Stil"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Waarschuwen"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Bubbel"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Helpt je focussen zonder geluid of trilling."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Trekt je aandacht met geluid of trillingen."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Trekt de aandacht met een zwevende snelkoppeling naar deze content."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Deze meldingen kunnen niet worden aangepast."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Deze groep meldingen kan hier niet worden geconfigureerd"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Melding via proxy"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Sluiten"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Systeemnavigatie geüpdatet. Als je wijzigingen wilt aanbrengen, ga je naar Instellingen."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Ga naar Instellingen om de systeemnavigatie te updaten"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Stand-by"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Het Android TV-apparaat wordt binnenkort uitgeschakeld. Druk op een knop om het ingeschakeld te houden."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Het apparaat wordt binnenkort uitgeschakeld. Druk om het ingeschakeld te houden."</string>
</resources>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index 098519654a9a..c401d75fe8ee 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"ଏହି ଆପ୍‌ରୁ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଦେଖାଇବା ଜାରି ରଖିବେ?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"ନୀରବ"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"ଆଲର୍ଟ କରିବା"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"ବିନା ସାଉଣ୍ଡ କିମ୍ବା ଭାଇବ୍ରେସନ୍‌ରେ ଆପଣଙ୍କୁ ଫୋକସ୍ କରିବାରେ ସାହାଯ୍ୟ କରେ।"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"ସାଉଣ୍ଡ କିମ୍ବା ଭାଇବ୍ରେସନ୍ ମାଧ୍ୟମରେ ଆପଣଙ୍କର ଧ୍ୟାନ ଆକର୍ଷିତ କରିଥାଏ।"</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ପରିବର୍ତ୍ତନ କରିହେବ ନାହିଁ।"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"ଏଠାରେ ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକର ଗ୍ରୁପ୍ କନଫ୍ୟୁଗର୍ କରାଯାଇପାରିବ ନାହିଁ"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"ବିଜ୍ଞପ୍ତି ପ୍ରକ୍ସୀ ହୋଇଛି"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"ଖାରଜ କରନ୍ତୁ"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"ସିଷ୍ଟମ୍ ନାଭିଗେସନ୍ ଅପ୍‌ଡେଟ୍ ହୋଇଛି। ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ, ସେଟିଂସ୍‌କୁ ଯାଆନ୍ତୁ।"</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"ସିଷ୍ଟମ୍ ନାଭିଗେସନ୍ ଅପ୍‌ଡେଟ୍ କରିବା ପାଇଁ ସେଟିଂସ୍‍କୁ ଯାଆନ୍ତୁ"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"ଷ୍ଟାଣ୍ଡବାଏ"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android ଟିଭି ଡିଭାଇସ୍ ଶୀଘ୍ର ବନ୍ଦ ହୋଇଯିବ; ଏହା ଚାଲୁ ରଖିବା ପାଇଁ ଏକ ବଟନ୍ ଦବାନ୍ତୁ।"</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"ଡିଭାଇସ୍ ଶୀଘ୍ର ବନ୍ଦ ହୋଇଯିବ; ଚାଲୁ ରଖିବା ପାଇଁ ଦବାନ୍ତୁ।"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index cf7f3e99d433..fc5aea36919f 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"ਕੀ ਇਸ ਐਪ ਤੋਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਦਿਖਾਉਣਾ ਜਾਰੀ ਰੱਖਣਾ ਹੈ?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"ਸ਼ਾਂਤ"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"ਸੁਚੇਤਨਾ"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"ਤੁਹਾਨੂੰ ਬਿਨਾਂ ਧੁਨੀ ਅਤੇ ਥਰਥਰਾਹਟ ਦੇ ਫੋਕਸ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ।"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"ਧੁਨੀ ਅਤੇ ਥਰਥਰਾਹਟ ਨਾਲ ਤੁਹਾਡਾ ਧਿਆਨ ਖਿੱਚਦੀ ਹੈ।"</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"ਇਹਨਾਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਸੋਧਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"ਇਹ ਸੂਚਨਾਵਾਂ ਦਾ ਗਰੁੱਪ ਇੱਥੇ ਸੰਰੂਪਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"ਇੱਕ ਐਪ ਦੀ ਥਾਂ \'ਤੇ ਦੂਜੀ ਐਪ ਰਾਹੀਂ ਦਿੱਤੀ ਗਈ ਸੂਚਨਾ"</string>
@@ -845,7 +849,7 @@
<string name="pip_phone_settings" msgid="8080777499521528521">"ਸੈਟਿੰਗਾਂ"</string>
<string name="pip_phone_dismiss_hint" msgid="6351678169095923899">"ਖਾਰਜ ਕਰਨ ਲਈ ਹੇਠਾਂ ਘਸੀਟੋ"</string>
<string name="pip_menu_title" msgid="4707292089961887657">"ਮੀਨੂ"</string>
- <string name="pip_notification_title" msgid="3204024940158161322">"<xliff:g id="NAME">%s</xliff:g> ਤਸਵੀਰ-ਵਿੱਚ-ਤਸਵੀਰ \'ਚ ਹੈ"</string>
+ <string name="pip_notification_title" msgid="3204024940158161322">"<xliff:g id="NAME">%s</xliff:g> ਤਸਵੀਰ-ਅੰਦਰ-ਤਸਵੀਰ ਵਿੱਚ ਹੈ"</string>
<string name="pip_notification_message" msgid="5619512781514343311">"ਜੇਕਰ ਤੁਸੀਂ ਨਹੀਂ ਚਾਹੁੰਦੇ ਕਿ <xliff:g id="NAME">%s</xliff:g> ਐਪ ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਦੀ ਵਰਤੋਂ ਕਰੇ, ਤਾਂ ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹਣ ਲਈ ਟੈਪ ਕਰੋ ਅਤੇ ਇਸਨੂੰ ਬੰਦ ਕਰੋ।"</string>
<string name="pip_play" msgid="1417176722760265888">"ਚਲਾਓ"</string>
<string name="pip_pause" msgid="8881063404466476571">"ਵਿਰਾਮ ਦਿਓ"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"ਖਾਰਜ ਕਰੋ"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"ਸਿਸਟਮ ਨੈਵੀਗੇਸ਼ਨ ਅੱਪਡੇਟ ਹੋ ਗਿਆ। ਤਬਦੀਲੀਆਂ ਕਰਨ ਲਈ, ਸੈਟਿੰਗਾਂ \'ਤੇ ਜਾਓ।"</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"ਸਿਸਟਮ ਨੈਵੀਗੇਸ਼ਨ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਸੈਟਿੰਗਾਂ \'ਤੇ ਜਾਓ"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"ਸਟੈਂਡਬਾਈ"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV ਡੀਵਾਈਸ ਜਲਦ ਹੀ ਬੰਦ ਹੋ ਜਾਵੇਗਾ; ਇਸਨੂੰ ਚਾਲੂ ਰੱਖਣ ਲਈ ਕੋਈ ਬਟਨ ਦਬਾਓ।"</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"ਡੀਵਾਈਸ ਜਲਦ ਹੀ ਬੰਦ ਹੋ ਜਾਵੇਗਾ, ਇਸਨੂੰ ਚਾਲੂ ਰੱਖਣ ਲਈ ਦਬਾਓ।"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index dc79963fd92d..3360a6e28b2c 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -388,7 +388,7 @@
<string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"Do wschodu słońca"</string>
<string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"Włącz o <xliff:g id="TIME">%s</xliff:g>"</string>
<string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"Do <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Ciemny motyw"</string>
+ <string name="quick_settings_ui_mode_night_label" msgid="3419947801072692538">"Tryb ciemny"</string>
<string name="quick_settings_ui_mode_night_label_battery_saver" msgid="7438725724589758362">"Ciemny motyw\nOszczędzanie baterii"</string>
<string name="quick_settings_nfc_label" msgid="9012153754816969325">"Komunikacja NFC"</string>
<string name="quick_settings_nfc_off" msgid="6883274004315134333">"Komunikacja NFC jest wyłączona"</string>
@@ -667,8 +667,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Nadal pokazywać powiadomienia z tej aplikacji?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Bez dźwięku"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Alert"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Dymek"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Pomaga Ci się skupić, nie sygnalizując niczego dźwiękiem ani wibracjami."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Przyciąga uwagę dźwiękiem lub wibracjami."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Przyciąga uwagę dzięki pływającym skrótom do treści."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Tych powiadomień nie można zmodyfikować."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Tej grupy powiadomień nie można tu skonfigurować"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Powiadomienie w zastępstwie"</string>
@@ -956,4 +958,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Zamknij"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Nawigacja w systemie została zaktualizowana. Aby wprowadzić zmiany, otwórz Ustawienia."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Otwórz Ustawienia, by zaktualizować nawigację w systemie"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Tryb gotowości"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Urządzenie z Androidem TV za chwilę się wyłączy. Naciśnij przycisk, by pozostało włączone."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Urządzenie za chwilę się wyłączy. Naciśnij, by pozostało włączone."</string>
</resources>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index a9a03094ff99..dbe9bdcf6de3 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Continuar mostrando notificações desse app?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Silenciosa"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Alertar"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Bolha"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Ajuda você a manter o foco sem som ou vibração."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Chama sua atenção com som ou vibração."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Mantém sua atenção com um atalho flutuante para esse conteúdo."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Não é possível modificar essas notificações."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Não é possível configurar esse grupo de notificações aqui"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Notificação salva no proxy"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Dispensar"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Navegação no sistema atualizada. Se quiser alterá-la, acesse as configurações."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Acesse as configurações para atualizar a navegação no sistema"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Em espera"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"O dispositivo Android TV entrará no modo de espera em breve. Pressione um botão para mantê-lo ativado."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"O dispositivo entrará no modo de espera em breve. Pressione para mantê-lo ativado."</string>
</resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index ef59a5e91713..7e2ed706e5de 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Pretende continuar a ver notificações desta aplicação?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Silencioso"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Alertar"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Balão"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Ajuda-o a focar-se sem som ou vibração."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Chama a sua atenção com som ou vibração."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Mantém a sua atenção com um atalho flutuante para este conteúdo."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Não é possível modificar estas notificações."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Não é possível configurar este grupo de notificações aqui."</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Notificação de aplicação proxy"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Ignorar"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"A navegação no sistema foi atualizada. Para efetuar alterações, aceda às Definições."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Aceda às Definições para atualizar a navegação no sistema."</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Modo de espera"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"O dispositivo Android TV irá desligar-se brevemente. Prima um botão para o manter ligado."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"O dispositivo irá desligar-se brevemente. Prima para o manter ligado."</string>
</resources>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index a9a03094ff99..dbe9bdcf6de3 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Continuar mostrando notificações desse app?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Silenciosa"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Alertar"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Bolha"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Ajuda você a manter o foco sem som ou vibração."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Chama sua atenção com som ou vibração."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Mantém sua atenção com um atalho flutuante para esse conteúdo."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Não é possível modificar essas notificações."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Não é possível configurar esse grupo de notificações aqui"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Notificação salva no proxy"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Dispensar"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Navegação no sistema atualizada. Se quiser alterá-la, acesse as configurações."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Acesse as configurações para atualizar a navegação no sistema"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Em espera"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"O dispositivo Android TV entrará no modo de espera em breve. Pressione um botão para mantê-lo ativado."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"O dispositivo entrará no modo de espera em breve. Pressione para mantê-lo ativado."</string>
</resources>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index a4618d3e8ba4..1822acf96034 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -664,8 +664,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Doriți să continuați afișarea notificărilor de la această aplicație?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Silențios"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Alertare"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Balon"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Vă ajută să vă concentrați fără sunet sau vibrare."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Vă atrage atenția fără sunet sau vibrare."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Vă atrage atenția printr-o comandă rapidă flotantă la acest conținut."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Aceste notificări nu pot fi modificate."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Acest grup de notificări nu poate fi configurat aici"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Notificare prin proxy"</string>
@@ -951,4 +953,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Închideți"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Navigarea în sistem a fost actualizată. Pentru a face modificări, accesați Setările."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Accesați Setările pentru a actualiza navigarea în sistem"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Standby"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Dispozitivul Android TV se va opri în curând. Apăsați un buton pentru a-l menține pornit."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Dispozitivul se va opri în curând. Apăsați pentru a-l menține pornit."</string>
</resources>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 9574f0c91635..681986c7d8af 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -667,8 +667,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Показывать уведомления от этого приложения?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Без звука"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Оповещения"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Всплывающая подсказка"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Уведомления приходят без звука и вибрации"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Уведомления приходят со звуком или вибрацией"</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Привлекает ваше внимание к контенту с помощью плавающего ярлыка"</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Эти уведомления нельзя изменить."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Эту группу уведомлений нельзя настроить здесь."</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Уведомление отправлено через прокси-сервер."</string>
@@ -956,4 +958,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Закрыть"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Параметры навигации в системе обновлены. Чтобы изменить их, перейдите в настройки."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Чтобы обновить параметры навигации в системе, перейдите в настройки."</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Переход в режим ожидания"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Устройство Android TV скоро выключится. Чтобы этого не произошло, нажмите любую кнопку."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Устройство скоро выключится. Чтобы этого не произошло, нажмите любую кнопку или коснитесь экрана."</string>
</resources>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index 2876eb90c4f0..5aaae53dc1f8 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"මෙම යෙදුම වෙතින් දැනුම්දීම් පෙන්වමින් තබන්නද?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"නිහඬ"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"ඇඟවීම"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"ඔබට ශබ්දය හෝ කම්පනය නොමැතිව අවධානය යොමු කිරීමට උදවු කරයි."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"ශබ්දය හෝ කම්පනය සමඟ ඔබේ අවධානය ලබා ගනී."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"මෙම දැනුම්දීම් වෙනස් කළ නොහැක."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"මෙම දැනුම්දීම් සමූහය මෙහි වින්‍යාස කළ නොහැක"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"ප්‍රොක්සි කළ දැනුම්දීම"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"ඉවතලන්න"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"පද්ධති සංචලනය යාවත්කාලීන කළා. වෙනස්කම් සිදු කිරීමට, සැකසීම් වෙත යන්න."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"පද්ධති සංචලනය යාවත්කාලීන කිරීමට සැකසීම් වෙත යන්න"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"පොරොත්තු"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV උපාංගය ඉක්මනින් ක්‍රියා විරහිත වනු ඇත; එය දිගටම ක්‍රියාත්මක කර තැබීමට බොත්තමක් ඔබන්න."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"උපාංගය ඉක්මනින් ක්‍රියා විරහිත වනු ඇත; එය දිගටම ක්‍රියාත්මක කර තැබීමට ඔබන්න."</string>
</resources>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index a969932d6f38..034827ae1932 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -667,8 +667,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Majú sa upozornenia z tejto aplikácie naďalej zobrazovať?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Tiché"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Varovné"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Bublina"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Pomáha vám sústrediť sa bez zvukov či vibrácií."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Upúta vás zvukom alebo vibráciami."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Upúta vás plávajúcim odkazom na tento obsah."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Tieto upozornenia sa nedajú upraviť."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Túto skupinu upozornení nejde na tomto mieste konfigurovať"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Približné upozornenie"</string>
@@ -956,4 +958,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Zavrieť"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Navigácia v systéme bola aktualizovaná. Ak chcete vykonať zmeny, prejdite do Nastavení."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Prejdite do Nastavení a aktualizujte navigáciu v systéme"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Pohotovostný režim"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Zariadenie Android TV sa čoskoro vypne. Ak ho chcete ponechať zapnuté, stlačte ľubovoľné tlačidlo."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Zariadenie sa čoskoro vypne. Ak ho chcete ponechať zapnuté, stlačte ľubovoľné tlačidlo."</string>
</resources>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 9e4045f588d2..f02a038b4c21 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -667,8 +667,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Želite, da so obvestila te aplikacije še naprej prikazana?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Tiho"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Z opozorilom"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Mehurček"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Nemoteč prikaz brez zvoka ali vibriranja"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Pritegne vašo pozornost z zvokom ali vibriranjem"</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Zadrži vašo pozornost z lebdečo bližnjico do te vsebine."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Za ta obvestila ni mogoče spremeniti nastavitev."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Te skupine obvestil ni mogoče konfigurirati tukaj"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Posredovano obvestilo"</string>
@@ -956,4 +958,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Opusti"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Krmarjenje po sistemu je posodobljeno. Če želite opraviti spremembe, odprite nastavitve."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Če želite posodobiti krmarjenje po sistemu, odprite nastavitve"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Stanje pripravljenosti"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Naprava Android TV se bo kmalu izklopila. Če tega ne želite, pritisnite poljuben gumb."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Naprava se bo kmalu izklopila. Če tega ne želite, pritisnite poljuben gumb."</string>
</resources>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index 6ce621c92d5c..41eccccd4547 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -222,7 +222,7 @@
<skip />
<string name="accessibility_notification_dismissed" msgid="854211387186306927">"Njoftimi është hequr."</string>
<string name="accessibility_desc_notification_shade" msgid="4690274844447504208">"Streha e njoftimeve."</string>
- <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"Cilësime të shpejta."</string>
+ <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"Cilësimet e shpejta."</string>
<string name="accessibility_desc_lock_screen" msgid="5625143713611759164">"Ekrani i kyçjes."</string>
<string name="accessibility_desc_settings" msgid="3417884241751434521">"Cilësimet"</string>
<string name="accessibility_desc_recent_apps" msgid="4876900986661819788">"Përmbledhja."</string>
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Do të vazhdosh t\'i shfaqësh njoftimet nga ky aplikacion?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Në heshtje"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Sinjalizimi"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Flluskë"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Të ndihmon të fokusohesh pa tinguj ose dridhje."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Të tërheq vëmendjen me tinguj ose dridhje."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Mbaje vëmendjen tënde me një shkurtore pluskuese te kjo përmbajtje."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Këto njoftime nuk mund të modifikohen."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Ky grup njoftimesh nuk mund të konfigurohet këtu"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Njoftim i dërguar me përfaqësues"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Hiq"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Navigimi i sistemit u përditësua. Për të bërë ndryshime, shko te \"Cilësimet\"."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Shko te \"Cilësimet\" për të përditësuar navigimin e sistemit"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Në gatishmëri"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Pajisja Android TV së shpejti do të fiket. Shtyp një buton për ta mbajtur të ndezur."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Pajisja së shpejti do të fiket. Shtype për ta mbajtur të ndezur."</string>
</resources>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 50775d94090f..e87d406687a4 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -664,8 +664,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Желите ли да се обавештења из ове апликације и даље приказују?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Нечујно"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Упозоравање"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Облачић"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Помаже вам да се концентришете без звука или вибрације."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Привлачи вам пажњу помоћу звука или вибрације."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Привлачи вам пажњу помоћу плутајуће пречице до овог садржаја."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Ова обавештења не могу да се мењају."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Ова група обавештења не може да се конфигурише овде"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Обавештење преко проксија"</string>
@@ -951,4 +953,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Одбаци"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Навигација система је ажурирана. Да бисте унели измене, идите у Подешавања."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Идите у Подешавања да бисте ажурирали навигацију система"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Стање приправности"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV ће се ускоро искључити. Притисните дугме да би остао укључен."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Уређај ће се ускоро искључити. Притисните да би остао укључен."</string>
</resources>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index c7fb27c580df..70b89a649e43 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Vill du fortsätta visa aviseringar för den här appen?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Tyst"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Påkallar uppmärksamhet"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Bubbla"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Inga ljud eller vibrationer som stör koncentrationen."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Påkallar uppmärksamhet med ljud eller vibrationer."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Behåller din uppmärksamhet med en flytande genväg till innehållet."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Det går inte att ändra de här aviseringarna."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Den här aviseringsgruppen kan inte konfigureras här"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Avisering via proxy"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Stäng"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Systemnavigeringen har uppdaterats. Öppna inställningarna om du vill ändra något."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Öppna inställningarna och uppdatera systemnavigeringen"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Viloläge"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV-enheten stängs snart av. Tryck på en knapp för att behålla den på."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Enheten stängs snart av. Tryck för att behålla den på."</string>
</resources>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 12851eb23ca4..b6568f42b8ec 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Ungependa kuendelea kuonyesha arifa kutoka programu hii?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Kimya"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Kutoa arifa"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Kiputo"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Hukusaidia kuwa makini bila sauti au mtetemo."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Hupata umakinifu wako kwa sauti na mtetemo."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Huweka umakinifu wako kwenye maudhui haya kwa kutumia njia ya mkato ya kuelea."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Arifa hizi haziwezi kubadilishwa."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Kikundi hiki cha arifa hakiwezi kuwekewa mipangilio hapa"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Arifa wakilishi"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Ondoa"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Umesasisha usogezaji kwenye mfumo. Ili ufanye mabadiliko, nenda kwenye Mipangilio."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Nenda kwenye mipangilio ili usasishe usogezaji kwenye mfumo"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Hali tuli"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Kifaa cha Android TV kitazima hivi karibuni; bonyeza kitufe ili kisizime."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Kifaa kitazima hivi karibuni; bonyeza ili kisizime."</string>
</resources>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index 0d49f273c0c9..92fb88aa5865 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"இந்த ஆப்ஸின் அறிவிப்புகளைத் தொடர்ந்து காட்டவா?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"நிசப்தம்"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"விழிப்பூட்டல்"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"ஒலியோ அதிர்வோ இல்லாமல் முழு கவனம் செலுத்த உதவும்."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"ஒலியோ அதிர்வோ ஏற்படுத்தி உங்கள் கவனத்தை ஈர்க்கும்."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"இந்த அறிவிப்புகளை மாற்ற இயலாது."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"இந்த அறிவுப்புக் குழுக்களை இங்கே உள்ளமைக்க இயலாது"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"ப்ராக்ஸியான அறிவிப்பு"</string>
@@ -846,7 +850,7 @@
<string name="pip_phone_dismiss_hint" msgid="6351678169095923899">"நிராகரிக்க, கீழே இழுக்கவும்"</string>
<string name="pip_menu_title" msgid="4707292089961887657">"மெனு"</string>
<string name="pip_notification_title" msgid="3204024940158161322">"<xliff:g id="NAME">%s</xliff:g> தற்போது பிக்ச்சர்-இன்-பிக்ச்சரில் உள்ளது"</string>
- <string name="pip_notification_message" msgid="5619512781514343311">"<xliff:g id="NAME">%s</xliff:g> இந்த அம்சத்தைப் பயன்படுத்த வேண்டாம் என நினைத்தால், அமைப்புகளைத் திறந்து அதை முடக்க, தட்டவும்."</string>
+ <string name="pip_notification_message" msgid="5619512781514343311">"<xliff:g id="NAME">%s</xliff:g> இந்த அம்சத்தைப் பயன்படுத்த வேண்டாம் என நினைத்தால் இங்கு தட்டி அமைப்புகளைத் திறந்து இதை முடக்கவும்."</string>
<string name="pip_play" msgid="1417176722760265888">"இயக்கு"</string>
<string name="pip_pause" msgid="8881063404466476571">"இடைநிறுத்து"</string>
<string name="pip_skip_to_next" msgid="1948440006726306284">"அடுத்ததற்குச் செல்"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"மூடுக"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"சிஸ்டம் நேவிகேஷன் மாற்றப்பட்டது. மாற்றங்களைச் செய்ய ‘அமைப்புகளுக்குச்’ செல்லவும்."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"சிஸ்டம் நேவிகேஷனை மாற்ற ’அமைப்புகளுக்குச்’ செல்லவும்"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"இயக்க நேரம்"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV விரைவில் ஆஃப் ஆகலாம். இதைத் தொடர்ந்து ஆனில் வைக்க ஒரு பட்டனைத் தட்டவும்."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"இந்தச் சாதனம் விரைவில் ஆஃப் ஆகலாம். இதைத் தொடர்ந்து ஆனில் வைக்கத் தட்டவும்."</string>
</resources>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index 1600df790362..f5933a4c5417 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"ఈ యాప్ నుండి నోటిఫికేషన్‌లను చూపిస్తూ ఉండాలా?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"నిశ్శబ్దం"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"హెచ్చరించడం"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"బబుల్"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"శబ్దం లేదా వైబ్రేషన్ లేకుండా దృష్టి కేంద్రీకరించడానికి మీకు సహాయపడుతుంది."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"శబ్దం లేదా వైబ్రేషన్‌తో మీరు దృష్టి సారించేలా చేస్తుంది."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"ఫ్లోటింగ్ షార్ట్‌కట్‌తో మీ దృష్టిని ఈ కంటెంట్‌పై నిలిపి ఉంచుతుంది."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"ఈ నోటిఫికేషన్‌లను సవరించడం వీలుపడదు."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"ఈ నోటిఫికేషన్‌ల సమూహాన్ని ఇక్కడ కాన్ఫిగర్ చేయలేము"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"ప్రాక్సీ చేయబడిన నోటిఫికేషన్"</string>
@@ -846,7 +848,7 @@
<string name="pip_phone_dismiss_hint" msgid="6351678169095923899">"తీసివేయడానికి కిందికి లాగండి"</string>
<string name="pip_menu_title" msgid="4707292089961887657">"మెను"</string>
<string name="pip_notification_title" msgid="3204024940158161322">"<xliff:g id="NAME">%s</xliff:g> చిత్రంలో చిత్రం రూపంలో ఉంది"</string>
- <string name="pip_notification_message" msgid="5619512781514343311">"<xliff:g id="NAME">%s</xliff:g> ఈ లక్షణాన్ని ఉపయోగించకూడదు అని మీరు అనుకుంటే, సెట్టింగ్‌లను తెరవడానికి నొక్కి, దీన్ని ఆఫ్ చేయండి."</string>
+ <string name="pip_notification_message" msgid="5619512781514343311">"<xliff:g id="NAME">%s</xliff:g> ఈ లక్షణాన్ని ఉపయోగించకూడదు అని మీరు అనుకుంటే, సెట్టింగ్‌లను తెరవడానికి ట్యాప్ చేసి, దీన్ని ఆఫ్ చేయండి."</string>
<string name="pip_play" msgid="1417176722760265888">"ప్లే చేయి"</string>
<string name="pip_pause" msgid="8881063404466476571">"పాజ్ చేయి"</string>
<string name="pip_skip_to_next" msgid="1948440006726306284">"దాటవేసి తర్వాత దానికి వెళ్లు"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"విస్మరించు"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"సిస్టమ్ నావిగేషన్ అప్‌డేట్ చేయబడింది. మార్పులు చేయడానికి, సెట్టింగ్‌లకు వెళ్లండి."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"సిస్టమ్ నావిగేషన్‌ను అప్‌డేట్ చేయడానికి సెట్టింగ్‌లకు వెళ్లండి"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"స్టాండ్‌బై"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV పరికరం త్వరలో ఆఫ్ అయిపోతుంది; దాన్ని ఆన్‌లో ఉంచడానికి బటన్‌ను నొక్కండి."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"పరికరం త్వరలో ఆఫ్ అయిపోతుంది; దీన్ని ఆన్‌లో ఉంచడానికి నొక్కండి."</string>
</resources>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 554009e2dd29..9df8f327e5c8 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"แสดงการแจ้งเตือนจากแอปนี้ต่อไปไหม"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"เงียบ"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"แจ้งเตือน"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"ช่วยรักษาสมาธิของคุณด้วยการไม่ส่งเสียงหรือสั่น"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"ดึงความสนใจของคุณด้วยเสียงและการสั่น"</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"แก้ไขการแจ้งเตือนเหล่านี้ไม่ได้"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"การแจ้งเตือนกลุ่มนี้กำหนดค่าที่นี่ไม่ได้"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"การแจ้งเตือนที่ผ่านพร็อกซี"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"ปิด"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"อัปเดตการไปยังส่วนต่างๆ ของระบบแล้ว หากต้องการเปลี่ยนแปลง ให้ไปที่การตั้งค่า"</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"ไปที่การตั้งค่าเพื่ออัปเดตการไปยังส่วนต่างๆ ของระบบ"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"สแตนด์บาย"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"อุปกรณ์ Android TV จะปิดเครื่องในอีกไม่ช้า กดปุ่มเพื่อเปิดอุปกรณ์ต่อไป"</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"อุปกรณ์จะปิดเครื่องในอีกไม่ช้า กดเพื่อเปิดอุปกรณ์ต่อไป"</string>
</resources>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 309265ad6ef7..a3a79869268b 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Patuloy na ipakita ang mga notification mula sa app na ito?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Naka-silent"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Mag-alerto"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Nakakatulong sa iyong tumuon nang walang tunog o pag-vibrate."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Kinukuha ang iyong atensyon sa pamamagitan ng tunog o pag-vibrate."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Hindi puwedeng baguhin ang mga notification na ito."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Hindi mako-configure dito ang pangkat na ito ng mga notification"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Na-proxy na notification"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"I-dismiss"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Na-update na ang pag-navigate ng system. Para gumawa ng mga pagbabago, pumunta sa Mga Setting."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Pumunta sa Mga Setting para i-update ang pag-navigate sa system"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Standby"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Mag-o-off na ang Android TV device; pumindot ng button para panatilihin itong naka-on."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Mag-o-off na ang device; pumindot para panatilihin itong naka-on."</string>
</resources>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index b200ac641bc2..f176f1770738 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Bu uygulamadan gelen bildirimler gösterilmeye devam edilsin mi?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Sessiz"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Uyarı"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Ses veya titreşim olmadan odaklanmanıza yardımcı olur."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Ses veya titreşimle dikkatinizi çeker."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Bu bildirimler değiştirilemez."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Bu bildirim grubu burada yapılandırılamaz"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Proxy uygulanan bildirim"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Kapat"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Sistemde gezinme yöntemi güncellendi. Değişiklik yapmak için Ayarlar\'a gidin."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Sistemde gezinme yöntemini güncellemek için Ayarlar\'a gidin"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Beklemeye alınıyor"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV cihazı kısa süre içinde kapanacak; açık tutmak için bir düğmeye basın."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Cihaz kısa süre içinde kapanacak; açık tutmak için düğmeye basın."</string>
</resources>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 39b4deb4aaf1..e1eeb4af771f 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -667,8 +667,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Чи показувати сповіщення з цього додатка надалі?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Без звуку"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Зі звуком"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Спливаюче сповіщення"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Не відволікає увагу звуковим сигналом або вібрацією."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Привертає увагу звуковим сигналом або вібрацією."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Привертає увагу до контенту плаваючим ярликом."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Ці сповіщення не можна змінити."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Цю групу сповіщень не можна налаштувати тут"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Проксі-сповіщення"</string>
@@ -956,4 +958,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Закрити"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Навігацію в системі оновлено. Щоб внести зміни, перейдіть у налаштування."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Перейдіть у налаштування, щоб оновити навігацію в системі"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Режим очікування"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Незабаром пристрій Android TV буде вимкнено. Натисніть кнопку, щоб цього не сталося."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Незабаром пристрій буде вимкнено. Натисніть, щоб цього не сталося."</string>
</resources>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index aa261daeaee1..5fcb8d19f1bb 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"اس ایپ کی طرف سے اطلاعات دکھانا جاری رکھیں؟"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"خاموش"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"الرٹ کرنا"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"بغیر آواز یا وائبریشن کے آپ کو فوکس کرنے میں مدد کرتا ہے۔"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"آواز اور وائبریشن کے ذریعے آپ کی توجہ حاصل کرتا ہے۔"</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"ان اطلاعات کی ترمیم نہیں کی جا سکتی۔"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"اطلاعات کے اس گروپ کو یہاں کنفیگر نہیں کیا جا سکتا"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"پراکسی اطلاع"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"برخاست کریں"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"سسٹم نیویگیشن اپ ڈیٹ کیا گیا۔ تبدیلیاں کرنے کے لیے، ترتیبات پر جائیں۔"</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"سسٹم نیویگیشن اپ ڈیٹ کرنے کے لیے ترتیبات پر جائیں"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"اسٹینڈ بائی"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"‏Android TV آلہ جلد ہی بند ہوجائے گا آن رکھنے کے ليے بٹن دبائیں۔"</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"آلہ جلد ہی بند ہوجائے گا اسے آن رکھنے کے ليے دبائیں۔"</string>
</resources>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index 8d3697e6d008..46734f353299 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Bu ilovadan keladigan bildirishnomalar chiqaversinmi?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Tovushsiz"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Bildirishnoma yuborish"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Pufaklar"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Bildirishnomalar tovush va tebranishsiz keladi."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Bildirishnomalar tovush va tebranish bilan keladi."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Bu kontentni ochuvchi erkin yorliq diqqatingizda boʻladi."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Bu bildirishnomalarni tahrirlash imkonsiz."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Ushbu bildirishnomalar guruhi bu yerda sozlanmaydi"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Ishonchli bildirishnoma"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Yopish"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Tizim navigatsiyasi yangilandi. Buni Sozlamalar orqali oʻzgartirishingiz mumkin."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Tizim navigatsiyasini yangilash uchun Sozlamalarni oching"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Kutib turing"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV qurilmasi oʻchish arafasida, yoniq qolishi uchun istalgan tugmani bosing."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Qurilma oʻchish arafasida, yoniq qolishi uchun istalgan tugmani bosing."</string>
</resources>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 78bf6270c047..ca0a794542cf 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Tiếp tục hiển thị các thông báo từ ứng dụng này?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Im lặng"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Cảnh báo"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Giúp bạn tập trung bằng cách tắt tiếng hoặc không rung."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Thu hút sự chú ý của bạn bằng cách bật tiếng hoặc rung."</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Không thể sửa đổi các thông báo này."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Không thể định cấu hình nhóm thông báo này tại đây"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Thông báo đã xử lý qua máy chủ proxy"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Loại bỏ"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Đã cập nhật chế độ di chuyển trên hệ thống. Để thay đổi, hãy chuyển đến phần Cài đặt."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Chuyển đến phần Cài đặt để cập nhật chế độ di chuyển trên hệ thống"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Chế độ chờ"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Thiết bị Android TV sẽ sớm tắt. Hãy nhấn vào một nút để thiết bị vẫn bật."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Thiết bị sẽ sớm tắt. Hãy nhấn vào một nút để thiết bị vẫn bật."</string>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index de6ad78c4d98..6a607e2bb1ad 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"要继续显示来自此应用的通知吗?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"静音"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"提醒"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"不会发出提示音或振动,可帮助您保持专注。"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"通过提示音或振动吸引您的注意。"</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"无法修改这些通知。"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"您无法在此处配置这组通知"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"代理通知"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"关闭"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"系统导航已更新。要进行更改,请转到“设置”。"</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"转到“设置”即可更新系统导航"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"待机"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV 设备即将关闭;按一下相应的按钮即可让设备保持开启状态。"</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"设备即将关闭;按一下即可让设备保持开启状态。"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 0bf6fbf0c3e1..706c9ee26333 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"要繼續顯示此應用程式的通知嗎?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"靜音"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"發出提醒"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"助您保持專注,不會發出聲音或震動。"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"發出聲音或震動來吸引您的注意。"</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"無法修改這些通知。"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"無法在此設定這組通知"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"代理通知"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"關閉"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"系統導覽已更新。如需變更,請前往「設定」。"</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"前往「設定」更新系統導覽"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"待機"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV 裝置即將關閉,按下按鈕即可保持開啟。"</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"裝置即將關閉,輕按即可保持開啟。"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 9b3aeb2a2725..6202ce2ed91e 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -661,8 +661,12 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"要繼續顯示這個應用程式的通知嗎?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"靜音"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"快訊"</string>
+ <!-- no translation found for notification_bubble_title (6826478461954949364) -->
+ <skip />
<string name="notification_channel_summary_low" msgid="3387466082089715555">"協助你不受音效或震動干擾。"</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"發出音效或震動吸引你的注意力。"</string>
+ <!-- no translation found for notification_channel_summary_bubble (4269580628050629291) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="4556908766584964102">"無法修改這些通知。"</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"無法在這裡設定這個通知群組"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"經過 Proxy 處理的通知"</string>
@@ -946,4 +950,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"關閉"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"系統操作機制已更新。如要進行變更,請前往「設定」。"</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"請前往「設定」更新系統操作機制"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"待機"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Android TV 裝置即將關閉。如要讓裝置保持開啟狀態,請按下任一按鈕。"</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"裝置即將關閉。輕觸螢幕或按下按鈕即可讓裝置保持開啟狀態。"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 9cf931385b36..462910faef24 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -661,8 +661,10 @@
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Qhubeka nokubonisa izaziso kusuka kulolu hlelo lokusebenza?"</string>
<string name="notification_silence_title" msgid="5763240612242137433">"Kuthulile"</string>
<string name="notification_alert_title" msgid="8031196611815490340">"Iyazisa"</string>
+ <string name="notification_bubble_title" msgid="6826478461954949364">"Ibhamuza"</string>
<string name="notification_channel_summary_low" msgid="3387466082089715555">"Ikusiza ukuthi ugxile ngaphandle komsindo noma ukudlidliza."</string>
<string name="notification_channel_summary_default" msgid="5994062840431965586">"Ithola ukunaka kwakho ngomsindo noma ukudlidliza."</string>
+ <string name="notification_channel_summary_bubble" msgid="4269580628050629291">"Igcina ukunaka kwakho ngesinqamuleli esintantayo kulokhu okuqukethwe."</string>
<string name="notification_unblockable_desc" msgid="4556908766584964102">"Lezi zaziso azikwazi ukushintshwa."</string>
<string name="notification_multichannel_desc" msgid="4695920306092240550">"Leli qembu lezaziso alikwazi ukulungiselelwa lapha"</string>
<string name="notification_delegate_header" msgid="2857691673814814270">"Isaziso sommeli"</string>
@@ -946,4 +948,7 @@
<string name="bubble_dismiss_text" msgid="8028337712674081668">"Cashisa"</string>
<string name="notification_content_system_nav_changed" msgid="7218093915747788444">"Ukuzulazula kwesistimu kubuyekeziwe. Ukuze wenze ushintsho, hamba kokuthi Izilungiselelo."</string>
<string name="notification_content_gesture_nav_available" msgid="8111130443656460792">"Hamba kuzilungiselelo ukuze ubuyekeze ukuzulazula kwesistimu"</string>
+ <string name="inattentive_sleep_warning_title" msgid="7695119731872371794">"Ilindile"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="4279125516592217099">"Idivayisi ye-Android TV maduze izovalwa, cindezela inkinobho ukuze uyigcine ivuliwe."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="3128565462954884260">"Idivayisi maduze izovalwa, cindezela ukuze uyigcine ivuliwe."</string>
</resources>
diff --git a/packages/SystemUI/src/com/android/systemui/ActivityIntentHelper.java b/packages/SystemUI/src/com/android/systemui/ActivityIntentHelper.java
index 2b62e040b1fd..63840bcb293a 100644
--- a/packages/SystemUI/src/com/android/systemui/ActivityIntentHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/ActivityIntentHelper.java
@@ -24,14 +24,20 @@ import android.content.pm.ResolveInfo;
import java.util.List;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* Contains useful methods for querying properties of an Activity Intent.
*/
+@Singleton
public class ActivityIntentHelper {
private final Context mContext;
+ @Inject
public ActivityIntentHelper(Context context) {
+ // TODO: inject a package manager, not a context.
mContext = context;
}
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
index 741c95f4b566..e31e44e7a736 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
@@ -33,7 +33,6 @@ import android.view.IWindowManager;
import android.view.LayoutInflater;
import com.android.internal.logging.MetricsLogger;
-import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.ViewMediatorCallback;
import com.android.systemui.broadcast.BroadcastDispatcher;
@@ -103,14 +102,12 @@ public class DependencyProvider {
return Looper.getMainLooper();
}
- @Singleton
@Provides
@BgHandler
public Handler provideBgHandler(@BgLooper Looper bgLooper) {
return new Handler(bgLooper);
}
- @Singleton
@Provides
@MainHandler
public Handler provideMainHandler(@MainLooper Looper mainLooper) {
@@ -143,13 +140,6 @@ public class DependencyProvider {
return new DisplayMetrics();
}
- @Singleton
- @Provides
- public IStatusBarService provideIStatusBarService() {
- return IStatusBarService.Stub.asInterface(
- ServiceManager.getService(Context.STATUS_BAR_SERVICE));
- }
-
/** */
@Singleton
@Provides
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java
index fffba8cc1639..0d4cc0170be9 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java
@@ -22,6 +22,7 @@ import android.app.ActivityManager;
import android.app.AlarmManager;
import android.app.IActivityManager;
import android.app.IWallpaperManager;
+import android.app.KeyguardManager;
import android.app.WallpaperManager;
import android.content.Context;
import android.content.res.Resources;
@@ -30,10 +31,13 @@ import android.os.Handler;
import android.os.PowerManager;
import android.os.ServiceManager;
import android.os.UserHandle;
+import android.service.dreams.DreamService;
+import android.service.dreams.IDreamManager;
import android.view.IWindowManager;
import android.view.WindowManager;
import android.view.WindowManagerGlobal;
+import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.util.LatencyTracker;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.systemui.dagger.qualifiers.BgHandler;
@@ -64,6 +68,20 @@ public class SystemServicesModule {
}
@Provides
+ @Singleton
+ static IDreamManager provideIDreamManager() {
+ return IDreamManager.Stub.asInterface(
+ ServiceManager.checkService(DreamService.DREAM_SERVICE));
+ }
+
+ @Singleton
+ @Provides
+ static IStatusBarService provideIStatusBarService() {
+ return IStatusBarService.Stub.asInterface(
+ ServiceManager.getService(Context.STATUS_BAR_SERVICE));
+ }
+
+ @Provides
@Nullable
static IWallpaperManager provideIWallPaperManager() {
return IWallpaperManager.Stub.asInterface(
@@ -78,6 +96,12 @@ public class SystemServicesModule {
@Singleton
@Provides
+ static KeyguardManager provideKeyguardManager(Context context) {
+ return context.getSystemService(KeyguardManager.class);
+ }
+
+ @Singleton
+ @Provides
static LatencyTracker provideLatencyTracker(Context context) {
return LatencyTracker.getInstance(context);
}
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
index 79632039c832..e790c1d071ce 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
@@ -87,6 +87,7 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
+import java.util.function.Consumer;
import java.util.function.Function;
import javax.inject.Inject;
@@ -107,7 +108,7 @@ public class GlobalScreenshot {
public Context context;
public Bitmap image;
public Uri imageUri;
- public Runnable finisher;
+ public Consumer<Uri> finisher;
public Function<PendingIntent, Void> onEditReady;
public int iconSize;
public int previewWidth;
@@ -260,7 +261,7 @@ public class GlobalScreenshot {
* Creates a new worker thread and saves the screenshot to the media store.
*/
private void saveScreenshotInWorkerThread(
- Runnable finisher, @Nullable Function<PendingIntent, Void> onEditReady) {
+ Consumer<Uri> finisher, @Nullable Function<PendingIntent, Void> onEditReady) {
SaveImageInBackgroundData data = new SaveImageInBackgroundData();
data.context = mContext;
data.image = mScreenBitmap;
@@ -276,15 +277,15 @@ public class GlobalScreenshot {
.execute();
}
- private void saveScreenshotInWorkerThread(Runnable finisher) {
+ private void saveScreenshotInWorkerThread(Consumer<Uri> finisher) {
saveScreenshotInWorkerThread(finisher, null);
}
/**
* Takes a screenshot of the current display and shows an animation.
*/
- private void takeScreenshot(Runnable finisher, boolean statusBarVisible, boolean navBarVisible,
- Rect crop) {
+ private void takeScreenshot(Consumer<Uri> finisher, boolean statusBarVisible,
+ boolean navBarVisible, Rect crop) {
int rot = mDisplay.getRotation();
int width = crop.width();
int height = crop.height();
@@ -294,7 +295,7 @@ public class GlobalScreenshot {
if (mScreenBitmap == null) {
notifyScreenshotError(mContext, mNotificationManager,
R.string.screenshot_failed_to_capture_text);
- finisher.run();
+ finisher.accept(null);
return;
}
@@ -307,7 +308,7 @@ public class GlobalScreenshot {
statusBarVisible, navBarVisible);
}
- void takeScreenshot(Runnable finisher, boolean statusBarVisible, boolean navBarVisible) {
+ void takeScreenshot(Consumer<Uri> finisher, boolean statusBarVisible, boolean navBarVisible) {
mDisplay.getRealMetrics(mDisplayMetrics);
takeScreenshot(finisher, statusBarVisible, navBarVisible,
new Rect(0, 0, mDisplayMetrics.widthPixels, mDisplayMetrics.heightPixels));
@@ -316,7 +317,7 @@ public class GlobalScreenshot {
/**
* Displays a screenshot selector
*/
- void takeScreenshotPartial(final Runnable finisher, final boolean statusBarVisible,
+ void takeScreenshotPartial(final Consumer<Uri> finisher, final boolean statusBarVisible,
final boolean navBarVisible) {
mWindowManager.addView(mScreenshotLayout, mWindowLayoutParams);
mScreenshotSelectorView.setOnTouchListener(new View.OnTouchListener() {
@@ -392,8 +393,8 @@ public class GlobalScreenshot {
/**
* Starts the animation after taking the screenshot
*/
- private void startAnimation(final Runnable finisher, int w, int h, boolean statusBarVisible,
- boolean navBarVisible) {
+ private void startAnimation(final Consumer<Uri> finisher, int w, int h,
+ boolean statusBarVisible, boolean navBarVisible) {
// If power save is on, show a toast so there is some visual indication that a screenshot
// has been taken.
PowerManager powerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java b/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java
index 083f9712d705..e9dbe02371d5 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java
@@ -453,7 +453,7 @@ class SaveImageInBackgroundTask extends AsyncTask<Void, Void, Void> {
mNotificationBuilder.build());
}
}
- mParams.finisher.run();
+ mParams.finisher.accept(mParams.imageUri);
mParams.clearContext();
}
@@ -462,7 +462,7 @@ class SaveImageInBackgroundTask extends AsyncTask<Void, Void, Void> {
// If we are cancelled while the task is running in the background, we may get null
// params. The finisher is expected to always be called back, so just use the baked-in
// params from the ctor in any case.
- mParams.finisher.run();
+ mParams.finisher.accept(null);
mParams.clearImage();
mParams.clearContext();
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
index fd63506ef983..6243b4b41e73 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
@@ -18,6 +18,7 @@ package com.android.systemui.screenshot;
import android.app.Service;
import android.content.Intent;
+import android.net.Uri;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
@@ -27,6 +28,8 @@ import android.os.UserManager;
import android.util.Log;
import android.view.WindowManager;
+import java.util.function.Consumer;
+
import javax.inject.Inject;
public class TakeScreenshotService extends Service {
@@ -39,10 +42,10 @@ public class TakeScreenshotService extends Service {
@Override
public void handleMessage(Message msg) {
final Messenger callback = msg.replyTo;
- Runnable finisher = new Runnable() {
+ Consumer<Uri> finisher = new Consumer<Uri>() {
@Override
- public void run() {
- Message reply = Message.obtain(null, 1);
+ public void accept(Uri uri) {
+ Message reply = Message.obtain(null, 1, uri);
try {
callback.send(reply);
} catch (RemoteException e) {
@@ -55,7 +58,7 @@ public class TakeScreenshotService extends Service {
// animation and error notification.
if (!mUserManager.isUserUnlocked()) {
Log.w(TAG, "Skipping screenshot because storage is locked!");
- post(finisher);
+ post(() -> finisher.accept(null));
return;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SuperStatusBarViewFactory.java b/packages/SystemUI/src/com/android/systemui/statusbar/SuperStatusBarViewFactory.java
index bc7c22d65a44..9398e6f689f6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/SuperStatusBarViewFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/SuperStatusBarViewFactory.java
@@ -21,6 +21,8 @@ import android.view.LayoutInflater;
import android.view.ViewGroup;
import com.android.systemui.R;
+import com.android.systemui.statusbar.phone.LockIcon;
+import com.android.systemui.statusbar.phone.NotificationPanelView;
import com.android.systemui.statusbar.phone.StatusBarWindowView;
import com.android.systemui.util.InjectionInflationController;
@@ -66,6 +68,11 @@ public class SuperStatusBarViewFactory {
return mStatusBarWindowView;
}
+ /** Gets the {@link LockIcon} inside of {@link R.layout#super_status_bar}. */
+ public LockIcon getLockIcon() {
+ return getStatusBarWindowView().findViewById(R.id.lock_icon);
+ }
+
/**
* Gets the inflated {@link NotificationShelf} from
* {@link R.layout#status_bar_notification_shelf}.
@@ -89,4 +96,13 @@ public class SuperStatusBarViewFactory {
}
return mNotificationShelf;
}
+
+ public NotificationPanelView getNotificationPanelView() {
+ StatusBarWindowView statusBarWindowView = getStatusBarWindowView();
+ if (statusBarWindowView == null) {
+ return null;
+ }
+
+ return mStatusBarWindowView.findViewById(R.id.notification_panel);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ActivityLaunchAnimator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ActivityLaunchAnimator.java
index e48e81957225..9b312341c583 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ActivityLaunchAnimator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ActivityLaunchAnimator.java
@@ -125,21 +125,22 @@ public class ActivityLaunchAnimator {
return mAnimationRunning;
}
- private class AnimationRunner extends IRemoteAnimationRunner.Stub {
+ class AnimationRunner extends IRemoteAnimationRunner.Stub {
- private ExpandableNotificationRow mSourceNotification;
- private final ExpandAnimationParameters mParams = new ExpandAnimationParameters();
+ private final ExpandableNotificationRow mSourceNotification;
+ private final ExpandAnimationParameters mParams;
private final Rect mWindowCrop = new Rect();
private final float mNotificationCornerRadius;
private float mCornerRadius;
private boolean mIsFullScreenLaunch = true;
private final SyncRtSurfaceTransactionApplier mSyncRtTransactionApplier;
- AnimationRunner(ExpandableNotificationRow sourceNotification) {
- mSourceNotification = sourceNotification;
- mSyncRtTransactionApplier = new SyncRtSurfaceTransactionApplier(sourceNotification);
- mNotificationCornerRadius = Math.max(sourceNotification.getCurrentTopRoundness(),
- sourceNotification.getCurrentBottomRoundness());
+ public AnimationRunner(ExpandableNotificationRow sourceNofitication) {
+ mSourceNotification = sourceNofitication;
+ mParams = new ExpandAnimationParameters();
+ mSyncRtTransactionApplier = new SyncRtSurfaceTransactionApplier(mSourceNotification);
+ mNotificationCornerRadius = Math.max(mSourceNotification.getCurrentTopRoundness(),
+ mSourceNotification.getCurrentBottomRoundness());
}
@Override
@@ -154,7 +155,6 @@ public class ActivityLaunchAnimator {
setAnimationPending(false);
invokeCallback(iRemoteAnimationFinishedCallback);
mNotificationPanel.collapse(false /* delayed */, 1.0f /* speedUpFactor */);
- mSourceNotification = null;
return;
}
@@ -254,7 +254,6 @@ public class ActivityLaunchAnimator {
mCallback.onExpandAnimationFinished(mIsFullScreenLaunch);
applyParamsToNotification(null);
applyParamsToNotificationList(null);
- mSourceNotification = null;
}
}
@@ -282,7 +281,6 @@ public class ActivityLaunchAnimator {
mSourceNotification.post(() -> {
setAnimationPending(false);
mCallback.onLaunchAnimationCancelled();
- mSourceNotification = null;
});
}
};
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
index 6aee19454cda..063ad855343f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
@@ -88,8 +88,9 @@ public final class DozeServiceHost implements DozeHost {
private final PulseExpansionHandler mPulseExpansionHandler;
private final StatusBarWindowController mStatusBarWindowController;
private final NotificationWakeUpCoordinator mNotificationWakeUpCoordinator;
+ private final StatusBarWindowViewController mStatusBarWindowViewController;
+ private final LockscreenLockIconController mLockscreenLockIconController;
private NotificationIconAreaController mNotificationIconAreaController;
- private StatusBarWindowViewController mStatusBarWindowViewController;
private StatusBarWindowView mStatusBarWindow;
private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
private NotificationPanelView mNotificationPanel;
@@ -110,7 +111,9 @@ public final class DozeServiceHost implements DozeHost {
VisualStabilityManager visualStabilityManager,
PulseExpansionHandler pulseExpansionHandler,
StatusBarWindowController statusBarWindowController,
- NotificationWakeUpCoordinator notificationWakeUpCoordinator) {
+ NotificationWakeUpCoordinator notificationWakeUpCoordinator,
+ StatusBarWindowViewController statusBarWindowViewController,
+ LockscreenLockIconController lockscreenLockIconController) {
super();
mDozeLog = dozeLog;
mPowerManager = powerManager;
@@ -129,6 +132,8 @@ public final class DozeServiceHost implements DozeHost {
mPulseExpansionHandler = pulseExpansionHandler;
mStatusBarWindowController = statusBarWindowController;
mNotificationWakeUpCoordinator = notificationWakeUpCoordinator;
+ mStatusBarWindowViewController = statusBarWindowViewController;
+ mLockscreenLockIconController = lockscreenLockIconController;
}
// TODO: we should try to not pass status bar in here if we can avoid it.
@@ -138,13 +143,11 @@ public final class DozeServiceHost implements DozeHost {
*/
public void initialize(StatusBar statusBar,
NotificationIconAreaController notificationIconAreaController,
- StatusBarWindowViewController statusBarWindowViewController,
StatusBarWindowView statusBarWindow,
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
NotificationPanelView notificationPanel, View ambientIndicationContainer) {
mStatusBar = statusBar;
mNotificationIconAreaController = notificationIconAreaController;
- mStatusBarWindowViewController = statusBarWindowViewController;
mStatusBarWindow = statusBarWindow;
mStatusBarKeyguardViewManager = statusBarKeyguardViewManager;
mNotificationPanel = notificationPanel;
@@ -262,7 +265,7 @@ public final class DozeServiceHost implements DozeHost {
mKeyguardViewMediator.setPulsing(pulsing);
mNotificationPanel.setPulsing(pulsing);
mVisualStabilityManager.setPulsing(pulsing);
- mStatusBarWindowViewController.setPulsing(pulsing);
+ mLockscreenLockIconController.setPulsing(pulsing);
mIgnoreTouchWhilePulsing = false;
if (mKeyguardUpdateMonitor != null && passiveAuthInterrupt) {
mKeyguardUpdateMonitor.onAuthInterruptDetected(pulsing /* active */);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java
new file mode 100644
index 000000000000..1e35b46db774
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.phone;
+
+import com.android.systemui.statusbar.SuperStatusBarViewFactory;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/** Controls the {@link LockIcon} in the lockscreen. */
+@Singleton
+public class LockscreenLockIconController {
+
+ private final LockIcon mLockIcon;
+
+ @Inject
+ public LockscreenLockIconController(SuperStatusBarViewFactory superStatusBarViewFactory) {
+ mLockIcon = superStatusBarViewFactory.getLockIcon();
+ }
+
+ /**
+ * Called whenever the scrims become opaque, transparent or semi-transparent.
+ */
+ public void onScrimVisibilityChanged(Integer scrimsVisible) {
+ if (mLockIcon != null) {
+ mLockIcon.onScrimVisibilityChanged(scrimsVisible);
+ }
+ }
+
+ /**
+ * Propagate {@link StatusBar} pulsing state.
+ */
+ public void setPulsing(boolean pulsing) {
+ if (mLockIcon != null) {
+ mLockIcon.setPulsing(pulsing);
+ }
+ }
+
+ /**
+ * Called when the biometric authentication mode changes.
+ *
+ * @param wakeAndUnlock If the type is {@link BiometricUnlockController#isWakeAndUnlock()}
+ * @param isUnlock If the type is {@link BiometricUnlockController#isBiometricUnlock()} ()
+ */
+ public void onBiometricAuthModeChanged(boolean wakeAndUnlock, boolean isUnlock) {
+ if (mLockIcon != null) {
+ mLockIcon.onBiometricAuthModeChanged(wakeAndUnlock, isUnlock);
+ }
+ }
+
+ /**
+ * When we're launching an affordance, like double pressing power to open camera.
+ */
+ public void onShowingLaunchAffordanceChanged(Boolean showing) {
+ if (mLockIcon != null) {
+ mLockIcon.onShowingLaunchAffordanceChanged(showing);
+ }
+ }
+
+ /** Sets whether the bouncer is showing. */
+ public void setBouncerShowingScrimmed(boolean bouncerShowing) {
+ if (mLockIcon != null) {
+ mLockIcon.setBouncerShowingScrimmed(bouncerShowing);
+ }
+ }
+
+ /**
+ * When {@link KeyguardBouncer} starts to be dismissed and starts to play its animation.
+ */
+ public void onBouncerPreHideAnimation() {
+ if (mLockIcon != null) {
+ mLockIcon.onBouncerPreHideAnimation();
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index fafdf6aa1128..06183b780028 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -30,8 +30,6 @@ import static android.view.WindowInsetsController.APPEARANCE_LOW_PROFILE_BARS;
import static android.view.WindowInsetsController.APPEARANCE_OPAQUE_TOP_BAR;
import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME;
-import static com.android.systemui.Dependency.BG_HANDLER;
-import static com.android.systemui.Dependency.MAIN_HANDLER;
import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_ASLEEP;
import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWAKE;
import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_WAKING;
@@ -123,7 +121,6 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.statusbar.RegisterStatusBarResult;
import com.android.internal.view.AppearanceRegion;
-import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.keyguard.ViewMediatorCallback;
@@ -353,12 +350,12 @@ public class StatusBar extends SystemUI implements DemoMode,
private final Point mCurrentDisplaySize = new Point();
- protected StatusBarWindowViewController mStatusBarWindowViewController;
protected StatusBarWindowView mStatusBarWindow;
protected PhoneStatusBarView mStatusBarView;
private int mStatusBarWindowState = WINDOW_STATE_SHOWING;
protected StatusBarWindowController mStatusBarWindowController;
private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
+ private final LockscreenLockIconController mLockscreenLockIconController;
@VisibleForTesting
DozeServiceHost mDozeServiceHost;
private boolean mWakeUpComingFromTouch;
@@ -380,12 +377,14 @@ public class StatusBar extends SystemUI implements DemoMode,
private final FalsingManager mFalsingManager;
private final BroadcastDispatcher mBroadcastDispatcher;
private final ConfigurationController mConfigurationController;
- private final StatusBarWindowViewController.Builder mStatusBarWindowViewControllerBuilder;
+ private final StatusBarWindowViewController mStatusBarWindowViewController;
private final DozeParameters mDozeParameters;
private final Lazy<BiometricUnlockController> mBiometricUnlockControllerLazy;
private final PluginManager mPluginManager;
private final RemoteInputUriController mRemoteInputUriController;
private final Optional<Divider> mDividerOptional;
+ private final StatusBarNotificationActivityStarter.Builder
+ mStatusBarNotificationActivityStarterBuilder;
private final SuperStatusBarViewFactory mSuperStatusBarViewFactory;
private final LightsOutNotifController mLightsOutNotifController;
private final DismissCallbackRegistry mDismissCallbackRegistry;
@@ -660,7 +659,8 @@ public class StatusBar extends SystemUI implements DemoMode,
NotificationListener notificationListener,
ConfigurationController configurationController,
StatusBarWindowController statusBarWindowController,
- StatusBarWindowViewController.Builder statusBarWindowViewControllerBuilder,
+ StatusBarWindowViewController statusBarWindowViewController,
+ LockscreenLockIconController lockscreenLockIconController,
DozeParameters dozeParameters,
ScrimController scrimController,
@Nullable KeyguardLiftController keyguardLiftController,
@@ -677,6 +677,8 @@ public class StatusBar extends SystemUI implements DemoMode,
RemoteInputUriController remoteInputUriController,
Optional<Divider> dividerOptional,
LightsOutNotifController lightsOutNotifController,
+ StatusBarNotificationActivityStarter.Builder
+ statusBarNotificationActivityStarterBuilder,
SuperStatusBarViewFactory superStatusBarViewFactory,
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
ViewMediatorCallback viewMediatorCallback,
@@ -730,7 +732,8 @@ public class StatusBar extends SystemUI implements DemoMode,
mNotificationListener = notificationListener;
mConfigurationController = configurationController;
mStatusBarWindowController = statusBarWindowController;
- mStatusBarWindowViewControllerBuilder = statusBarWindowViewControllerBuilder;
+ mStatusBarWindowViewController = statusBarWindowViewController;
+ mLockscreenLockIconController = lockscreenLockIconController;
mDozeServiceHost = dozeServiceHost;
mPowerManager = powerManager;
mDozeParameters = dozeParameters;
@@ -746,7 +749,7 @@ public class StatusBar extends SystemUI implements DemoMode,
mPluginManager = pluginManager;
mRemoteInputUriController = remoteInputUriController;
mDividerOptional = dividerOptional;
-
+ mStatusBarNotificationActivityStarterBuilder = statusBarNotificationActivityStarterBuilder;
mSuperStatusBarViewFactory = superStatusBarViewFactory;
mLightsOutNotifController = lightsOutNotifController;
mStatusBarKeyguardViewManager = statusBarKeyguardViewManager;
@@ -892,7 +895,7 @@ public class StatusBar extends SystemUI implements DemoMode,
mKeyguardUpdateMonitor.registerCallback(mUpdateCallback);
mDozeServiceHost.initialize(this, mNotificationIconAreaController,
- mStatusBarWindowViewController, mStatusBarWindow, mStatusBarKeyguardViewManager,
+ mStatusBarWindow, mStatusBarKeyguardViewManager,
mNotificationPanel, mAmbientIndicationContainer);
Dependency.get(ActivityStarterDelegate.class).setActivityStarterImpl(this);
@@ -965,7 +968,7 @@ public class StatusBar extends SystemUI implements DemoMode,
// TODO: Deal with the ugliness that comes from having some of the statusbar broken out
// into fragments, but the rest here, it leaves some awkward lifecycle and whatnot.
- mNotificationPanel = mStatusBarWindow.findViewById(R.id.notification_panel);
+ mNotificationPanel = mSuperStatusBarViewFactory.getNotificationPanelView();
mStackScroller = mStatusBarWindow.findViewById(R.id.notification_stack_scroller);
NotificationListContainer notifListContainer = (NotificationListContainer) mStackScroller;
@@ -1091,7 +1094,7 @@ public class StatusBar extends SystemUI implements DemoMode,
mScrimController.setScrimVisibleListener(scrimsVisible -> {
mStatusBarWindowController.setScrimsVisibility(scrimsVisible);
if (mStatusBarWindow != null) {
- mStatusBarWindowViewController.onScrimVisibilityChanged(scrimsVisible);
+ mLockscreenLockIconController.onScrimVisibilityChanged(scrimsVisible);
}
});
mScrimController.attachViews(scrimBehind, scrimInFront, scrimForBubble);
@@ -1109,7 +1112,7 @@ public class StatusBar extends SystemUI implements DemoMode,
}
mNotificationPanel.setLaunchAffordanceListener(
- mStatusBarWindowViewController::onShowingLaunchAffordanceChanged);
+ mLockscreenLockIconController::onShowingLaunchAffordanceChanged);
// Set up the quick settings tile panel
View container = mStatusBarWindow.findViewById(R.id.qs_frame);
@@ -1226,6 +1229,7 @@ public class StatusBar extends SystemUI implements DemoMode,
mStatusBarStateController,
mNotificationLogger);
+ // TODO: inject this.
mPresenter = new StatusBarNotificationPresenter(mContext, mNotificationPanel,
mHeadsUpManager, mStatusBarWindow, mStackScroller, mDozeScrimController,
mScrimController, mActivityLaunchAnimator, mDynamicPrivacyController,
@@ -1240,20 +1244,12 @@ public class StatusBar extends SystemUI implements DemoMode,
mNotificationShelf.setOnActivatedListener(mPresenter);
mRemoteInputManager.getController().addCallback(mStatusBarWindowController);
- final StatusBarRemoteInputCallback mStatusBarRemoteInputCallback =
- (StatusBarRemoteInputCallback) Dependency.get(
- NotificationRemoteInputManager.Callback.class);
- final ActivityStarter activityStarter = Dependency.get(ActivityStarter.class);
-
- mNotificationActivityStarter = new StatusBarNotificationActivityStarter(mContext,
- mCommandQueue, mAssistManagerLazy.get(), mNotificationPanel, mPresenter,
- mEntryManager, mHeadsUpManager, activityStarter, mActivityLaunchAnimator,
- mBarService, mStatusBarStateController, mKeyguardManager, mDreamManager,
- mRemoteInputManager, mStatusBarRemoteInputCallback, mGroupManager,
- mLockscreenUserManager, this, mKeyguardStateController,
- mNotificationInterruptionStateProvider, mMetricsLogger,
- new LockPatternUtils(mContext), Dependency.get(MAIN_HANDLER),
- Dependency.get(BG_HANDLER), mActivityIntentHelper, mBubbleController);
+ mNotificationActivityStarter =
+ mStatusBarNotificationActivityStarterBuilder
+ .setShadeController(this)
+ .setActivityLaunchAnimator(mActivityLaunchAnimator)
+ .setNotificationPresenter(mPresenter)
+ .build();
mGutsManager.setNotificationActivityStarter(mNotificationActivityStarter);
@@ -1386,9 +1382,7 @@ public class StatusBar extends SystemUI implements DemoMode,
protected void inflateStatusBarWindow(Context context) {
mStatusBarWindow = mSuperStatusBarViewFactory.getStatusBarWindowView();
- mStatusBarWindowViewController = mStatusBarWindowViewControllerBuilder
- .setShadeController(this)
- .build();
+ mStatusBarWindowViewController.setupExpandedStatusBar();
}
protected void startKeyguard() {
@@ -3693,7 +3687,7 @@ public class StatusBar extends SystemUI implements DemoMode,
mBouncerShowing = bouncerShowing;
mKeyguardBypassController.setBouncerShowing(bouncerShowing);
mPulseExpansionHandler.setBouncerShowing(bouncerShowing);
- mStatusBarWindowViewController.setBouncerShowingScrimmed(isBouncerShowingScrimmed());
+ mLockscreenLockIconController.setBouncerShowingScrimmed(isBouncerShowingScrimmed());
if (mStatusBarView != null) mStatusBarView.setBouncerShowing(bouncerShowing);
updateHideIconsForBouncer(true /* animate */);
mCommandQueue.recomputeDisableFlags(mDisplayId, true /* animate */);
@@ -3944,7 +3938,7 @@ public class StatusBar extends SystemUI implements DemoMode,
public void notifyBiometricAuthModeChanged() {
mDozeServiceHost.updateDozing();
updateScrimController();
- mStatusBarWindowViewController.onBiometricAuthModeChanged(
+ mLockscreenLockIconController.onBiometricAuthModeChanged(
mBiometricUnlockController.isWakeAndUnlock(),
mBiometricUnlockController.isBiometricUnlock());
}
@@ -4341,7 +4335,7 @@ public class StatusBar extends SystemUI implements DemoMode,
*/
public void onBouncerPreHideAnimation() {
mNotificationPanel.onBouncerPreHideAnimation();
- mStatusBarWindowViewController.onBouncerPreHideAnimation();
+ mLockscreenLockIconController.onBouncerPreHideAnimation();
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarModule.java
index 88f1c63f627a..5d69409d1d4c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarModule.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarModule.java
@@ -143,7 +143,8 @@ public class StatusBarModule {
NotificationListener notificationListener,
ConfigurationController configurationController,
StatusBarWindowController statusBarWindowController,
- StatusBarWindowViewController.Builder statusBarWindowViewControllerBuilder,
+ StatusBarWindowViewController statusBarWindowViewController,
+ LockscreenLockIconController lockscreenLockIconController,
DozeParameters dozeParameters,
ScrimController scrimController,
@Nullable KeyguardLiftController keyguardLiftController,
@@ -160,6 +161,8 @@ public class StatusBarModule {
RemoteInputUriController remoteInputUriController,
Optional<Divider> dividerOptional,
LightsOutNotifController lightsOutNotifController,
+ StatusBarNotificationActivityStarter.Builder
+ statusBarNotificationActivityStarterBuilder,
SuperStatusBarViewFactory superStatusBarViewFactory,
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
ViewMediatorCallback viewMediatorCallback,
@@ -214,7 +217,8 @@ public class StatusBarModule {
notificationListener,
configurationController,
statusBarWindowController,
- statusBarWindowViewControllerBuilder,
+ statusBarWindowViewController,
+ lockscreenLockIconController,
dozeParameters,
scrimController,
keyguardLiftController,
@@ -231,6 +235,7 @@ public class StatusBarModule {
remoteInputUriController,
dividerOptional,
lightsOutNotifController,
+ statusBarNotificationActivityStarterBuilder,
superStatusBarViewFactory,
statusBarKeyguardViewManager,
viewMediatorCallback,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
index b340813b42f8..863874e788c6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
@@ -52,6 +52,8 @@ import com.android.systemui.EventLogTags;
import com.android.systemui.UiOffloadThread;
import com.android.systemui.assist.AssistManager;
import com.android.systemui.bubbles.BubbleController;
+import com.android.systemui.dagger.qualifiers.BgHandler;
+import com.android.systemui.dagger.qualifiers.MainHandler;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.CommandQueue;
@@ -60,6 +62,7 @@ import com.android.systemui.statusbar.NotificationPresenter;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.RemoteInputController;
import com.android.systemui.statusbar.StatusBarState;
+import com.android.systemui.statusbar.SuperStatusBarViewFactory;
import com.android.systemui.statusbar.notification.ActivityLaunchAnimator;
import com.android.systemui.statusbar.notification.NotificationActivityStarter;
import com.android.systemui.statusbar.notification.NotificationEntryListener;
@@ -71,6 +74,11 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.policy.HeadsUpUtil;
import com.android.systemui.statusbar.policy.KeyguardStateController;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import dagger.Lazy;
+
/**
* Status bar implementation of {@link NotificationActivityStarter}.
*/
@@ -79,7 +87,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
private static final String TAG = "NotifActivityStarter";
protected static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
- private final AssistManager mAssistManager;
+ private final Lazy<AssistManager> mAssistManagerLazy;
private final NotificationGroupManager mGroupManager;
private final StatusBarRemoteInputCallback mStatusBarRemoteInputCallback;
private final NotificationRemoteInputManager mRemoteInputManager;
@@ -108,32 +116,20 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
private boolean mIsCollapsingToShowActivityOverLockscreen;
- public StatusBarNotificationActivityStarter(Context context,
- CommandQueue commandQueue,
- AssistManager assistManager,
- NotificationPanelView panel,
- NotificationPresenter presenter,
- NotificationEntryManager entryManager,
- HeadsUpManagerPhone headsUpManager,
- ActivityStarter activityStarter,
- ActivityLaunchAnimator activityLaunchAnimator,
- IStatusBarService statusBarService,
- StatusBarStateController statusBarStateController,
- KeyguardManager keyguardManager,
- IDreamManager dreamManager,
- NotificationRemoteInputManager remoteInputManager,
- StatusBarRemoteInputCallback remoteInputCallback,
- NotificationGroupManager groupManager,
+ private StatusBarNotificationActivityStarter(Context context, CommandQueue commandQueue,
+ Lazy<AssistManager> assistManagerLazy, NotificationPanelView panel,
+ NotificationPresenter presenter, NotificationEntryManager entryManager,
+ HeadsUpManagerPhone headsUpManager, ActivityStarter activityStarter,
+ ActivityLaunchAnimator activityLaunchAnimator, IStatusBarService statusBarService,
+ StatusBarStateController statusBarStateController, KeyguardManager keyguardManager,
+ IDreamManager dreamManager, NotificationRemoteInputManager remoteInputManager,
+ StatusBarRemoteInputCallback remoteInputCallback, NotificationGroupManager groupManager,
NotificationLockscreenUserManager lockscreenUserManager,
- ShadeController shadeController,
- KeyguardStateController keyguardStateController,
+ ShadeController shadeController, KeyguardStateController keyguardStateController,
NotificationInterruptionStateProvider notificationInterruptionStateProvider,
- MetricsLogger metricsLogger,
- LockPatternUtils lockPatternUtils,
- Handler mainThreadHandler,
- Handler backgroundHandler,
- ActivityIntentHelper activityIntentHelper,
- BubbleController bubbleController) {
+ MetricsLogger metricsLogger, LockPatternUtils lockPatternUtils,
+ Handler mainThreadHandler, Handler backgroundHandler,
+ ActivityIntentHelper activityIntentHelper, BubbleController bubbleController) {
mContext = context;
mNotificationPanel = panel;
mPresenter = presenter;
@@ -152,7 +148,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
mStatusBarStateController = statusBarStateController;
mNotificationInterruptionStateProvider = notificationInterruptionStateProvider;
mMetricsLogger = metricsLogger;
- mAssistManager = assistManager;
+ mAssistManagerLazy = assistManagerLazy;
mGroupManager = groupManager;
mLockPatternUtils = lockPatternUtils;
mBackgroundHandler = backgroundHandler;
@@ -318,7 +314,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
startNotificationIntent(intent, fillInIntent, row, wasOccluded, isActivityIntent);
}
if (isActivityIntent || isBubble) {
- mAssistManager.hideAssist();
+ mAssistManagerLazy.get().hideAssist();
}
if (shouldCollapse()) {
collapseOnMainThread();
@@ -490,4 +486,128 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
}
});
}
+
+ /**
+ * Public builder for {@link StatusBarNotificationActivityStarter}.
+ */
+ @Singleton
+ public static class Builder {
+ private final Context mContext;
+ private final CommandQueue mCommandQueue;
+ private final Lazy<AssistManager> mAssistManagerLazy;
+ private final NotificationEntryManager mEntryManager;
+ private final HeadsUpManagerPhone mHeadsUpManager;
+ private final ActivityStarter mActivityStarter;
+ private final IStatusBarService mStatusBarService;
+ private final StatusBarStateController mStatusBarStateController;
+ private final KeyguardManager mKeyguardManager;
+ private final IDreamManager mDreamManager;
+ private final NotificationRemoteInputManager mRemoteInputManager;
+ private final StatusBarRemoteInputCallback mRemoteInputCallback;
+ private final NotificationGroupManager mGroupManager;
+ private final NotificationLockscreenUserManager mLockscreenUserManager;
+ private final KeyguardStateController mKeyguardStateController;
+ private final NotificationInterruptionStateProvider mNotificationInterruptionStateProvider;
+ private final MetricsLogger mMetricsLogger;
+ private final LockPatternUtils mLockPatternUtils;
+ private final Handler mMainThreadHandler;
+ private final Handler mBackgroundHandler;
+ private final ActivityIntentHelper mActivityIntentHelper;
+ private final BubbleController mBubbleController;
+ private final SuperStatusBarViewFactory mSuperStatusBarViewFactory;
+ private ShadeController mShadeController;
+ private NotificationPresenter mNotificationPresenter;
+ private ActivityLaunchAnimator mActivityLaunchAnimator;
+
+ @Inject
+ public Builder(Context context,
+ CommandQueue commandQueue,
+ Lazy<AssistManager> assistManagerLazy,
+ NotificationEntryManager entryManager,
+ HeadsUpManagerPhone headsUpManager,
+ ActivityStarter activityStarter,
+ IStatusBarService statusBarService,
+ StatusBarStateController statusBarStateController,
+ KeyguardManager keyguardManager,
+ IDreamManager dreamManager,
+ NotificationRemoteInputManager remoteInputManager,
+ StatusBarRemoteInputCallback remoteInputCallback,
+ NotificationGroupManager groupManager,
+ NotificationLockscreenUserManager lockscreenUserManager,
+ KeyguardStateController keyguardStateController,
+ NotificationInterruptionStateProvider notificationInterruptionStateProvider,
+ MetricsLogger metricsLogger,
+ LockPatternUtils lockPatternUtils,
+ @MainHandler Handler mainThreadHandler,
+ @BgHandler Handler backgroundHandler,
+ ActivityIntentHelper activityIntentHelper,
+ BubbleController bubbleController,
+ SuperStatusBarViewFactory superStatusBarViewFactory) {
+ mContext = context;
+ mCommandQueue = commandQueue;
+ mAssistManagerLazy = assistManagerLazy;
+ mEntryManager = entryManager;
+ mHeadsUpManager = headsUpManager;
+ mActivityStarter = activityStarter;
+ mStatusBarService = statusBarService;
+ mStatusBarStateController = statusBarStateController;
+ mKeyguardManager = keyguardManager;
+ mDreamManager = dreamManager;
+ mRemoteInputManager = remoteInputManager;
+ mRemoteInputCallback = remoteInputCallback;
+ mGroupManager = groupManager;
+ mLockscreenUserManager = lockscreenUserManager;
+ mKeyguardStateController = keyguardStateController;
+ mNotificationInterruptionStateProvider = notificationInterruptionStateProvider;
+ mMetricsLogger = metricsLogger;
+ mLockPatternUtils = lockPatternUtils;
+ mMainThreadHandler = mainThreadHandler;
+ mBackgroundHandler = backgroundHandler;
+ mActivityIntentHelper = activityIntentHelper;
+ mBubbleController = bubbleController;
+ mSuperStatusBarViewFactory = superStatusBarViewFactory;
+ }
+ public Builder setShadeController(ShadeController shadeController) {
+ mShadeController = shadeController;
+ return this;
+ }
+
+ public Builder setNotificationPresenter(NotificationPresenter notificationPresenter) {
+ mNotificationPresenter = notificationPresenter;
+ return this;
+ }
+
+ public Builder setActivityLaunchAnimator(ActivityLaunchAnimator activityLaunchAnimator) {
+ mActivityLaunchAnimator = activityLaunchAnimator;
+ return this;
+ }
+
+ public StatusBarNotificationActivityStarter build() {
+ return new StatusBarNotificationActivityStarter(mContext,
+ mCommandQueue, mAssistManagerLazy,
+ mSuperStatusBarViewFactory.getNotificationPanelView(),
+ mNotificationPresenter,
+ mEntryManager,
+ mHeadsUpManager,
+ mActivityStarter,
+ mActivityLaunchAnimator,
+ mStatusBarService,
+ mStatusBarStateController,
+ mKeyguardManager,
+ mDreamManager,
+ mRemoteInputManager,
+ mRemoteInputCallback,
+ mGroupManager,
+ mLockscreenUserManager,
+ mShadeController,
+ mKeyguardStateController,
+ mNotificationInterruptionStateProvider,
+ mMetricsLogger,
+ mLockPatternUtils,
+ mMainThreadHandler,
+ mBackgroundHandler,
+ mActivityIntentHelper,
+ mBubbleController);
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java
index 322b23fa50ee..3e6ba4dacb71 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java
@@ -50,6 +50,8 @@ import com.android.systemui.statusbar.policy.KeyguardStateController;
import javax.inject.Inject;
import javax.inject.Singleton;
+import dagger.Lazy;
+
/**
*/
@Singleton
@@ -60,7 +62,7 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
private final SysuiStatusBarStateController mStatusBarStateController;
private final NotificationLockscreenUserManager mLockscreenUserManager;
private final ActivityStarter mActivityStarter;
- private final ShadeController mShadeController;
+ private final Lazy<ShadeController> mShadeControllerLazy;
private final Context mContext;
private final ActivityIntentHelper mActivityIntentHelper;
private final NotificationGroupManager mGroupManager;
@@ -79,7 +81,7 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
NotificationLockscreenUserManager notificationLockscreenUserManager,
KeyguardStateController keyguardStateController,
StatusBarStateController statusBarStateController,
- ActivityStarter activityStarter, ShadeController shadeController,
+ ActivityStarter activityStarter, Lazy<ShadeController> shadeControllerLazy,
CommandQueue commandQueue) {
mContext = context;
mContext.registerReceiverAsUser(mChallengeReceiver, UserHandle.ALL,
@@ -87,7 +89,7 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
mLockscreenUserManager = notificationLockscreenUserManager;
mKeyguardStateController = keyguardStateController;
mStatusBarStateController = (SysuiStatusBarStateController) statusBarStateController;
- mShadeController = shadeController;
+ mShadeControllerLazy = shadeControllerLazy;
mActivityStarter = activityStarter;
mStatusBarStateController.addCallback(this);
mKeyguardManager = context.getSystemService(KeyguardManager.class);
@@ -116,7 +118,7 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
if (!row.isPinned()) {
mStatusBarStateController.setLeaveOpenOnKeyguardHide(true);
}
- mShadeController.showBouncer(true /* scrimmed */);
+ mShadeControllerLazy.get().showBouncer(true /* scrimmed */);
mPendingRemoteInputView = clicked;
}
@@ -162,8 +164,8 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
});
}
};
- mShadeController.postOnShadeExpanded(clickPendingViewRunnable);
- mShadeController.instantExpandNotificationsPanel();
+ mShadeControllerLazy.get().postOnShadeExpanded(clickPendingViewRunnable);
+ mShadeControllerLazy.get().instantExpandNotificationsPanel();
}
}
@@ -251,7 +253,7 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
boolean handled = defaultHandler.handleClick();
// close the shade if it was open and maybe wait for activity start.
- return handled && mShadeController.closeShadeIfOpen();
+ return handled && mShadeControllerLazy.get().closeShadeIfOpen();
}, null, afterKeyguardGone);
return true;
} else {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowViewController.java
index 6d6a1fe4d0b1..feac5da38138 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowViewController.java
@@ -38,7 +38,6 @@ import com.android.systemui.R;
import com.android.systemui.dock.DockManager;
import com.android.systemui.doze.DozeLog;
import com.android.systemui.plugins.FalsingManager;
-import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.DragDownHelper;
@@ -58,21 +57,40 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import dagger.Lazy;
/**
* Controller for {@link StatusBarWindowView}.
*/
+@Singleton
public class StatusBarWindowViewController {
- private final StatusBarWindowView mView;
+ private final InjectionInflationController mInjectionInflationController;
+ private final NotificationWakeUpCoordinator mCoordinator;
+ private final PulseExpansionHandler mPulseExpansionHandler;
+ private final DynamicPrivacyController mDynamicPrivacyController;
+ private final KeyguardBypassController mBypassController;
+ private final PluginManager mPluginManager;
private final FalsingManager mFalsingManager;
- private final GestureDetector mGestureDetector;
+ private final TunerService mTunerService;
+ private final NotificationLockscreenUserManager mNotificationLockscreenUserManager;
+ private final NotificationEntryManager mNotificationEntryManager;
+ private final KeyguardStateController mKeyguardStateController;
+ private final SysuiStatusBarStateController mStatusBarStateController;
+ private final DozeLog mDozeLog;
+ private final DozeParameters mDozeParameters;
+ private final CommandQueue mCommandQueue;
+ private final StatusBarWindowView mView;
+ private final Lazy<ShadeController> mShadeControllerLazy;
+
+ private GestureDetector mGestureDetector;
private View mBrightnessMirror;
private boolean mTouchActive;
private boolean mTouchCancelled;
private boolean mExpandAnimationPending;
private boolean mExpandAnimationRunning;
private NotificationStackScrollLayout mStackScrollLayout;
- private LockIcon mLockIcon;
private PhoneStatusBarView mStatusBarView;
private StatusBar mService;
private DragDownHelper mDragDownHelper;
@@ -81,8 +99,8 @@ public class StatusBarWindowViewController {
private boolean mExpandingBelowNotch;
private final DockManager mDockManager;
- private StatusBarWindowViewController(
- StatusBarWindowView view,
+ @Inject
+ public StatusBarWindowViewController(
InjectionInflationController injectionInflationController,
NotificationWakeUpCoordinator coordinator,
PulseExpansionHandler pulseExpansionHandler,
@@ -91,7 +109,6 @@ public class StatusBarWindowViewController {
FalsingManager falsingManager,
PluginManager pluginManager,
TunerService tunerService,
- ShadeController shadeController,
NotificationLockscreenUserManager notificationLockscreenUserManager,
NotificationEntryManager notificationEntryManager,
KeyguardStateController keyguardStateController,
@@ -99,47 +116,68 @@ public class StatusBarWindowViewController {
DozeLog dozeLog,
DozeParameters dozeParameters,
CommandQueue commandQueue,
+ SuperStatusBarViewFactory superStatusBarViewFactory,
+ Lazy<ShadeController> shadeControllerLazy,
DockManager dockManager) {
- mView = view;
+ mInjectionInflationController = injectionInflationController;
+ mCoordinator = coordinator;
+ mPulseExpansionHandler = pulseExpansionHandler;
+ mDynamicPrivacyController = dynamicPrivacyController;
+ mBypassController = bypassController;
mFalsingManager = falsingManager;
+ mPluginManager = pluginManager;
+ mTunerService = tunerService;
+ mNotificationLockscreenUserManager = notificationLockscreenUserManager;
+ mNotificationEntryManager = notificationEntryManager;
+ mKeyguardStateController = keyguardStateController;
+ mStatusBarStateController = statusBarStateController;
+ mDozeLog = dozeLog;
+ mDozeParameters = dozeParameters;
+ mCommandQueue = commandQueue;
+ mView = superStatusBarViewFactory.getStatusBarWindowView();
+ mShadeControllerLazy = shadeControllerLazy;
mDockManager = dockManager;
+ // This view is not part of the newly inflated expanded status bar.
+ mBrightnessMirror = mView.findViewById(R.id.brightness_mirror);
+ }
+
+ /** Inflates the {@link R.layout#status_bar_expanded} layout and sets it up. */
+ public void setupExpandedStatusBar() {
// TODO: create controller for NotificationPanelView
NotificationPanelView notificationPanelView = new NotificationPanelView(
- view.getContext(),
+ mView.getContext(),
null,
- injectionInflationController,
- coordinator,
- pulseExpansionHandler,
- dynamicPrivacyController,
- bypassController,
- falsingManager,
- pluginManager,
- shadeController,
- notificationLockscreenUserManager,
- notificationEntryManager,
- keyguardStateController,
- statusBarStateController,
- dozeLog,
- dozeParameters,
- commandQueue);
+ mInjectionInflationController,
+ mCoordinator,
+ mPulseExpansionHandler,
+ mDynamicPrivacyController,
+ mBypassController,
+ mFalsingManager,
+ mPluginManager,
+ mShadeControllerLazy.get(),
+ mNotificationLockscreenUserManager,
+ mNotificationEntryManager,
+ mKeyguardStateController,
+ mStatusBarStateController,
+ mDozeLog,
+ mDozeParameters,
+ mCommandQueue);
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
notificationPanelView.setVisibility(View.INVISIBLE);
notificationPanelView.setId(R.id.notification_panel);
- LayoutInflater li = injectionInflationController.injectable(
+ LayoutInflater li = mInjectionInflationController.injectable(
LayoutInflater.from(mView.getContext()));
li.inflate(R.layout.status_bar_expanded, notificationPanelView);
notificationPanelView.onChildrenAttached();
- ViewStub statusBarExpanded = view.findViewById(R.id.status_bar_expanded);
+ ViewStub statusBarExpanded = mView.findViewById(R.id.status_bar_expanded);
mView.addView(notificationPanelView, mView.indexOfChild(statusBarExpanded), lp);
mView.removeView(statusBarExpanded);
mStackScrollLayout = mView.findViewById(R.id.notification_stack_scroller);
- mLockIcon = mView.findViewById(R.id.lock_icon);
- mBrightnessMirror = mView.findViewById(R.id.brightness_mirror);
TunerService.Tunable tunable = (key, newValue) -> {
AmbientDisplayConfiguration configuration =
@@ -153,7 +191,7 @@ public class StatusBarWindowViewController {
mSingleTapEnabled = configuration.tapGestureEnabled(UserHandle.USER_CURRENT);
}
};
- tunerService.addTunable(tunable,
+ mTunerService.addTunable(tunable,
Settings.Secure.DOZE_DOUBLE_TAP_GESTURE,
Settings.Secure.DOZE_TAP_SCREEN_GESTURE);
@@ -225,7 +263,7 @@ public class StatusBarWindowViewController {
}
}
if (isDown) {
- getStackScrollLayout().closeControlsIfOutsideTouch(ev);
+ mStackScrollLayout.closeControlsIfOutsideTouch(ev);
}
if (mService.isDozing()) {
mService.mDozeScrimController.extendPulse();
@@ -266,10 +304,9 @@ public class StatusBarWindowViewController {
@Override
public void didIntercept(MotionEvent ev) {
- NotificationStackScrollLayout stackScrollLayout = getStackScrollLayout();
MotionEvent cancellation = MotionEvent.obtain(ev);
cancellation.setAction(MotionEvent.ACTION_CANCEL);
- stackScrollLayout.onInterceptTouchEvent(cancellation);
+ mStackScrollLayout.onInterceptTouchEvent(cancellation);
notificationPanelView.onInterceptTouchEvent(cancellation);
cancellation.recycle();
}
@@ -347,6 +384,13 @@ public class StatusBarWindowViewController {
public void onChildViewRemoved(View parent, View child) {
}
});
+
+ ExpandHelper.Callback expandHelperCallback = mStackScrollLayout.getExpandHelperCallback();
+ DragDownHelper.DragDownCallback dragDownCallback = mStackScrollLayout.getDragDownCallback();
+ setDragDownHelper(
+ new DragDownHelper(
+ mView.getContext(), mView, expandHelperCallback,
+ dragDownCallback, mFalsingManager));
}
public StatusBarWindowView getView() {
@@ -389,44 +433,8 @@ public class StatusBarWindowViewController {
}
public void cancelExpandHelper() {
- NotificationStackScrollLayout stackScrollLayout = getStackScrollLayout();
- if (stackScrollLayout != null) {
- stackScrollLayout.cancelExpandHelper();
- }
- }
-
- @VisibleForTesting
- protected NotificationStackScrollLayout getStackScrollLayout() {
- return mStackScrollLayout;
- }
-
- /**
- * Called whenever the scrims become opaque, transparent or semi-transparent.
- */
- public void onScrimVisibilityChanged(Integer scrimsVisible) {
- if (mLockIcon != null) {
- mLockIcon.onScrimVisibilityChanged(scrimsVisible);
- }
- }
-
- /**
- * Propagate {@link StatusBar} pulsing state.
- */
- public void setPulsing(boolean pulsing) {
- if (mLockIcon != null) {
- mLockIcon.setPulsing(pulsing);
- }
- }
-
- /**
- * Called when the biometric authentication mode changes.
- *
- * @param wakeAndUnlock If the type is {@link BiometricUnlockController#isWakeAndUnlock()}
- * @param isUnlock If the type is {@link BiometricUnlockController#isBiometricUnlock()} ()
- */
- public void onBiometricAuthModeChanged(boolean wakeAndUnlock, boolean isUnlock) {
- if (mLockIcon != null) {
- mLockIcon.onBiometricAuthModeChanged(wakeAndUnlock, isUnlock);
+ if (mStackScrollLayout != null) {
+ mStackScrollLayout.cancelExpandHelper();
}
}
@@ -436,138 +444,10 @@ public class StatusBarWindowViewController {
public void setService(StatusBar statusBar) {
mService = statusBar;
- NotificationStackScrollLayout stackScrollLayout = getStackScrollLayout();
- ExpandHelper.Callback expandHelperCallback = stackScrollLayout.getExpandHelperCallback();
- DragDownHelper.DragDownCallback dragDownCallback = stackScrollLayout.getDragDownCallback();
- setDragDownHelper(
- new DragDownHelper(
- mView.getContext(), mView, expandHelperCallback,
- dragDownCallback, mFalsingManager));
}
@VisibleForTesting
void setDragDownHelper(DragDownHelper dragDownHelper) {
mDragDownHelper = dragDownHelper;
}
-
- /**
- * When we're launching an affordance, like double pressing power to open camera.
- */
- public void onShowingLaunchAffordanceChanged(Boolean showing) {
- if (mLockIcon != null) {
- mLockIcon.onShowingLaunchAffordanceChanged(showing);
- }
- }
-
- public void setBouncerShowingScrimmed(boolean bouncerShowing) {
- if (mLockIcon != null) {
- mLockIcon.setBouncerShowingScrimmed(bouncerShowing);
- }
- }
-
- /**
- * When {@link KeyguardBouncer} starts to be dismissed and starts to play its animation.
- */
- public void onBouncerPreHideAnimation() {
- if (mLockIcon != null) {
- mLockIcon.onBouncerPreHideAnimation();
- }
- }
-
- /**
- * Builder for {@link StatusBarWindowViewController}.
- */
- public static class Builder {
- private final InjectionInflationController mInjectionInflationController;
- private final NotificationWakeUpCoordinator mCoordinator;
- private final PulseExpansionHandler mPulseExpansionHandler;
- private final DynamicPrivacyController mDynamicPrivacyController;
- private final KeyguardBypassController mBypassController;
- private final FalsingManager mFalsingManager;
- private final PluginManager mPluginManager;
- private final TunerService mTunerService;
- private final KeyguardStateController mKeyguardStateController;
- private final SysuiStatusBarStateController mStatusBarStateController;
- private ShadeController mShadeController;
- private final NotificationLockscreenUserManager mNotificationLockScreenUserManager;
- private final NotificationEntryManager mNotificationEntryManager;
- private final DozeLog mDozeLog;
- private final DozeParameters mDozeParameters;
- private final CommandQueue mCommandQueue;
- private final SuperStatusBarViewFactory mSuperStatusBarViewFactory;
- private final StatusBarWindowView mView;
- private final DockManager mDockManager;
-
- @Inject
- public Builder(
- InjectionInflationController injectionInflationController,
- NotificationWakeUpCoordinator coordinator,
- PulseExpansionHandler pulseExpansionHandler,
- DynamicPrivacyController dynamicPrivacyController,
- KeyguardBypassController bypassController,
- FalsingManager falsingManager,
- PluginManager pluginManager,
- TunerService tunerService,
- NotificationLockscreenUserManager notificationLockscreenUserManager,
- NotificationEntryManager notificationEntryManager,
- KeyguardStateController keyguardStateController,
- StatusBarStateController statusBarStateController,
- DozeLog dozeLog,
- DozeParameters dozeParameters,
- CommandQueue commandQueue,
- SuperStatusBarViewFactory superStatusBarViewFactory,
- DockManager dockManager) {
- mInjectionInflationController = injectionInflationController;
- mCoordinator = coordinator;
- mPulseExpansionHandler = pulseExpansionHandler;
- mDynamicPrivacyController = dynamicPrivacyController;
- mBypassController = bypassController;
- mFalsingManager = falsingManager;
- mPluginManager = pluginManager;
- mTunerService = tunerService;
- mNotificationLockScreenUserManager = notificationLockscreenUserManager;
- mNotificationEntryManager = notificationEntryManager;
- mKeyguardStateController = keyguardStateController;
- mStatusBarStateController = (SysuiStatusBarStateController) statusBarStateController;
- mDozeLog = dozeLog;
- mDozeParameters = dozeParameters;
- mCommandQueue = commandQueue;
- mSuperStatusBarViewFactory = superStatusBarViewFactory;
- mView = mSuperStatusBarViewFactory.getStatusBarWindowView();
- mDockManager = dockManager;
- }
-
- /**
- * Provide {@link ShadeController} that this view needs.
- */
- public Builder setShadeController(ShadeController shadeController) {
- mShadeController = shadeController;
- return this;
- }
-
- /**
- * Build a {@link StatusBarWindowView}.
- */
- public StatusBarWindowViewController build() {
- return new StatusBarWindowViewController(
- mView,
- mInjectionInflationController,
- mCoordinator,
- mPulseExpansionHandler,
- mDynamicPrivacyController,
- mBypassController,
- mFalsingManager,
- mPluginManager,
- mTunerService,
- mShadeController,
- mNotificationLockScreenUserManager,
- mNotificationEntryManager,
- mKeyguardStateController,
- mStatusBarStateController,
- mDozeLog,
- mDozeParameters,
- mCommandQueue,
- mDockManager);
- }
- }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java
index f0f94201f3af..dc809066524f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java
@@ -33,13 +33,13 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.settingslib.fuelgauge.BatterySaverUtils;
import com.android.settingslib.fuelgauge.Estimate;
import com.android.settingslib.utils.PowerUtil;
-import com.android.systemui.Dependency;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.qualifiers.BgHandler;
+import com.android.systemui.dagger.qualifiers.MainHandler;
import com.android.systemui.power.EnhancedEstimates;
import java.io.FileDescriptor;
import java.io.PrintWriter;
-import java.text.NumberFormat;
import java.util.ArrayList;
import javax.inject.Inject;
@@ -53,42 +53,39 @@ import javax.inject.Singleton;
public class BatteryControllerImpl extends BroadcastReceiver implements BatteryController {
private static final String TAG = "BatteryController";
- public static final String ACTION_LEVEL_TEST = "com.android.systemui.BATTERY_LEVEL_TEST";
+ private static final String ACTION_LEVEL_TEST = "com.android.systemui.BATTERY_LEVEL_TEST";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
- private static final int UPDATE_GRANULARITY_MSEC = 1000 * 60;
private final EnhancedEstimates mEstimates;
private final BroadcastDispatcher mBroadcastDispatcher;
- private final ArrayList<BatteryController.BatteryStateChangeCallback> mChangeCallbacks = new ArrayList<>();
+ private final ArrayList<BatteryController.BatteryStateChangeCallback>
+ mChangeCallbacks = new ArrayList<>();
private final ArrayList<EstimateFetchCompletion> mFetchCallbacks = new ArrayList<>();
private final PowerManager mPowerManager;
- private final Handler mHandler;
+ private final Handler mMainHandler;
+ private final Handler mBgHandler;
private final Context mContext;
- protected int mLevel;
- protected boolean mPluggedIn;
- protected boolean mCharging;
- protected boolean mCharged;
- protected boolean mPowerSave;
- protected boolean mAodPowerSave;
+ private int mLevel;
+ private boolean mPluggedIn;
+ private boolean mCharging;
+ private boolean mCharged;
+ private boolean mPowerSave;
+ private boolean mAodPowerSave;
private boolean mTestmode = false;
private boolean mHasReceivedBattery = false;
private Estimate mEstimate;
private boolean mFetchingEstimate = false;
- @Inject
- public BatteryControllerImpl(Context context, EnhancedEstimates enhancedEstimates,
- BroadcastDispatcher broadcastDispatcher) {
- this(context, enhancedEstimates, context.getSystemService(PowerManager.class),
- broadcastDispatcher);
- }
-
@VisibleForTesting
+ @Inject
BatteryControllerImpl(Context context, EnhancedEstimates enhancedEstimates,
- PowerManager powerManager, BroadcastDispatcher broadcastDispatcher) {
+ PowerManager powerManager, BroadcastDispatcher broadcastDispatcher,
+ @MainHandler Handler mainHandler, @BgHandler Handler bgHandler) {
mContext = context;
- mHandler = new Handler();
+ mMainHandler = mainHandler;
+ mBgHandler = bgHandler;
mPowerManager = powerManager;
mEstimates = enhancedEstimates;
mBroadcastDispatcher = broadcastDispatcher;
@@ -162,7 +159,7 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC
setPowerSave(intent.getBooleanExtra(PowerManager.EXTRA_POWER_SAVE_MODE, false));
} else if (action.equals(ACTION_LEVEL_TEST)) {
mTestmode = true;
- mHandler.post(new Runnable() {
+ mMainHandler.post(new Runnable() {
int curLevel = 0;
int incr = 1;
int saveLevel = mLevel;
@@ -189,7 +186,7 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC
if (curLevel == 100) {
incr *= -1;
}
- mHandler.postDelayed(this, 200);
+ mMainHandler.postDelayed(this, 200);
}
});
}
@@ -222,7 +219,6 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC
return null;
}
- String percentage = NumberFormat.getPercentInstance().format((double) mLevel / 100.0);
return PowerUtil.getBatteryRemainingShortStringFormatted(
mContext, mEstimate.getEstimateMillis());
}
@@ -235,7 +231,7 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC
}
mFetchingEstimate = true;
- Dependency.get(Dependency.BG_HANDLER).post(() -> {
+ mBgHandler.post(() -> {
// Only fetch the estimate if they are enabled
synchronized (mFetchCallbacks) {
mEstimate = null;
@@ -244,7 +240,7 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC
}
}
mFetchingEstimate = false;
- Dependency.get(Dependency.MAIN_HANDLER).post(this::notifyEstimateFetchCallbacks);
+ mMainHandler.post(this::notifyEstimateFetchCallbacks);
});
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
index a441f660ecb7..5a4332105e57 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
@@ -128,7 +128,7 @@ public class WifiSignalController extends
}
public void handleBootCompleted() {
- mWifiManager.registerTrafficStateCallback(new WifiTrafficStateCallback(), null);
+ mWifiManager.registerTrafficStateCallback(new WifiTrafficStateCallback());
}
/**
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java
index 105dbad66488..222fcb696c8b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java
@@ -90,6 +90,7 @@ public class DozeServiceHostTest extends SysuiTestCase {
@Mock private NotificationPanelView mNotificationPanel;
@Mock private View mAmbientIndicationContainer;
@Mock private BiometricUnlockController mBiometricUnlockController;
+ @Mock private LockscreenLockIconController mLockscreenLockIconController;
@Before
public void setup() {
@@ -99,11 +100,11 @@ public class DozeServiceHostTest extends SysuiTestCase {
mBatteryController, mScrimController, () -> mBiometricUnlockController,
mKeyguardViewMediator, () -> mAssistManager, mDozeScrimController,
mKeyguardUpdateMonitor, mVisualStabilityManager, mPulseExpansionHandler,
- mStatusBarWindowController, mNotificationWakeUpCoordinator);
+ mStatusBarWindowController, mNotificationWakeUpCoordinator,
+ mStatusBarWindowViewController, mLockscreenLockIconController);
- mDozeServiceHost.initialize(mStatusBar, mNotificationIconAreaController,
- mStatusBarWindowViewController, mStatusBarWindow, mStatusBarKeyguardViewManager,
- mNotificationPanel, mAmbientIndicationContainer);
+ mDozeServiceHost.initialize(mStatusBar, mNotificationIconAreaController, mStatusBarWindow,
+ mStatusBarKeyguardViewManager, mNotificationPanel, mAmbientIndicationContainer);
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java
index 07be0d7efffb..6f5cfbecb5d0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java
@@ -64,6 +64,7 @@ import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.NotificationTestHelper;
import com.android.systemui.statusbar.RemoteInputController;
import com.android.systemui.statusbar.StatusBarState;
+import com.android.systemui.statusbar.SuperStatusBarViewFactory;
import com.android.systemui.statusbar.notification.ActivityLaunchAnimator;
import com.android.systemui.statusbar.notification.NotificationActivityStarter;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
@@ -116,8 +117,11 @@ public class StatusBarNotificationActivityStarterTest extends SysuiTestCase {
@Mock
private Intent mContentIntentInner;
@Mock
-
private NotificationActivityStarter mNotificationActivityStarter;
+ @Mock
+ private SuperStatusBarViewFactory mSuperStatusBarViewFactory;
+ @Mock
+ private NotificationPanelView mNotificationPanelView;
private NotificationTestHelper mNotificationTestHelper;
private ExpandableNotificationRow mNotificationRow;
@@ -156,19 +160,25 @@ public class StatusBarNotificationActivityStarterTest extends SysuiTestCase {
mActiveNotifications.add(mBubbleNotificationRow.getEntry());
when(mEntryManager.getVisibleNotifications()).thenReturn(mActiveNotifications);
when(mStatusBarStateController.getState()).thenReturn(StatusBarState.SHADE);
+ when(mSuperStatusBarViewFactory.getNotificationPanelView())
+ .thenReturn(mNotificationPanelView);
- mNotificationActivityStarter = new StatusBarNotificationActivityStarter(getContext(),
- mock(CommandQueue.class), mAssistManager, mock(NotificationPanelView.class),
- mock(NotificationPresenter.class), mEntryManager, mock(HeadsUpManagerPhone.class),
- mActivityStarter, mock(ActivityLaunchAnimator.class), mStatusBarService,
+ mNotificationActivityStarter = (new StatusBarNotificationActivityStarter.Builder(
+ getContext(), mock(CommandQueue.class), () -> mAssistManager,
+ mEntryManager, mock(HeadsUpManagerPhone.class),
+ mActivityStarter, mStatusBarService,
mock(StatusBarStateController.class), mock(KeyguardManager.class),
mock(IDreamManager.class), mRemoteInputManager,
mock(StatusBarRemoteInputCallback.class), mock(NotificationGroupManager.class),
- mock(NotificationLockscreenUserManager.class), mShadeController,
+ mock(NotificationLockscreenUserManager.class),
mKeyguardStateController,
mock(NotificationInterruptionStateProvider.class), mock(MetricsLogger.class),
mock(LockPatternUtils.class), mHandler, mHandler, mActivityIntentHelper,
- mBubbleController);
+ mBubbleController, mSuperStatusBarViewFactory))
+ .setShadeController(mShadeController)
+ .setNotificationPresenter(mock(NotificationPresenter.class))
+ .setActivityLaunchAnimator(mock(ActivityLaunchAnimator.class))
+ .build();
// set up dismissKeyguardThenExecute to synchronously invoke the OnDismissAction arg
doAnswer(mCallOnDismiss).when(mActivityStarter).dismissKeyguardThenExecute(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallbackTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallbackTest.java
index b1b66b5360e3..9d76b425725f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallbackTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallbackTest.java
@@ -72,7 +72,7 @@ public class StatusBarRemoteInputCallbackTest extends SysuiTestCase {
mRemoteInputCallback = spy(new StatusBarRemoteInputCallback(mContext,
mock(NotificationGroupManager.class), mNotificationLockscreenUserManager,
mKeyguardStateController, mStatusBarStateController, mActivityStarter,
- mShadeController, new CommandQueue(mContext)));
+ () -> mShadeController, new CommandQueue(mContext)));
mRemoteInputCallback.mChallengeReceiver = mRemoteInputCallback.new ChallengeReceiver();
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
index 1f2df653490c..e78fb9e521e1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
@@ -216,7 +216,6 @@ public class StatusBarTest extends SysuiTestCase {
@Mock private NotificationGroupAlertTransferHelper mGroupAlertTransferHelper;
@Mock private StatusBarWindowController mStatusBarWindowController;
@Mock private NotificationIconAreaController mNotificationIconAreaController;
- @Mock private StatusBarWindowViewController.Builder mStatusBarWindowViewControllerBuilder;
@Mock private StatusBarWindowViewController mStatusBarWindowViewController;
@Mock private DozeParameters mDozeParameters;
@Mock private Lazy<LockscreenWallpaper> mLockscreenWallpaperLazy;
@@ -236,6 +235,9 @@ public class StatusBarTest extends SysuiTestCase {
@Mock private DismissCallbackRegistry mDismissCallbackRegistry;
@Mock private ScreenPinningRequest mScreenPinningRequest;
@Mock private NotificationEntryManager mEntryManager;
+ @Mock private LockscreenLockIconController mLockscreenLockIconController;
+ @Mock private StatusBarNotificationActivityStarter.Builder
+ mStatusBarNotificationActivityStarterBuilder;
@Before
public void setup() throws Exception {
@@ -295,9 +297,6 @@ public class StatusBarTest extends SysuiTestCase {
when(mColorExtractor.getNeutralColors()).thenReturn(mGradientColors);
ConfigurationController configurationController = new ConfigurationControllerImpl(mContext);
- when(mStatusBarWindowViewControllerBuilder.build())
- .thenReturn(mStatusBarWindowViewController);
-
when(mLockscreenWallpaperLazy.get()).thenReturn(mLockscreenWallpaper);
when(mBiometricUnlockControllerLazy.get()).thenReturn(mBiometricUnlockController);
@@ -355,7 +354,8 @@ public class StatusBarTest extends SysuiTestCase {
mNotificationListener,
configurationController,
mStatusBarWindowController,
- mStatusBarWindowViewControllerBuilder,
+ mStatusBarWindowViewController,
+ mLockscreenLockIconController,
mDozeParameters,
mScrimController,
mKeyguardLiftController,
@@ -371,6 +371,7 @@ public class StatusBarTest extends SysuiTestCase {
mRemoteInputUriController,
Optional.of(mDivider),
mLightsOutNotifController,
+ mStatusBarNotificationActivityStarterBuilder,
mSuperStatusBarViewFactory,
mStatusBarKeyguardViewManager,
mViewMediatorCallback,
@@ -397,7 +398,6 @@ public class StatusBarTest extends SysuiTestCase {
mStatusBar.mKeyguardIndicationController = mKeyguardIndicationController;
mStatusBar.mBarService = mBarService;
mStatusBar.mStackScroller = mStackScroller;
- mStatusBar.mStatusBarWindowViewController = mStatusBarWindowViewController;
mStatusBar.startKeyguard();
Dependency.get(InitController.class).executePostInitTasks();
notificationLogger.setUpWithContainer(mStackScroller);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarWindowViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarWindowViewTest.java
index e08551abdca2..ee9ea9f26a95 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarWindowViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarWindowViewTest.java
@@ -88,7 +88,7 @@ public class StatusBarWindowViewTest extends SysuiTestCase {
when(mSuperStatusBarViewFactory.getStatusBarWindowView()).thenReturn(mView);
when(mDockManager.isDocked()).thenReturn(false);
- mController = new StatusBarWindowViewController.Builder(
+ mController = new StatusBarWindowViewController(
new InjectionInflationController(
SystemUIFactory.getInstance().getRootComponent()),
mCoordinator,
@@ -106,9 +106,9 @@ public class StatusBarWindowViewTest extends SysuiTestCase {
mDozeParameters,
new CommandQueue(mContext),
mSuperStatusBarViewFactory,
- mDockManager)
- .setShadeController(mShadeController)
- .build();
+ () -> mShadeController,
+ mDockManager);
+ mController.setupExpandedStatusBar();
mController.setService(mStatusBar);
mController.setDragDownHelper(mDragDownHelper);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryControllerTest.java
index 48ed4ba2224c..05a48678c8d7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryControllerTest.java
@@ -20,6 +20,7 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import android.content.Intent;
+import android.os.Handler;
import android.os.PowerManager;
import android.os.PowerSaveState;
import android.test.suitebuilder.annotation.SmallTest;
@@ -53,7 +54,7 @@ public class BatteryControllerTest extends SysuiTestCase {
public void setUp() {
MockitoAnnotations.initMocks(this);
mBatteryController = new BatteryControllerImpl(getContext(), mock(EnhancedEstimates.class),
- mPowerManager, mBroadcastDispatcher);
+ mPowerManager, mBroadcastDispatcher, new Handler(), new Handler());
}
@Test
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 4bb29f014d0e..3dc745b0cb95 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -346,7 +346,6 @@ import com.android.server.ThreadPriorityBooster;
import com.android.server.Watchdog;
import com.android.server.am.ActivityManagerServiceDumpProcessesProto.UidObserverRegistrationProto;
import com.android.server.appop.AppOpsService;
-import com.android.server.compat.CompatConfig;
import com.android.server.compat.PlatformCompat;
import com.android.server.contentcapture.ContentCaptureManagerInternal;
import com.android.server.firewall.IntentFirewall;
@@ -5032,8 +5031,9 @@ public class ActivityManagerService extends IActivityManager.Stub
bindApplicationTimeMillis = SystemClock.elapsedRealtime();
mAtmInternal.preBindApplication(app.getWindowProcessController());
final ActiveInstrumentation instr2 = app.getActiveInstrumentation();
- long[] disabledCompatChanges = CompatConfig.get().getDisabledChanges(app.info);
+ long[] disabledCompatChanges = {};
if (mPlatformCompat != null) {
+ disabledCompatChanges = mPlatformCompat.getDisabledChanges(app.info);
mPlatformCompat.resetReporting(app.info);
}
if (app.isolatedEntryPoint != null) {
diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
index 1f56176bf00d..908ec6b844c2 100644
--- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
+++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
@@ -37,11 +37,13 @@ import android.app.IStopUserCallback;
import android.app.IUidObserver;
import android.app.KeyguardManager;
import android.app.ProfilerInfo;
+import android.app.UserSwitchObserver;
import android.app.WaitResult;
import android.app.usage.AppStandbyInfo;
import android.app.usage.ConfigurationStats;
import android.app.usage.IUsageStatsManager;
import android.app.usage.UsageStatsManager;
+import android.compat.Compatibility;
import android.content.ComponentCallbacks2;
import android.content.ComponentName;
import android.content.Context;
@@ -80,15 +82,17 @@ import android.os.UserHandle;
import android.os.UserManager;
import android.text.TextUtils;
import android.util.ArrayMap;
+import android.util.ArraySet;
import android.util.DebugUtils;
import android.util.DisplayMetrics;
import android.util.proto.ProtoOutputStream;
import android.view.Display;
+import com.android.internal.compat.CompatibilityChangeConfig;
import com.android.internal.util.HexDump;
import com.android.internal.util.MemInfoReader;
import com.android.internal.util.Preconditions;
-import com.android.server.compat.CompatConfig;
+import com.android.server.compat.PlatformCompat;
import java.io.BufferedReader;
import java.io.File;
@@ -1729,6 +1733,30 @@ final class ActivityManagerShellCommand extends ShellCommand {
return 0;
}
+ private void switchUserAndWaitForComplete(int userId) throws RemoteException {
+ // Register switch observer.
+ final CountDownLatch switchLatch = new CountDownLatch(1);
+ mInterface.registerUserSwitchObserver(
+ new UserSwitchObserver() {
+ @Override
+ public void onUserSwitchComplete(int newUserId) {
+ if (userId == newUserId) {
+ switchLatch.countDown();
+ }
+ }
+ }, ActivityManagerShellCommand.class.getName());
+
+ // Switch.
+ mInterface.switchUser(userId);
+
+ // Wait.
+ try {
+ switchLatch.await(USER_OPERATION_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ getErrPrintWriter().println("Thread interrupted unexpectedly.");
+ }
+ }
+
int runSwitchUser(PrintWriter pw) throws RemoteException {
UserManager userManager = mInternal.mContext.getSystemService(UserManager.class);
final int userSwitchable = userManager.getUserSwitchability();
@@ -1736,8 +1764,23 @@ final class ActivityManagerShellCommand extends ShellCommand {
getErrPrintWriter().println("Error: " + userSwitchable);
return -1;
}
- String user = getNextArgRequired();
- mInterface.switchUser(Integer.parseInt(user));
+ boolean wait = false;
+ String opt;
+ while ((opt = getNextOption()) != null) {
+ if ("-w".equals(opt)) {
+ wait = true;
+ } else {
+ getErrPrintWriter().println("Error: unknown option: " + opt);
+ return -1;
+ }
+ }
+
+ int userId = Integer.parseInt(getNextArgRequired());
+ if (wait) {
+ switchUserAndWaitForComplete(userId);
+ } else {
+ mInterface.switchUser(userId);
+ }
return 0;
}
@@ -2862,56 +2905,49 @@ final class ActivityManagerShellCommand extends ShellCommand {
return 0;
}
- private void killPackage(String packageName, PrintWriter pw) throws RemoteException {
- int uid = mPm.getPackageUid(packageName, 0, mUserId);
- if (uid < 0) {
- // uid is negative if the package wasn't found.
- pw.println("Didn't find package " + packageName + " on device.");
- } else {
- pw.println("Killing package " + packageName + " (UID " + uid + ").");
- final long origId = Binder.clearCallingIdentity();
- mInterface.killUid(UserHandle.getAppId(uid),
- UserHandle.USER_ALL, "killPackage");
- Binder.restoreCallingIdentity(origId);
- }
- }
-
private int runCompat(PrintWriter pw) throws RemoteException {
- final CompatConfig config = CompatConfig.get();
+ final PlatformCompat platformCompat = (PlatformCompat)
+ ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE);
String toggleValue = getNextArgRequired();
long changeId;
String changeIdString = getNextArgRequired();
try {
changeId = Long.parseLong(changeIdString);
} catch (NumberFormatException e) {
- changeId = config.lookupChangeId(changeIdString);
+ changeId = platformCompat.lookupChangeId(changeIdString);
}
if (changeId == -1) {
pw.println("Unknown or invalid change: '" + changeIdString + "'.");
+ return -1;
}
String packageName = getNextArgRequired();
+ if (!platformCompat.isKnownChangeId(changeId)) {
+ pw.println("Warning! Change " + changeId + " is not known yet. Enabling/disabling it"
+ + " could have no effect.");
+ }
+ ArraySet<Long> enabled = new ArraySet<>();
+ ArraySet<Long> disabled = new ArraySet<>();
switch (toggleValue) {
case "enable":
- if (!config.addOverride(changeId, packageName, true)) {
- pw.println("Warning! Change " + changeId + " is not known yet. Enabling it"
- + " could have no effect.");
- }
+ enabled.add(changeId);
pw.println("Enabled change " + changeId + " for " + packageName + ".");
- killPackage(packageName, pw);
+ CompatibilityChangeConfig overrides =
+ new CompatibilityChangeConfig(
+ new Compatibility.ChangeConfig(enabled, disabled));
+ platformCompat.setOverrides(overrides, packageName);
return 0;
case "disable":
- if (!config.addOverride(changeId, packageName, false)) {
- pw.println("Warning! Change " + changeId + " is not known yet. Disabling it"
- + " could have no effect.");
- }
+ disabled.add(changeId);
pw.println("Disabled change " + changeId + " for " + packageName + ".");
- killPackage(packageName, pw);
+ overrides =
+ new CompatibilityChangeConfig(
+ new Compatibility.ChangeConfig(enabled, disabled));
+ platformCompat.setOverrides(overrides, packageName);
return 0;
case "reset":
- if (config.removeOverride(changeId, packageName)) {
+ if (platformCompat.clearOverride(changeId, packageName)) {
pw.println("Reset change " + changeId + " for " + packageName
+ " to default value.");
- killPackage(packageName, pw);
} else {
pw.println("No override exists for changeId " + changeId + ".");
}
diff --git a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
index 525531635df6..0524f91a01fb 100644
--- a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
+++ b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
@@ -445,7 +445,7 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync {
if ((updateFlags & BatteryStatsImpl.ExternalStatsSync.UPDATE_RADIO) != 0) {
// We were asked to fetch Telephony data.
if (mTelephony == null) {
- mTelephony = TelephonyManager.from(mContext);
+ mTelephony = mContext.getSystemService(TelephonyManager.class);
}
if (mTelephony != null) {
diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java
index a47ea4f95b3e..8c60d0c759dc 100644
--- a/services/core/java/com/android/server/am/BatteryStatsService.java
+++ b/services/core/java/com/android/server/am/BatteryStatsService.java
@@ -731,7 +731,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub
public void notePhoneState(int state) {
enforceCallingPermission();
- int simState = TelephonyManager.getDefault().getSimState();
+ int simState = mContext.getSystemService(TelephonyManager.class).getSimState();
synchronized (mStats) {
mStats.notePhoneStateLocked(state, simState);
}
diff --git a/services/core/java/com/android/server/biometrics/AuthService.java b/services/core/java/com/android/server/biometrics/AuthService.java
new file mode 100644
index 000000000000..22cb507d449f
--- /dev/null
+++ b/services/core/java/com/android/server/biometrics/AuthService.java
@@ -0,0 +1,228 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.biometrics;
+
+
+// TODO(b/141025588): Create separate internal and external permissions for AuthService.
+// TODO(b/141025588): Get rid of the USE_FINGERPRINT permission.
+
+import static android.Manifest.permission.USE_BIOMETRIC;
+import static android.Manifest.permission.USE_BIOMETRIC_INTERNAL;
+import static android.Manifest.permission.USE_FINGERPRINT;
+import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FACE;
+import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FINGERPRINT;
+import static android.hardware.biometrics.BiometricAuthenticator.TYPE_IRIS;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.hardware.biometrics.IAuthService;
+import android.hardware.biometrics.IBiometricEnabledOnKeyguardCallback;
+import android.hardware.biometrics.IBiometricService;
+import android.hardware.biometrics.IBiometricServiceReceiver;
+import android.hardware.face.IFaceService;
+import android.hardware.fingerprint.IFingerprintService;
+import android.hardware.iris.IIrisService;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.os.UserHandle;
+import android.util.Slog;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.SystemService;
+import com.android.server.biometrics.face.FaceAuthenticator;
+import com.android.server.biometrics.fingerprint.FingerprintAuthenticator;
+import com.android.server.biometrics.iris.IrisAuthenticator;
+
+/**
+ * System service that provides an interface for authenticating with biometrics and
+ * PIN/pattern/password to BiometricPrompt and lock screen.
+ */
+public class AuthService extends SystemService {
+ private static final String TAG = "AuthService";
+ private static final boolean DEBUG = false;
+
+ private final boolean mHasFeatureFace;
+ private final boolean mHasFeatureFingerprint;
+ private final boolean mHasFeatureIris;
+ private final Injector mInjector;
+
+ private IBiometricService mBiometricService;
+ @VisibleForTesting
+ final IAuthService.Stub mImpl;
+
+ /**
+ * Class for injecting dependencies into AuthService.
+ * TODO(b/141025588): Replace with a dependency injection framework (e.g. Guice, Dagger).
+ */
+ @VisibleForTesting
+ public static class Injector {
+
+ /**
+ * Allows to mock BiometricService for testing.
+ */
+ @VisibleForTesting
+ public IBiometricService getBiometricService() {
+ return IBiometricService.Stub.asInterface(
+ ServiceManager.getService(Context.BIOMETRIC_SERVICE));
+ }
+
+ /**
+ * Allows to stub publishBinderService(...) for testing.
+ */
+ @VisibleForTesting
+ public void publishBinderService(AuthService service, IAuthService.Stub impl) {
+ service.publishBinderService(Context.AUTH_SERVICE, impl);
+ }
+ }
+
+ private final class AuthServiceImpl extends IAuthService.Stub {
+ @Override
+ public void authenticate(IBinder token, long sessionId, int userId,
+ IBiometricServiceReceiver receiver, String opPackageName, Bundle bundle)
+ throws RemoteException {
+ final int callingUserId = UserHandle.getCallingUserId();
+
+ // In the BiometricServiceBase, do the AppOps and foreground check.
+ if (userId == callingUserId) {
+ // Check the USE_BIOMETRIC permission here.
+ checkPermission();
+ } else {
+ // Only allow internal clients to authenticate with a different userId
+ Slog.w(TAG, "User " + callingUserId + " is requesting authentication of userid: "
+ + userId);
+ checkInternalPermission();
+ }
+
+ if (token == null || receiver == null || opPackageName == null || bundle == null) {
+ Slog.e(TAG, "Unable to authenticate, one or more null arguments");
+ return;
+ }
+
+ mBiometricService.authenticate(token, sessionId, userId, receiver, opPackageName,
+ bundle);
+ }
+
+ @Override
+ public int canAuthenticate(String opPackageName, int userId) throws RemoteException {
+ final int callingUserId = UserHandle.getCallingUserId();
+ Slog.d(TAG, "canAuthenticate, userId: " + userId
+ + ", callingUserId: " + callingUserId);
+
+ if (userId != callingUserId) {
+ checkInternalPermission();
+ } else {
+ checkPermission();
+ }
+ return mBiometricService.canAuthenticate(opPackageName, userId);
+ }
+
+ @Override
+ public boolean hasEnrolledBiometrics(int userId, String opPackageName)
+ throws RemoteException {
+ checkInternalPermission();
+ return mBiometricService.hasEnrolledBiometrics(userId, opPackageName);
+ }
+
+ @Override
+ public void registerEnabledOnKeyguardCallback(IBiometricEnabledOnKeyguardCallback callback)
+ throws RemoteException {
+ checkInternalPermission();
+ mBiometricService.registerEnabledOnKeyguardCallback(callback);
+ }
+
+ @Override
+ public void setActiveUser(int userId) throws RemoteException {
+ checkInternalPermission();
+ mBiometricService.setActiveUser(userId);
+ }
+
+ @Override
+ public void resetLockout(byte[] token) throws RemoteException {
+ checkInternalPermission();
+ mBiometricService.resetLockout(token);
+ }
+ }
+
+ public AuthService(Context context) {
+ this(context, new Injector());
+ }
+
+ public AuthService(Context context, Injector injector) {
+ super(context);
+
+ mInjector = injector;
+ mImpl = new AuthServiceImpl();
+ final PackageManager pm = context.getPackageManager();
+ mHasFeatureFace = pm.hasSystemFeature(PackageManager.FEATURE_FACE);
+ mHasFeatureFingerprint = pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT);
+ mHasFeatureIris = pm.hasSystemFeature(PackageManager.FEATURE_IRIS);
+ }
+
+ @Override
+ public void onStart() {
+ mBiometricService = mInjector.getBiometricService();
+
+ if (mHasFeatureFace) {
+ final FaceAuthenticator faceAuthenticator = new FaceAuthenticator(
+ IFaceService.Stub.asInterface(ServiceManager.getService(Context.FACE_SERVICE)));
+ try {
+ // TODO(b/141025588): Pass down the real id, strength, and modality.
+ mBiometricService.registerAuthenticator(0, 0, TYPE_FACE, faceAuthenticator);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Remote exception", e);
+ }
+ }
+ if (mHasFeatureFingerprint) {
+ final FingerprintAuthenticator fingerprintAuthenticator = new FingerprintAuthenticator(
+ IFingerprintService.Stub.asInterface(
+ ServiceManager.getService(Context.FINGERPRINT_SERVICE)));
+ try {
+ // TODO(b/141025588): Pass down the real id, strength, and modality.
+ mBiometricService.registerAuthenticator(1, 0, TYPE_FINGERPRINT,
+ fingerprintAuthenticator);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Remote exception", e);
+ }
+ }
+ if (mHasFeatureIris) {
+ final IrisAuthenticator irisAuthenticator = new IrisAuthenticator(
+ IIrisService.Stub.asInterface(ServiceManager.getService(Context.IRIS_SERVICE)));
+ try {
+ // TODO(b/141025588): Pass down the real id, strength, and modality.
+ mBiometricService.registerAuthenticator(2, 0, TYPE_IRIS, irisAuthenticator);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Remote exception", e);
+ }
+ }
+ mInjector.publishBinderService(this, mImpl);
+ }
+
+ private void checkInternalPermission() {
+ getContext().enforceCallingOrSelfPermission(USE_BIOMETRIC_INTERNAL,
+ "Must have USE_BIOMETRIC_INTERNAL permission");
+ }
+
+ private void checkPermission() {
+ if (getContext().checkCallingOrSelfPermission(USE_FINGERPRINT)
+ != PackageManager.PERMISSION_GRANTED) {
+ getContext().enforceCallingOrSelfPermission(USE_BIOMETRIC,
+ "Must have USE_BIOMETRIC permission");
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/biometrics/BiometricService.java b/services/core/java/com/android/server/biometrics/BiometricService.java
index 44c81fc09b2a..5d3679389b48 100644
--- a/services/core/java/com/android/server/biometrics/BiometricService.java
+++ b/services/core/java/com/android/server/biometrics/BiometricService.java
@@ -42,8 +42,6 @@ import android.hardware.biometrics.IBiometricEnabledOnKeyguardCallback;
import android.hardware.biometrics.IBiometricService;
import android.hardware.biometrics.IBiometricServiceReceiver;
import android.hardware.biometrics.IBiometricServiceReceiverInternal;
-import android.hardware.face.IFaceService;
-import android.hardware.fingerprint.IFingerprintService;
import android.net.Uri;
import android.os.Binder;
import android.os.Bundle;
@@ -67,8 +65,6 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.os.SomeArgs;
import com.android.internal.statusbar.IStatusBarService;
import com.android.server.SystemService;
-import com.android.server.biometrics.face.FaceAuthenticator;
-import com.android.server.biometrics.fingerprint.FingerprintAuthenticator;
import java.util.ArrayList;
import java.util.HashMap;
@@ -215,9 +211,6 @@ public class BiometricService extends SystemService {
private final Injector mInjector;
@VisibleForTesting
final IBiometricService.Stub mImpl;
- private final boolean mHasFeatureFace;
- private final boolean mHasFeatureFingerprint;
- private final boolean mHasFeatureIris;
@VisibleForTesting
final SettingObserver mSettingObserver;
private final List<EnabledOnKeyguardCallback> mEnabledOnKeyguardCallbacks;
@@ -702,6 +695,8 @@ public class BiometricService extends SystemService {
@Override
public void registerAuthenticator(int id, int strength, int modality,
IBiometricAuthenticator authenticator) {
+ checkInternalPermission();
+
mAuthenticators.add(new AuthenticatorWrapper(id, strength, modality, authenticator));
}
@@ -782,24 +777,6 @@ public class BiometricService extends SystemService {
}
/**
- * Allows to mock FaceAuthenticator for testing.
- */
- @VisibleForTesting
- public IBiometricAuthenticator getFingerprintAuthenticator() {
- return new FingerprintAuthenticator(IFingerprintService.Stub.asInterface(
- ServiceManager.getService(Context.FINGERPRINT_SERVICE)));
- }
-
- /**
- * Allows to mock FaceAuthenticator for testing.
- */
- @VisibleForTesting
- public IBiometricAuthenticator getFaceAuthenticator() {
- return new FaceAuthenticator(
- IFaceService.Stub.asInterface(ServiceManager.getService(Context.FACE_SERVICE)));
- }
-
- /**
* Allows to mock SettingObserver for testing.
*/
@VisibleForTesting
@@ -853,11 +830,6 @@ public class BiometricService extends SystemService {
mSettingObserver = mInjector.getSettingObserver(context, mHandler,
mEnabledOnKeyguardCallbacks);
- final PackageManager pm = context.getPackageManager();
- mHasFeatureFace = pm.hasSystemFeature(PackageManager.FEATURE_FACE);
- mHasFeatureFingerprint = pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT);
- mHasFeatureIris = pm.hasSystemFeature(PackageManager.FEATURE_IRIS);
-
try {
injector.getActivityManagerService().registerUserSwitchObserver(
new UserSwitchObserver() {
@@ -875,28 +847,6 @@ public class BiometricService extends SystemService {
@Override
public void onStart() {
- // TODO(b/141025588): remove this code block once AuthService is integrated.
- {
- if (mHasFeatureFace) {
- try {
- mImpl.registerAuthenticator(0, 0, TYPE_FACE, mInjector.getFaceAuthenticator());
- } catch (RemoteException e) {
- Slog.e(TAG, "Remote exception", e);
- }
- }
- if (mHasFeatureFingerprint) {
- try {
- mImpl.registerAuthenticator(0, 0, TYPE_FINGERPRINT,
- mInjector.getFingerprintAuthenticator());
- } catch (RemoteException e) {
- Slog.e(TAG, "Remote exception", e);
- }
- }
- if (mHasFeatureIris) {
- Slog.e(TAG, "Iris is not supported");
- }
- }
-
mKeyStore = mInjector.getKeyStore();
mStatusBarService = mInjector.getStatusBarService();
mInjector.publishBinderService(this, mImpl);
diff --git a/services/core/java/com/android/server/compat/CompatConfig.java b/services/core/java/com/android/server/compat/CompatConfig.java
index d6ec22b078ea..490cce347188 100644
--- a/services/core/java/com/android/server/compat/CompatConfig.java
+++ b/services/core/java/com/android/server/compat/CompatConfig.java
@@ -43,13 +43,14 @@ import java.util.HashSet;
import java.util.Set;
import javax.xml.datatype.DatatypeConfigurationException;
+
/**
* This class maintains state relating to platform compatibility changes.
*
* <p>It stores the default configuration for each change, and any per-package overrides that have
* been configured.
*/
-public final class CompatConfig {
+final class CompatConfig {
private static final String TAG = "CompatConfig";
@@ -61,13 +62,13 @@ public final class CompatConfig {
private final LongSparseArray<CompatChange> mChanges = new LongSparseArray<>();
@VisibleForTesting
- public CompatConfig() {
+ CompatConfig() {
}
/**
* @return The static instance of this class to be used within the system server.
*/
- public static CompatConfig get() {
+ static CompatConfig get() {
return sInstance;
}
@@ -77,7 +78,7 @@ public final class CompatConfig {
*
* @param change The change to add. Any change with the same ID will be overwritten.
*/
- public void addChange(CompatChange change) {
+ void addChange(CompatChange change) {
synchronized (mChanges) {
mChanges.put(change.getId(), change);
}
@@ -89,10 +90,10 @@ public final class CompatConfig {
*
* @param app The app in question
* @return A sorted long array of change IDs. We use a primitive array to minimize memory
- * footprint: Every app process will store this array statically so we aim to reduce
- * overhead as much as possible.
+ * footprint: Every app process will store this array statically so we aim to reduce
+ * overhead as much as possible.
*/
- public long[] getDisabledChanges(ApplicationInfo app) {
+ long[] getDisabledChanges(ApplicationInfo app) {
LongArray disabled = new LongArray();
synchronized (mChanges) {
for (int i = 0; i < mChanges.size(); ++i) {
@@ -113,7 +114,7 @@ public final class CompatConfig {
* @param name Name of the change to look up
* @return The change ID, or {@code -1} if no change with that name exists.
*/
- public long lookupChangeId(String name) {
+ long lookupChangeId(String name) {
synchronized (mChanges) {
for (int i = 0; i < mChanges.size(); ++i) {
if (TextUtils.equals(mChanges.valueAt(i).getName(), name)) {
@@ -128,11 +129,11 @@ public final class CompatConfig {
* Find if a given change is enabled for a given application.
*
* @param changeId The ID of the change in question
- * @param app App to check for
+ * @param app App to check for
* @return {@code true} if the change is enabled for this app. Also returns {@code true} if the
- * change ID is not known, as unknown changes are enabled by default.
+ * change ID is not known, as unknown changes are enabled by default.
*/
- public boolean isChangeEnabled(long changeId, ApplicationInfo app) {
+ boolean isChangeEnabled(long changeId, ApplicationInfo app) {
synchronized (mChanges) {
CompatChange c = mChanges.get(changeId);
if (c == null) {
@@ -150,14 +151,15 @@ public final class CompatConfig {
*
* <p>Note, package overrides are not persistent and will be lost on system or runtime restart.
*
- * @param changeId The ID of the change to be overridden. Note, this call will succeed even if
- * this change is not known; it will only have any effect if any code in the
- * platform is gated on the ID given.
+ * @param changeId The ID of the change to be overridden. Note, this call will succeed even
+ * if
+ * this change is not known; it will only have any effect if any code in the
+ * platform is gated on the ID given.
* @param packageName The app package name to override the change for.
- * @param enabled If the change should be enabled or disabled.
+ * @param enabled If the change should be enabled or disabled.
* @return {@code true} if the change existed before adding the override.
*/
- public boolean addOverride(long changeId, String packageName, boolean enabled) {
+ boolean addOverride(long changeId, String packageName, boolean enabled) {
boolean alreadyKnown = true;
synchronized (mChanges) {
CompatChange c = mChanges.get(changeId);
@@ -172,15 +174,27 @@ public final class CompatConfig {
}
/**
+ * Check whether the change is known to the compat config.
+ *
+ * @return {@code true} if the change is known.
+ */
+ boolean isKnownChangeId(long changeId) {
+ synchronized (mChanges) {
+ CompatChange c = mChanges.get(changeId);
+ return c != null;
+ }
+ }
+
+ /**
* Removes an override previously added via {@link #addOverride(long, String, boolean)}. This
* restores the default behaviour for the given change and app, once any app processes have been
* restarted.
*
- * @param changeId The ID of the change that was overridden.
+ * @param changeId The ID of the change that was overridden.
* @param packageName The app package name that was overridden.
* @return {@code true} if an override existed;
*/
- public boolean removeOverride(long changeId, String packageName) {
+ boolean removeOverride(long changeId, String packageName) {
boolean overrideExists = false;
synchronized (mChanges) {
CompatChange c = mChanges.get(changeId);
@@ -191,22 +205,22 @@ public final class CompatConfig {
}
return overrideExists;
}
+
/**
* Overrides the enabled state for a given change and app. This method is intended to be used
* *only* for debugging purposes.
*
* <p>Note, package overrides are not persistent and will be lost on system or runtime restart.
*
- * @param overrides list of overrides to default changes config.
+ * @param overrides list of overrides to default changes config.
* @param packageName app for which the overrides will be applied.
*/
- public void addOverrides(
- CompatibilityChangeConfig overrides, String packageName) {
+ void addOverrides(CompatibilityChangeConfig overrides, String packageName) {
synchronized (mChanges) {
- for (Long changeId: overrides.enabledChanges()) {
+ for (Long changeId : overrides.enabledChanges()) {
addOverride(changeId, packageName, true);
}
- for (Long changeId: overrides.disabledChanges()) {
+ for (Long changeId : overrides.disabledChanges()) {
addOverride(changeId, packageName, false);
}
}
@@ -221,7 +235,7 @@ public final class CompatConfig {
*
* @param packageName The package for which the overrides should be purged.
*/
- public void removePackageOverrides(String packageName) {
+ void removePackageOverrides(String packageName) {
synchronized (mChanges) {
for (int i = 0; i < mChanges.size(); ++i) {
mChanges.valueAt(i).removePackageOverride(packageName);
@@ -230,11 +244,11 @@ public final class CompatConfig {
}
/**
- * Dumps the current list of compatibility config information.
- *
- * @param pw The {@link PrintWriter} instance to which the information will be dumped.
- */
- public void dumpConfig(PrintWriter pw) {
+ * Dumps the current list of compatibility config information.
+ *
+ * @param pw The {@link PrintWriter} instance to which the information will be dumped.
+ */
+ void dumpConfig(PrintWriter pw) {
synchronized (mChanges) {
if (mChanges.size() == 0) {
pw.println("No compat overrides.");
@@ -252,10 +266,10 @@ public final class CompatConfig {
*
* @param applicationInfo the {@link ApplicationInfo} for which the info should be dumped.
* @return A {@link CompatibilityChangeConfig} which contains the compat config info for the
- * given app.
+ * given app.
*/
- public CompatibilityChangeConfig getAppConfig(ApplicationInfo applicationInfo) {
+ CompatibilityChangeConfig getAppConfig(ApplicationInfo applicationInfo) {
Set<Long> enabled = new HashSet<>();
Set<Long> disabled = new HashSet<>();
synchronized (mChanges) {
@@ -276,15 +290,15 @@ public final class CompatConfig {
*
* @return An array of {@link CompatibilityChangeInfo} with the current changes.
*/
- public CompatibilityChangeInfo[] dumpChanges() {
+ CompatibilityChangeInfo[] dumpChanges() {
synchronized (mChanges) {
CompatibilityChangeInfo[] changeInfos = new CompatibilityChangeInfo[mChanges.size()];
for (int i = 0; i < mChanges.size(); ++i) {
CompatChange change = mChanges.valueAt(i);
changeInfos[i] = new CompatibilityChangeInfo(change.getId(),
- change.getName(),
- change.getEnableAfterTargetSdk(),
- change.getDisabled());
+ change.getName(),
+ change.getEnableAfterTargetSdk(),
+ change.getDisabled());
}
return changeInfos;
}
diff --git a/services/core/java/com/android/server/compat/PlatformCompat.java b/services/core/java/com/android/server/compat/PlatformCompat.java
index 75e2d220898d..709f3f82d4c5 100644
--- a/services/core/java/com/android/server/compat/PlatformCompat.java
+++ b/services/core/java/com/android/server/compat/PlatformCompat.java
@@ -16,9 +16,13 @@
package com.android.server.compat;
+import android.app.ActivityManager;
+import android.app.IActivityManager;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
+import android.os.Binder;
+import android.os.RemoteException;
import android.os.UserHandle;
import android.util.Slog;
import android.util.StatsLog;
@@ -106,12 +110,26 @@ public class PlatformCompat extends IPlatformCompat.Stub {
@Override
public void setOverrides(CompatibilityChangeConfig overrides, String packageName) {
CompatConfig.get().addOverrides(overrides, packageName);
+ killPackage(packageName);
+ }
+
+ @Override
+ public void setOverridesForTest(CompatibilityChangeConfig overrides, String packageName) {
+ CompatConfig.get().addOverrides(overrides, packageName);
}
@Override
public void clearOverrides(String packageName) {
CompatConfig config = CompatConfig.get();
config.removePackageOverrides(packageName);
+ killPackage(packageName);
+ }
+
+ @Override
+ public boolean clearOverride(long changeId, String packageName) {
+ boolean existed = CompatConfig.get().removeOverride(changeId, packageName);
+ killPackage(packageName);
+ return existed;
}
@Override
@@ -124,6 +142,39 @@ public class PlatformCompat extends IPlatformCompat.Stub {
return CompatConfig.get().dumpChanges();
}
+ /**
+ * Check whether the change is known to the compat config.
+ * @param changeId
+ * @return {@code true} if the change is known.
+ */
+ public boolean isKnownChangeId(long changeId) {
+ return CompatConfig.get().isKnownChangeId(changeId);
+
+ }
+
+ /**
+ * Retrieves the set of disabled changes for a given app. Any change ID not in the returned
+ * array is by default enabled for the app.
+ *
+ * @param appInfo The app in question
+ * @return A sorted long array of change IDs. We use a primitive array to minimize memory
+ * footprint: Every app process will store this array statically so we aim to reduce
+ * overhead as much as possible.
+ */
+ public long[] getDisabledChanges(ApplicationInfo appInfo) {
+ return CompatConfig.get().getDisabledChanges(appInfo);
+ }
+
+ /**
+ * Look up a change ID by name.
+ *
+ * @param name Name of the change to look up
+ * @return The change ID, or {@code -1} if no change with that name exists.
+ */
+ public long lookupChangeId(String name) {
+ return CompatConfig.get().lookupChangeId(name);
+ }
+
@Override
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
if (!DumpUtils.checkDumpAndUsageStatsPermission(mContext, "platform_compat", pw)) return;
@@ -151,4 +202,34 @@ public class PlatformCompat extends IPlatformCompat.Stub {
private void reportChange(long changeId, int uid, int state) {
mChangeReporter.reportChange(uid, changeId, state);
}
+
+ private void killPackage(String packageName) {
+ int uid = -1;
+ try {
+ uid = mContext.getPackageManager().getPackageUid(packageName, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ Slog.w(TAG, "Didn't find package " + packageName + " on device.", e);
+ return;
+ }
+
+ Slog.d(TAG, "Killing package " + packageName + " (UID " + uid + ").");
+ killUid(UserHandle.getAppId(uid),
+ UserHandle.USER_ALL, "PlatformCompat overrides");
+ }
+
+ private void killUid(int appId, int userId, String reason) {
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ IActivityManager am = ActivityManager.getService();
+ if (am != null) {
+ try {
+ am.killUid(appId, userId, reason);
+ } catch (RemoteException e) {
+ /* ignore - same process */
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
}
diff --git a/services/core/java/com/android/server/connectivity/Tethering.java b/services/core/java/com/android/server/connectivity/Tethering.java
index b3804c4d7ec5..acedc3635730 100644
--- a/services/core/java/com/android/server/connectivity/Tethering.java
+++ b/services/core/java/com/android/server/connectivity/Tethering.java
@@ -286,8 +286,8 @@ public class Tethering extends BaseNetworkObserver {
private void startStateMachineUpdaters(Handler handler) {
mCarrierConfigChange.startListening();
- TelephonyManager.from(mContext).listen(mPhoneStateListener,
- PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE);
+ mContext.getSystemService(TelephonyManager.class).listen(
+ mPhoneStateListener, PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE);
IntentFilter filter = new IntentFilter();
filter.addAction(UsbManager.ACTION_USB_STATE);
diff --git a/services/core/java/com/android/server/display/BrightnessTracker.java b/services/core/java/com/android/server/display/BrightnessTracker.java
index 126beeffbb96..eea1980012a4 100644
--- a/services/core/java/com/android/server/display/BrightnessTracker.java
+++ b/services/core/java/com/android/server/display/BrightnessTracker.java
@@ -34,6 +34,7 @@ import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.hardware.display.AmbientBrightnessDayStats;
import android.hardware.display.BrightnessChangeEvent;
+import android.hardware.display.BrightnessConfiguration;
import android.hardware.display.ColorDisplayManager;
import android.hardware.display.DisplayManager;
import android.hardware.display.DisplayManagerInternal;
@@ -125,6 +126,7 @@ public class BrightnessTracker {
private static final int MSG_BRIGHTNESS_CHANGED = 1;
private static final int MSG_STOP_SENSOR_LISTENER = 2;
private static final int MSG_START_SENSOR_LISTENER = 3;
+ private static final int MSG_BRIGHTNESS_CONFIG_CHANGED = 4;
private static final SimpleDateFormat FORMAT = new SimpleDateFormat("MM-dd HH:mm:ss.SSS");
@@ -158,6 +160,7 @@ public class BrightnessTracker {
private boolean mColorSamplingEnabled;
private int mNoFramesToSample;
private float mFrameRate;
+ private BrightnessConfiguration mBrightnessConfiguration;
// End of block of members that should only be accessed on the mBgHandler thread.
private @UserIdInt int mCurrentUserId = UserHandle.USER_NULL;
@@ -202,6 +205,14 @@ public class BrightnessTracker {
mBgHandler.obtainMessage(MSG_BACKGROUND_START, (Float) initialBrightness).sendToTarget();
}
+ /**
+ * Update tracker with new brightness configuration.
+ */
+ public void setBrightnessConfiguration(BrightnessConfiguration brightnessConfiguration) {
+ mBgHandler.obtainMessage(MSG_BRIGHTNESS_CONFIG_CHANGED,
+ brightnessConfiguration).sendToTarget();
+ }
+
private void backgroundStart(float initialBrightness) {
readEvents();
readAmbientBrightnessStats();
@@ -759,7 +770,9 @@ public class BrightnessTracker {
private void enableColorSampling() {
if (!mInjector.isBrightnessModeAutomatic(mContentResolver)
|| !mInjector.isInteractive(mContext)
- || mColorSamplingEnabled) {
+ || mColorSamplingEnabled
+ || mBrightnessConfiguration == null
+ || !mBrightnessConfiguration.shouldCollectColorSamples()) {
return;
}
@@ -977,6 +990,18 @@ public class BrightnessTracker {
stopSensorListener();
disableColorSampling();
break;
+ case MSG_BRIGHTNESS_CONFIG_CHANGED:
+ mBrightnessConfiguration = (BrightnessConfiguration) msg.obj;
+ boolean shouldCollectColorSamples =
+ mBrightnessConfiguration != null
+ && mBrightnessConfiguration.shouldCollectColorSamples();
+ if (shouldCollectColorSamples && !mColorSamplingEnabled) {
+ enableColorSampling();
+ } else if (!shouldCollectColorSamples && mColorSamplingEnabled) {
+ disableColorSampling();
+ }
+ break;
+
}
}
}
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index 5804fc8ba72f..e42545e111ed 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -931,6 +931,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
autoBrightnessAdjustmentChanged, mPowerRequest.policy);
}
+ if (mBrightnessTracker != null) {
+ mBrightnessTracker.setBrightnessConfiguration(mBrightnessConfiguration);
+ }
+
// Apply auto-brightness.
boolean slowChange = false;
if (brightness < 0) {
diff --git a/services/core/java/com/android/server/display/WifiDisplayController.java b/services/core/java/com/android/server/display/WifiDisplayController.java
index d9d46b8d1f3b..283a78b4e8b4 100644
--- a/services/core/java/com/android/server/display/WifiDisplayController.java
+++ b/services/core/java/com/android/server/display/WifiDisplayController.java
@@ -16,8 +16,6 @@
package com.android.server.display;
-import com.android.internal.util.DumpUtils;
-
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
@@ -36,16 +34,18 @@ import android.net.wifi.p2p.WifiP2pDevice;
import android.net.wifi.p2p.WifiP2pDeviceList;
import android.net.wifi.p2p.WifiP2pGroup;
import android.net.wifi.p2p.WifiP2pManager;
-import android.net.wifi.p2p.WifiP2pWfdInfo;
import android.net.wifi.p2p.WifiP2pManager.ActionListener;
import android.net.wifi.p2p.WifiP2pManager.Channel;
import android.net.wifi.p2p.WifiP2pManager.GroupInfoListener;
import android.net.wifi.p2p.WifiP2pManager.PeerListListener;
+import android.net.wifi.p2p.WifiP2pWfdInfo;
import android.os.Handler;
import android.provider.Settings;
import android.util.Slog;
import android.view.Surface;
+import com.android.internal.util.DumpUtils;
+
import java.io.PrintWriter;
import java.net.Inet4Address;
import java.net.InetAddress;
@@ -292,11 +292,11 @@ final class WifiDisplayController implements DumpUtils.Dump {
WifiP2pWfdInfo wfdInfo = new WifiP2pWfdInfo();
wfdInfo.setWfdEnabled(true);
- wfdInfo.setDeviceType(WifiP2pWfdInfo.WFD_SOURCE);
+ wfdInfo.setDeviceType(WifiP2pWfdInfo.DEVICE_TYPE_WFD_SOURCE);
wfdInfo.setSessionAvailable(true);
wfdInfo.setControlPort(DEFAULT_CONTROL_PORT);
wfdInfo.setMaxThroughput(MAX_THROUGHPUT);
- mWifiP2pManager.setWFDInfo(mWifiP2pChannel, wfdInfo, new ActionListener() {
+ mWifiP2pManager.setWfdInfo(mWifiP2pChannel, wfdInfo, new ActionListener() {
@Override
public void onSuccess() {
if (DEBUG) {
@@ -324,7 +324,7 @@ final class WifiDisplayController implements DumpUtils.Dump {
if (mWfdEnabled || mWfdEnabling) {
WifiP2pWfdInfo wfdInfo = new WifiP2pWfdInfo();
wfdInfo.setWfdEnabled(false);
- mWifiP2pManager.setWFDInfo(mWifiP2pChannel, wfdInfo, new ActionListener() {
+ mWifiP2pManager.setWfdInfo(mWifiP2pChannel, wfdInfo, new ActionListener() {
@Override
public void onSuccess() {
if (DEBUG) {
@@ -508,7 +508,8 @@ final class WifiDisplayController implements DumpUtils.Dump {
Slog.d(TAG, "updateDesiredDevice: new information "
+ describeWifiP2pDevice(device));
}
- mDesiredDevice.update(device);
+ mDesiredDevice.updateSupplicantDetails(device);
+ mDesiredDevice.status = device.status;
if (mAdvertisedDisplay != null
&& mAdvertisedDisplay.getDeviceAddress().equals(address)) {
readvertiseDisplay(createWifiDisplay(mDesiredDevice));
@@ -694,7 +695,7 @@ final class WifiDisplayController implements DumpUtils.Dump {
config.wps = wps;
config.deviceAddress = mConnectingDevice.deviceAddress;
// Helps with STA & P2P concurrency
- config.groupOwnerIntent = WifiP2pConfig.MIN_GROUP_OWNER_INTENT;
+ config.groupOwnerIntent = WifiP2pConfig.GROUP_OWNER_INTENT_MIN;
WifiDisplay display = createWifiDisplay(mConnectingDevice);
advertiseDisplay(display, null, 0, 0, 0);
@@ -824,6 +825,10 @@ final class WifiDisplayController implements DumpUtils.Dump {
requestPeers();
}
+ private static boolean contains(WifiP2pGroup group, WifiP2pDevice device) {
+ return group.getOwner().equals(device) || group.getClientList().contains(device);
+ }
+
private void handleConnectionChanged(NetworkInfo networkInfo) {
mNetworkInfo = networkInfo;
if (mWfdEnabled && networkInfo.isConnected()) {
@@ -835,7 +840,7 @@ final class WifiDisplayController implements DumpUtils.Dump {
Slog.d(TAG, "Received group info: " + describeWifiP2pGroup(info));
}
- if (mConnectingDevice != null && !info.contains(mConnectingDevice)) {
+ if (mConnectingDevice != null && !contains(info, mConnectingDevice)) {
Slog.i(TAG, "Aborting connection to Wifi display because "
+ "the current P2P group does not contain the device "
+ "we expected to find: " + mConnectingDevice.deviceName
@@ -844,7 +849,7 @@ final class WifiDisplayController implements DumpUtils.Dump {
return;
}
- if (mDesiredDevice != null && !info.contains(mDesiredDevice)) {
+ if (mDesiredDevice != null && !contains(info, mDesiredDevice)) {
disconnect();
return;
}
@@ -1038,14 +1043,15 @@ final class WifiDisplayController implements DumpUtils.Dump {
}
private static boolean isWifiDisplay(WifiP2pDevice device) {
- return device.wfdInfo != null
- && device.wfdInfo.isWfdEnabled()
- && isPrimarySinkDeviceType(device.wfdInfo.getDeviceType());
+ WifiP2pWfdInfo wfdInfo = device.getWfdInfo();
+ return wfdInfo != null
+ && wfdInfo.isWfdEnabled()
+ && isPrimarySinkDeviceType(wfdInfo.getDeviceType());
}
private static boolean isPrimarySinkDeviceType(int deviceType) {
- return deviceType == WifiP2pWfdInfo.PRIMARY_SINK
- || deviceType == WifiP2pWfdInfo.SOURCE_OR_PRIMARY_SINK;
+ return deviceType == WifiP2pWfdInfo.DEVICE_TYPE_PRIMARY_SINK
+ || deviceType == WifiP2pWfdInfo.DEVICE_TYPE_SOURCE_OR_PRIMARY_SINK;
}
private static String describeWifiP2pDevice(WifiP2pDevice device) {
@@ -1058,7 +1064,7 @@ final class WifiDisplayController implements DumpUtils.Dump {
private static WifiDisplay createWifiDisplay(WifiP2pDevice device) {
return new WifiDisplay(device.deviceAddress, device.deviceName, null,
- true, device.wfdInfo.isSessionAvailable(), false);
+ true, device.getWfdInfo().isSessionAvailable(), false);
}
private final BroadcastReceiver mWifiP2pReceiver = new BroadcastReceiver() {
diff --git a/services/core/java/com/android/server/location/GnssNetworkConnectivityHandler.java b/services/core/java/com/android/server/location/GnssNetworkConnectivityHandler.java
index 2e72fbd95931..93227bd78a81 100644
--- a/services/core/java/com/android/server/location/GnssNetworkConnectivityHandler.java
+++ b/services/core/java/com/android/server/location/GnssNetworkConnectivityHandler.java
@@ -321,7 +321,11 @@ class GnssNetworkConnectivityHandler {
private void handleUpdateNetworkState(Network network, boolean isConnected,
NetworkCapabilities capabilities) {
- boolean networkAvailable = isConnected && TelephonyManager.getDefault().getDataEnabled();
+ boolean networkAvailable = false;
+ TelephonyManager telephonyManager = mContext.getSystemService(TelephonyManager.class);
+ if (telephonyManager != null) {
+ networkAvailable = isConnected && telephonyManager.getDataEnabled();
+ }
NetworkAttributes networkAttributes = updateTrackedNetworksState(isConnected, network,
capabilities);
String apn = networkAttributes.mApn;
diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java
index 41806cabef3f..08c94267e969 100644
--- a/services/core/java/com/android/server/net/NetworkStatsService.java
+++ b/services/core/java/com/android/server/net/NetworkStatsService.java
@@ -337,7 +337,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
NetworkStatsService service = new NetworkStatsService(context, networkManager, alarmManager,
- wakeLock, getDefaultClock(), TelephonyManager.getDefault(),
+ wakeLock, getDefaultClock(), context.getSystemService(TelephonyManager.class),
new DefaultNetworkStatsSettings(context), new NetworkStatsFactory(),
new NetworkStatsObservers(), getDefaultSystemDir(), getDefaultBaseDir());
service.registerLocalService();
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index dd561e10874f..d66aa18950d0 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -2170,14 +2170,21 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
}
}
+ @Deprecated
@Override
public ParcelFileDescriptor getWallpaper(String callingPkg, IWallpaperManagerCallback cb,
final int which, Bundle outParams, int wallpaperUserId) {
+ return getWallpaperWithFeature(callingPkg, null, cb, which, outParams, wallpaperUserId);
+ }
+
+ @Override
+ public ParcelFileDescriptor getWallpaperWithFeature(String callingPkg, String callingFeatureId,
+ IWallpaperManagerCallback cb, final int which, Bundle outParams, int wallpaperUserId) {
final int hasPrivilege = mContext.checkCallingOrSelfPermission(
android.Manifest.permission.READ_WALLPAPER_INTERNAL);
if (hasPrivilege != PackageManager.PERMISSION_GRANTED) {
mContext.getSystemService(StorageManager.class).checkPermissionReadImages(true,
- Binder.getCallingPid(), Binder.getCallingUid(), callingPkg);
+ Binder.getCallingPid(), Binder.getCallingUid(), callingPkg, callingFeatureId);
}
wallpaperUserId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index e80c9b33d57b..8039724edf64 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -4358,7 +4358,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
final boolean isDisplaySleeping = getDisplay().isSleeping()
&& getDisplayId() != DEFAULT_DISPLAY;
// Whether this activity is the top activity of this stack.
- final boolean isTop = this == stack.getTopActivity();
+ final boolean isTop = this == stack.getTopNonFinishingActivity();
// Exclude the case where this is the top activity in a pinned stack.
final boolean isTopNotPinnedStack = stack.isAttached()
&& stack.getDisplay().isTopNotPinnedStack(stack);
@@ -6171,8 +6171,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
// The rest of the condition is that only one side is smaller than the parent, but it still
// needs to exclude the cases where the size is limited by the fixed aspect ratio.
if (info.maxAspectRatio > 0) {
- final float aspectRatio = (0.5f + Math.max(appWidth, appHeight))
- / Math.min(appWidth, appHeight);
+ final float aspectRatio = Math.max(appWidth, appHeight) / Math.min(appWidth, appHeight);
if (aspectRatio >= info.maxAspectRatio) {
// The current size has reached the max aspect ratio.
return false;
diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java
index a91998aa2b04..8385232b72d8 100644
--- a/services/core/java/com/android/server/wm/ActivityStack.java
+++ b/services/core/java/com/android/server/wm/ActivityStack.java
@@ -421,8 +421,6 @@ class ActivityStack extends WindowContainer<Task> implements BoundsAnimationTarg
/** Stores the override windowing-mode from before a transient mode change (eg. split) */
private int mRestoreOverrideWindowingMode = WINDOWING_MODE_UNDEFINED;
- private final ActivityOptions mTmpOptions = ActivityOptions.makeBasic();
-
/** List for processing through a set of activities */
private final ArrayList<ActivityRecord> mTmpActivities = new ArrayList<>();
@@ -750,7 +748,6 @@ class ActivityStack extends WindowContainer<Task> implements BoundsAnimationTarg
// Leaving a transient mode. Interpret UNDEFINED as "restore"
windowingMode = mRestoreOverrideWindowingMode;
}
- mTmpOptions.setLaunchWindowingMode(windowingMode);
// Need to make sure windowing mode is supported. If we in the process of creating the stack
// no need to resolve the windowing mode again as it is already resolved to the right mode.
@@ -797,7 +794,7 @@ class ActivityStack extends WindowContainer<Task> implements BoundsAnimationTarg
return;
}
- final ActivityRecord topActivity = getTopActivity();
+ final ActivityRecord topActivity = getTopNonFinishingActivity();
// For now, assume that the Stack's windowing mode is what will actually be used
// by it's activities. In the future, there may be situations where this doesn't
@@ -1044,9 +1041,9 @@ class ActivityStack extends WindowContainer<Task> implements BoundsAnimationTarg
return null;
}
- ActivityRecord getTopActivity() {
+ ActivityRecord getTopNonFinishingActivity() {
for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
- final ActivityRecord r = getChildAt(taskNdx).getTopActivity();
+ final ActivityRecord r = getChildAt(taskNdx).getTopNonFinishingActivity();
if (r != null) {
return r;
}
@@ -1267,7 +1264,7 @@ class ActivityStack extends WindowContainer<Task> implements BoundsAnimationTarg
}
// Overlays should not be considered as the task's logical top activity.
- final ActivityRecord r = task.getTopActivity(false /* includeOverlays */);
+ final ActivityRecord r = task.getTopNonFinishingActivity(false /* includeOverlays */);
if (r == null || r.finishing || r.mUserId != userId ||
r.launchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE) {
if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": mismatch root " + r);
@@ -1826,7 +1823,7 @@ class ActivityStack extends WindowContainer<Task> implements BoundsAnimationTarg
}
boolean isTopActivityVisible() {
- final ActivityRecord topActivity = getTopActivity();
+ final ActivityRecord topActivity = getTopNonFinishingActivity();
return topActivity != null && topActivity.visible;
}
@@ -2902,7 +2899,7 @@ class ActivityStack extends WindowContainer<Task> implements BoundsAnimationTarg
boolean startIt = true;
for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
task = getChildAt(taskNdx);
- if (task.getTopActivity() == null) {
+ if (task.getTopNonFinishingActivity() == null) {
// All activities in task are finishing.
continue;
}
@@ -3383,7 +3380,7 @@ class ActivityStack extends WindowContainer<Task> implements BoundsAnimationTarg
int taskNdx = mChildren.indexOf(task);
if (taskNdx >= 0) {
- ActivityRecord newTop = getChildAt(taskNdx).getTopActivity();
+ ActivityRecord newTop = getChildAt(taskNdx).getTopNonFinishingActivity();
if (newTop != null) {
taskTop = newTop;
}
@@ -4005,7 +4002,8 @@ class ActivityStack extends WindowContainer<Task> implements BoundsAnimationTarg
if (DEBUG_SWITCH) Slog.v(TAG_SWITCH, "moveTaskToFront: " + tr);
final ActivityStack topStack = getDisplay().getTopStack();
- final ActivityRecord topActivity = topStack != null ? topStack.getTopActivity() : null;
+ final ActivityRecord topActivity = topStack != null
+ ? topStack.getTopNonFinishingActivity() : null;
final int numTasks = getChildCount();
final int index = mChildren.indexOf(tr);
if (numTasks == 0 || index < 0) {
@@ -4036,7 +4034,7 @@ class ActivityStack extends WindowContainer<Task> implements BoundsAnimationTarg
positionChildAtTop(tr);
// Don't refocus if invisible to current user
- final ActivityRecord top = tr.getTopActivity();
+ final ActivityRecord top = tr.getTopNonFinishingActivity();
if (top == null || !top.okToShowLocked()) {
if (top != null) {
mStackSupervisor.mRecentTasks.add(top.getTask());
@@ -4355,7 +4353,7 @@ class ActivityStack extends WindowContainer<Task> implements BoundsAnimationTarg
int userId = UserHandle.getUserId(callingUid);
for (int taskNdx = getChildCount() - 1; taskNdx >= 0; --taskNdx) {
final Task task = getChildAt(taskNdx);
- if (task.getTopActivity() == null) {
+ if (task.getTopNonFinishingActivity() == null) {
// Skip if there are no activities in the task
continue;
}
diff --git a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
index 016654fcdf82..530fdcf066a9 100644
--- a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
@@ -1428,7 +1428,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks {
moveHomeStackToFrontIfNeeded(flags, currentStack.getDisplay(), reason);
}
- final ActivityRecord r = task.getTopActivity();
+ final ActivityRecord r = task.getTopNonFinishingActivity();
currentStack.moveTaskToFrontLocked(task, false /* noAnimation */, options,
r == null ? null : r.appTimeTracker, reason);
@@ -2077,7 +2077,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks {
// When launching tasks behind, update the last active time of the top task after the new
// task has been shown briefly
- final ActivityRecord top = stack.getTopActivity();
+ final ActivityRecord top = stack.getTopNonFinishingActivity();
if (top != null) {
top.getTask().touchActiveTime();
}
@@ -2458,7 +2458,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks {
/** Notifies that the top activity of the task is forced to be resizeable. */
private void handleForcedResizableTaskIfNeeded(Task task, int reason) {
- final ActivityRecord topActivity = task.getTopActivity();
+ final ActivityRecord topActivity = task.getTopNonFinishingActivity();
if (topActivity == null || topActivity.noDisplay
|| !topActivity.isNonResizableOrForcedResizable(task.getWindowingMode())) {
return;
@@ -2750,7 +2750,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks {
// Work Challenge is present) let startActivityInPackage handle the intercepting.
if (!mService.mAmInternal.shouldConfirmCredentials(task.mUserId)
&& task.getRootActivity() != null) {
- final ActivityRecord targetActivity = task.getTopActivity();
+ final ActivityRecord targetActivity = task.getTopNonFinishingActivity();
mRootActivityContainer.sendPowerHintForLaunchStartIfNeeded(
true /* forceSend */, targetActivity);
@@ -2767,7 +2767,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks {
}
mService.getActivityStartController().postStartActivityProcessingForLastStarter(
- task.getTopActivity(), ActivityManager.START_TASK_TO_FRONT,
+ task.getTopNonFinishingActivity(), ActivityManager.START_TASK_TO_FRONT,
task.getStack());
return ActivityManager.START_TASK_TO_FRONT;
}
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index 2218c7237e76..be7f88700d88 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -1502,7 +1502,8 @@ class ActivityStarter {
return startResult;
}
- final ActivityRecord targetTaskTop = newTask ? null : targetTask.getTopActivity();
+ final ActivityRecord targetTaskTop = newTask
+ ? null : targetTask.getTopNonFinishingActivity();
if (targetTaskTop != null) {
// Recycle the target task for this launch.
startResult = recycleTask(targetTask, targetTaskTop, reusedTask);
@@ -1559,8 +1560,8 @@ class ActivityStarter {
mRootActivityContainer.sendPowerHintForLaunchStartIfNeeded(
false /* forceSend */, mStartActivity);
- mTargetStack.startActivityLocked(mStartActivity, topStack.getTopActivity(), newTask,
- mKeepCurTransition, mOptions);
+ mTargetStack.startActivityLocked(mStartActivity, topStack.getTopNonFinishingActivity(),
+ newTask, mKeepCurTransition, mOptions);
if (mDoResume) {
final ActivityRecord topTaskActivity =
mStartActivity.getTask().topRunningActivityLocked();
@@ -1612,7 +1613,7 @@ class ActivityStarter {
return mInTask;
} else {
final ActivityRecord top = computeStackFocus(mStartActivity, false /* newTask */,
- mLaunchFlags, mOptions).getTopActivity();
+ mLaunchFlags, mOptions).getTopNonFinishingActivity();
if (top != null) {
return top.getTask();
}
@@ -1727,7 +1728,8 @@ class ActivityStarter {
return START_RETURN_INTENT_TO_CALLER;
}
- complyActivityFlags(targetTask, reusedTask != null ? reusedTask.getTopActivity() : null);
+ complyActivityFlags(targetTask,
+ reusedTask != null ? reusedTask.getTopNonFinishingActivity() : null);
if (clearTaskForReuse) {
// Clear task for re-use so later code to methods
@@ -1755,7 +1757,7 @@ class ActivityStarter {
// FLAG_ACTIVITY_CLEAR_TOP flag. In that case, return the top running activity in the
// task instead.
mLastStartActivityRecord =
- targetTaskTop.finishing ? targetTask.getTopActivity() : targetTaskTop;
+ targetTaskTop.finishing ? targetTask.getTopNonFinishingActivity() : targetTaskTop;
return mMovedToFront ? START_TASK_TO_FRONT : START_DELIVERED_TO_TOP;
}
@@ -1806,7 +1808,7 @@ class ActivityStarter {
* task.
*/
private void complyActivityFlags(Task targetTask, ActivityRecord reusedActivity) {
- ActivityRecord targetTaskTop = targetTask.getTopActivity();
+ ActivityRecord targetTaskTop = targetTask.getTopNonFinishingActivity();
final boolean resetTask =
reusedActivity != null && (mLaunchFlags & FLAG_ACTIVITY_RESET_TASK_IF_NEEDED) != 0;
if (resetTask) {
@@ -2037,7 +2039,8 @@ class ActivityStarter {
if (!mOptions.canTaskOverlayResume()) {
final Task task = mRootActivityContainer.anyTaskForId(
mOptions.getLaunchTaskId());
- final ActivityRecord top = task != null ? task.getTopActivity() : null;
+ final ActivityRecord top = task != null
+ ? task.getTopNonFinishingActivity() : null;
if (top != null && !top.isState(RESUMED)) {
// The caller specifies that we'd like to be avoided to be moved to the
@@ -2295,8 +2298,8 @@ class ActivityStarter {
if (differentTopTask && !mAvoidMoveToFront) {
mStartActivity.intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
- if (mSourceRecord == null || (mSourceStack.getTopActivity() != null &&
- mSourceStack.getTopActivity().getTask()
+ if (mSourceRecord == null || (mSourceStack.getTopNonFinishingActivity() != null &&
+ mSourceStack.getTopNonFinishingActivity().getTask()
== mSourceRecord.getTask())) {
// We really do want to push this one into the user's face, right now.
if (mLaunchTaskBehind && mSourceRecord != null) {
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 79c76b9ff8dc..6977a45e3275 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -2410,7 +2410,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
mStackSupervisor.findTaskToMoveToFront(task, flags, realOptions, "moveTaskToFront",
false /* forceNonResizable */);
- final ActivityRecord topActivity = task.getTopActivity();
+ final ActivityRecord topActivity = task.getTopNonFinishingActivity();
if (topActivity != null) {
// We are reshowing a task, use a starting window to hide the initial draw delay
@@ -2999,7 +2999,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
public boolean isTopOfTask(IBinder token) {
synchronized (mGlobalLock) {
ActivityRecord r = ActivityRecord.isInStackLocked(token);
- return r != null && r.getTask().getTopActivity() == r;
+ return r != null && r.getTask().getTopNonFinishingActivity() == r;
}
}
@@ -3589,7 +3589,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
"enqueueAssistContext()");
synchronized (mGlobalLock) {
- ActivityRecord activity = getTopDisplayFocusedStack().getTopActivity();
+ ActivityRecord activity = getTopDisplayFocusedStack().getTopNonFinishingActivity();
if (activity == null) {
Slog.w(TAG, "getAssistContextExtras failed: no top activity");
return null;
@@ -3722,7 +3722,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
return false;
}
- final ActivityRecord activity = focusedStack.getTopActivity();
+ final ActivityRecord activity = focusedStack.getTopNonFinishingActivity();
if (activity == null) {
return false;
}
@@ -3737,7 +3737,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
try {
synchronized (mGlobalLock) {
ActivityRecord caller = ActivityRecord.forTokenLocked(token);
- ActivityRecord top = getTopDisplayFocusedStack().getTopActivity();
+ ActivityRecord top = getTopDisplayFocusedStack().getTopNonFinishingActivity();
if (top != caller) {
Slog.w(TAG, "showAssistFromActivity failed: caller " + caller
+ " is not current top " + top);
@@ -4355,7 +4355,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
public void startLocalVoiceInteraction(IBinder callingActivity, Bundle options) {
Slog.i(TAG, "Activity tried to startLocalVoiceInteraction");
synchronized (mGlobalLock) {
- ActivityRecord activity = getTopDisplayFocusedStack().getTopActivity();
+ ActivityRecord activity = getTopDisplayFocusedStack().getTopNonFinishingActivity();
if (ActivityRecord.forTokenLocked(callingActivity) != activity) {
throw new SecurityException("Only focused activity can call startVoiceInteraction");
}
@@ -6576,7 +6576,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
+ " Requested task not found");
return null;
}
- final ActivityRecord activity = task.getTopActivity();
+ final ActivityRecord activity = task.getTopNonFinishingActivity();
if (activity == null) {
Slog.w(TAG, "getApplicationThreadForTopActivity failed:"
+ " Requested activity not found");
diff --git a/services/core/java/com/android/server/wm/DisplayRotation.java b/services/core/java/com/android/server/wm/DisplayRotation.java
index 0c68084151c7..c76d03cf27cb 100644
--- a/services/core/java/com/android/server/wm/DisplayRotation.java
+++ b/services/core/java/com/android/server/wm/DisplayRotation.java
@@ -541,8 +541,8 @@ public class DisplayRotation {
}
mService.mH.removeCallbacks(mDisplayRotationHandlerTimeout);
mIsWaitingForRemoteRotation = false;
- mService.mAtmService.applyContainerTransaction(t);
mDisplayContent.sendNewConfiguration();
+ mService.mAtmService.applyContainerTransaction(t);
}
}
diff --git a/services/core/java/com/android/server/wm/LockTaskController.java b/services/core/java/com/android/server/wm/LockTaskController.java
index 6810f8c16164..2ece6e21b2c5 100644
--- a/services/core/java/com/android/server/wm/LockTaskController.java
+++ b/services/core/java/com/android/server/wm/LockTaskController.java
@@ -239,7 +239,7 @@ public class LockTaskController {
boolean activityBlockedFromFinish(ActivityRecord activity) {
final Task task = activity.getTask();
if (activity == task.getRootActivity()
- && activity == task.getTopActivity()
+ && activity == task.getTopNonFinishingActivity()
&& task.mLockTaskAuth != LOCK_TASK_AUTH_LAUNCHABLE_PRIV
&& isRootTask(task)) {
Slog.i(TAG, "Not finishing task in lock task mode");
diff --git a/services/core/java/com/android/server/wm/RecentTasks.java b/services/core/java/com/android/server/wm/RecentTasks.java
index 2f46937bb1d9..f0e441fe77b1 100644
--- a/services/core/java/com/android/server/wm/RecentTasks.java
+++ b/services/core/java/com/android/server/wm/RecentTasks.java
@@ -717,7 +717,7 @@ class RecentTasks {
// Only look at tasks for the user ID of interest.
continue;
}
- if (task.autoRemoveRecents && task.getTopActivity() == null) {
+ if (task.autoRemoveRecents && task.getTopNonFinishingActivity() == null) {
// This situation is broken, and we should just get rid of it now.
remove(task);
Slog.w(TAG, "Removing auto-remove without activity: " + task);
@@ -931,7 +931,7 @@ class RecentTasks {
}
}
- if (task.autoRemoveRecents && task.getTopActivity() == null) {
+ if (task.autoRemoveRecents && task.getTopNonFinishingActivity() == null) {
// Don't include auto remove tasks that are finished or finishing.
if (DEBUG_RECENTS) {
Slog.d(TAG_RECENTS, "Skipping, auto-remove without activity: " + task);
diff --git a/services/core/java/com/android/server/wm/RecentsAnimation.java b/services/core/java/com/android/server/wm/RecentsAnimation.java
index caf95de75357..948ed7941880 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimation.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimation.java
@@ -429,7 +429,7 @@ class RecentsAnimation implements RecentsAnimationCallbacks,
// 1) The next launching task is not being animated by the recents animation
// 2) The next task is home activity. (i.e. pressing home key to back home in recents).
if ((!controller.isAnimatingTask(stack.getTopChild())
- || controller.isTargetApp(stack.getTopActivity()))
+ || controller.isTargetApp(stack.getTopNonFinishingActivity()))
&& controller.shouldDeferCancelUntilNextTransition()) {
// Always prepare an app transition since we rely on the transition callbacks to cleanup
mWindowManager.prepareAppTransition(TRANSIT_NONE, false);
@@ -494,7 +494,7 @@ class RecentsAnimation implements RecentsAnimationCallbacks,
final Task task = targetStack.getChildAt(i);
if (task.mUserId == mUserId
&& task.getBaseIntent().getComponent().equals(mTargetIntent.getComponent())) {
- return task.getTopActivity();
+ return task.getTopNonFinishingActivity();
}
}
return null;
diff --git a/services/core/java/com/android/server/wm/RootActivityContainer.java b/services/core/java/com/android/server/wm/RootActivityContainer.java
index 06cce520d0bf..0995df8693a1 100644
--- a/services/core/java/com/android/server/wm/RootActivityContainer.java
+++ b/services/core/java/com/android/server/wm/RootActivityContainer.java
@@ -676,7 +676,7 @@ class RootActivityContainer extends ConfigurationContainer
final ActivityStack stack = display.getChildAt(j);
// Get top activity from a visible stack and add it to the list.
if (stack.shouldBeVisible(null /* starting */)) {
- final ActivityRecord top = stack.getTopActivity();
+ final ActivityRecord top = stack.getTopNonFinishingActivity();
if (top != null) {
if (stack == topFocusedStack) {
topActivityTokens.add(0, top.appToken);
@@ -1268,8 +1268,8 @@ class RootActivityContainer extends ConfigurationContainer
taskIds[i] = task.mTaskId;
taskNames[i] = task.origActivity != null ? task.origActivity.flattenToString()
: task.realActivity != null ? task.realActivity.flattenToString()
- : task.getTopActivity() != null ? task.getTopActivity().packageName
- : "unknown";
+ : task.getTopNonFinishingActivity() != null
+ ? task.getTopNonFinishingActivity().packageName : "unknown";
taskBounds[i] = mService.getTaskBounds(task.mTaskId);
taskUserIds[i] = task.mUserId;
}
@@ -2138,7 +2138,7 @@ class RootActivityContainer extends ConfigurationContainer
*/
private boolean taskTopActivityIsUser(Task task, @UserIdInt int userId) {
// To handle the case that work app is in the task but just is not the top one.
- final ActivityRecord activityRecord = task.getTopActivity();
+ final ActivityRecord activityRecord = task.getTopNonFinishingActivity();
final ActivityRecord resultTo = (activityRecord != null ? activityRecord.resultTo : null);
return (activityRecord != null && activityRecord.mUserId == userId)
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index b229a1d0a8e7..96bac88f0984 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -60,9 +60,7 @@ import static com.android.server.EventLogTags.WM_TASK_CREATED;
import static com.android.server.EventLogTags.WM_TASK_REMOVED;
import static com.android.server.am.TaskRecordProto.ACTIVITIES;
import static com.android.server.am.TaskRecordProto.ACTIVITY_TYPE;
-import static com.android.server.am.TaskRecordProto.BOUNDS;
import static com.android.server.am.TaskRecordProto.FULLSCREEN;
-import static com.android.server.am.TaskRecordProto.ID;
import static com.android.server.am.TaskRecordProto.LAST_NON_FULLSCREEN_BOUNDS;
import static com.android.server.am.TaskRecordProto.MIN_HEIGHT;
import static com.android.server.am.TaskRecordProto.MIN_WIDTH;
@@ -89,10 +87,8 @@ import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLAS
import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_DOCKED_DIVIDER;
import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ADD_REMOVE;
import static com.android.server.wm.TaskProto.APP_WINDOW_TOKENS;
-import static com.android.server.wm.TaskProto.BOUNDS;
import static com.android.server.wm.TaskProto.DISPLAYED_BOUNDS;
import static com.android.server.wm.TaskProto.FILLS_PARENT;
-import static com.android.server.wm.TaskProto.ID;
import static com.android.server.wm.TaskProto.SURFACE_HEIGHT;
import static com.android.server.wm.TaskProto.SURFACE_WIDTH;
import static com.android.server.wm.TaskProto.WINDOW_CONTAINER;
@@ -314,6 +310,7 @@ class Task extends WindowContainer<ActivityRecord> implements ConfigurationConta
private final Rect mTmpNonDecorBounds = new Rect();
private final Rect mTmpBounds = new Rect();
private final Rect mTmpInsets = new Rect();
+ private final Rect mTmpFullBounds = new Rect();
// Last non-fullscreen bounds the task was launched in or resized to.
// The information is persisted and used to determine the appropriate stack to launch the
@@ -658,7 +655,7 @@ class Task extends WindowContainer<ActivityRecord> implements ConfigurationConta
}
final int toStackWindowingMode = toStack.getWindowingMode();
- final ActivityRecord topActivity = getTopActivity();
+ final ActivityRecord topActivity = getTopNonFinishingActivity();
final boolean mightReplaceWindow = topActivity != null
&& replaceWindowsOnTaskMove(getWindowingMode(), toStackWindowingMode);
@@ -1080,11 +1077,11 @@ class Task extends WindowContainer<ActivityRecord> implements ConfigurationConta
return getChildAt(rootActivityIndex);
}
- ActivityRecord getTopActivity() {
- return getTopActivity(true /* includeOverlays */);
+ ActivityRecord getTopNonFinishingActivity() {
+ return getTopNonFinishingActivity(true /* includeOverlays */);
}
- ActivityRecord getTopActivity(boolean includeOverlays) {
+ ActivityRecord getTopNonFinishingActivity(boolean includeOverlays) {
for (int i = getChildCount() - 1; i >= 0; --i) {
final ActivityRecord r = getChildAt(i);
if (r.finishing || (!includeOverlays && r.mTaskOverlay)) {
@@ -1331,9 +1328,9 @@ class Task extends WindowContainer<ActivityRecord> implements ConfigurationConta
* Completely remove all activities associated with an existing
* task starting at a specified index.
*/
- private void performClearTaskAtIndexLocked(int activityNdx, String reason) {
+ private void performClearTaskAtIndexLocked(String reason) {
int numActivities = getChildCount();
- for ( ; activityNdx < numActivities; ++activityNdx) {
+ for (int activityNdx = 0; activityNdx < numActivities; ++activityNdx) {
final ActivityRecord r = getChildAt(activityNdx);
if (r.finishing) {
continue;
@@ -1358,7 +1355,7 @@ class Task extends WindowContainer<ActivityRecord> implements ConfigurationConta
*/
void performClearTaskLocked() {
mReuseTask = true;
- performClearTaskAtIndexLocked(0, "clear-task-all");
+ performClearTaskAtIndexLocked("clear-task-all");
mReuseTask = false;
}
@@ -1428,7 +1425,7 @@ class Task extends WindowContainer<ActivityRecord> implements ConfigurationConta
void removeTaskActivitiesLocked(String reason) {
// Just remove the entire task.
- performClearTaskAtIndexLocked(0, reason);
+ performClearTaskAtIndexLocked(reason);
}
String lockTaskAuthToString() {
@@ -1673,7 +1670,9 @@ class Task extends WindowContainer<ActivityRecord> implements ConfigurationConta
}
void adjustForMinimalTaskDimensions(Rect bounds, Rect previousBounds) {
- if (bounds == null) {
+ final Rect parentBounds = getParent() != null ? getParent().getBounds() : null;
+ if (bounds == null
+ || (bounds.isEmpty() && (parentBounds == null || parentBounds.isEmpty()))) {
return;
}
int minWidth = mMinWidth;
@@ -1697,6 +1696,14 @@ class Task extends WindowContainer<ActivityRecord> implements ConfigurationConta
minHeight = defaultMinSize;
}
}
+ if (bounds.isEmpty()) {
+ // If inheriting parent bounds, check if parent bounds adhere to minimum size. If they
+ // do, we can just skip.
+ if (parentBounds.width() >= minWidth && parentBounds.height() >= minHeight) {
+ return;
+ }
+ bounds.set(parentBounds);
+ }
final boolean adjustWidth = minWidth > bounds.width();
final boolean adjustHeight = minHeight > bounds.height();
if (!(adjustWidth || adjustHeight)) {
@@ -1948,10 +1955,19 @@ class Task extends WindowContainer<ActivityRecord> implements ConfigurationConta
}
density *= DisplayMetrics.DENSITY_DEFAULT_SCALE;
- final Rect bounds = inOutConfig.windowConfiguration.getBounds();
+ final Rect resolvedBounds = inOutConfig.windowConfiguration.getBounds();
+ if (resolvedBounds == null) {
+ mTmpFullBounds.setEmpty();
+ } else {
+ mTmpFullBounds.set(resolvedBounds);
+ }
+ if (mTmpFullBounds.isEmpty()) {
+ mTmpFullBounds.set(parentConfig.windowConfiguration.getBounds());
+ }
+
Rect outAppBounds = inOutConfig.windowConfiguration.getAppBounds();
if (outAppBounds == null || outAppBounds.isEmpty()) {
- inOutConfig.windowConfiguration.setAppBounds(bounds);
+ inOutConfig.windowConfiguration.setAppBounds(mTmpFullBounds);
outAppBounds = inOutConfig.windowConfiguration.getAppBounds();
}
// Non-null compatibility insets means the activity prefers to keep its original size, so
@@ -1974,7 +1990,7 @@ class Task extends WindowContainer<ActivityRecord> implements ConfigurationConta
// area, i.e. the screen area without the system bars.
// The non decor inset are areas that could never be removed in Honeycomb. See
// {@link WindowManagerPolicy#getNonDecorInsetsLw}.
- calculateInsetFrames(mTmpNonDecorBounds, mTmpStableBounds, bounds, di);
+ calculateInsetFrames(mTmpNonDecorBounds, mTmpStableBounds, mTmpFullBounds, di);
} else {
// Apply the given non-decor and stable insets to calculate the corresponding bounds
// for screen size of configuration.
@@ -1983,8 +1999,8 @@ class Task extends WindowContainer<ActivityRecord> implements ConfigurationConta
rotation = parentConfig.windowConfiguration.getRotation();
}
if (rotation != ROTATION_UNDEFINED && compatInsets != null) {
- mTmpNonDecorBounds.set(bounds);
- mTmpStableBounds.set(bounds);
+ mTmpNonDecorBounds.set(mTmpFullBounds);
+ mTmpStableBounds.set(mTmpFullBounds);
compatInsets.getDisplayBoundsByRotation(mTmpBounds, rotation);
intersectWithInsetsIfFits(mTmpNonDecorBounds, mTmpBounds,
compatInsets.mNonDecorInsets[rotation]);
@@ -2016,13 +2032,13 @@ class Task extends WindowContainer<ActivityRecord> implements ConfigurationConta
if (WindowConfiguration.isFloating(windowingMode)) {
// For floating tasks, calculate the smallest width from the bounds of the task
inOutConfig.smallestScreenWidthDp = (int) (
- Math.min(bounds.width(), bounds.height()) / density);
+ Math.min(mTmpFullBounds.width(), mTmpFullBounds.height()) / density);
} else if (WindowConfiguration.isSplitScreenWindowingMode(windowingMode)) {
// Iterating across all screen orientations, and return the minimum of the task
// width taking into account that the bounds might change because the snap
// algorithm snaps to a different value
inOutConfig.smallestScreenWidthDp =
- getSmallestScreenWidthDpForDockedBounds(bounds);
+ getSmallestScreenWidthDpForDockedBounds(mTmpFullBounds);
}
// otherwise, it will just inherit
}
@@ -2067,11 +2083,6 @@ class Task extends WindowContainer<ActivityRecord> implements ConfigurationConta
newParentConfig.orientation);
}
- if (outOverrideBounds.isEmpty()) {
- // If the task fills the parent, just inherit all the other configs from parent.
- return;
- }
-
adjustForMinimalTaskDimensions(outOverrideBounds, mTmpBounds);
if (windowingMode == WINDOWING_MODE_FREEFORM) {
// by policy, make sure the window remains within parent somewhere
@@ -2118,7 +2129,7 @@ class Task extends WindowContainer<ActivityRecord> implements ConfigurationConta
// Use the top activity as the reference of orientation. Don't include overlays because
// it is usually not the actual content or just temporarily shown.
// E.g. ForcedResizableInfoActivity.
- refActivity = getTopActivity(false /* includeOverlays */);
+ refActivity = getTopNonFinishingActivity(false /* includeOverlays */);
}
// If the task or the reference activity requires a different orientation (either by
@@ -2901,7 +2912,7 @@ class Task extends WindowContainer<ActivityRecord> implements ConfigurationConta
info.stackId = getStackId();
info.taskId = mTaskId;
info.displayId = mStack == null ? Display.INVALID_DISPLAY : mStack.mDisplayId;
- info.isRunning = getTopActivity() != null;
+ info.isRunning = getTopNonFinishingActivity() != null;
info.baseIntent = new Intent(getBaseIntent());
info.baseActivity = mReuseActivitiesReport.base != null
? mReuseActivitiesReport.base.intent.getComponent()
diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
index d7bc072dc69a..8ad8972937cd 100644
--- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
+++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
@@ -284,7 +284,8 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier {
&& outParams.mBounds.isEmpty()
&& source.getDisplayId() == display.mDisplayId) {
// Set bounds to be not very far from source activity.
- cascadeBounds(source.getBounds(), display, outParams.mBounds);
+ cascadeBounds(source.getConfiguration().windowConfiguration.getBounds(),
+ display, outParams.mBounds);
}
getTaskBounds(root, display, layout, resolvedMode, hasInitialBounds, outParams.mBounds);
}
diff --git a/services/core/java/com/android/server/wm/TaskPositioner.java b/services/core/java/com/android/server/wm/TaskPositioner.java
index f7b802da8860..a867a5d41e24 100644
--- a/services/core/java/com/android/server/wm/TaskPositioner.java
+++ b/services/core/java/com/android/server/wm/TaskPositioner.java
@@ -133,14 +133,15 @@ class TaskPositioner implements IBinder.DeathRecipient {
@Override
public void onInputEvent(InputEvent event) {
- if (!(event instanceof MotionEvent)
- || (event.getSource() & InputDevice.SOURCE_CLASS_POINTER) == 0) {
- return;
- }
- final MotionEvent motionEvent = (MotionEvent) event;
boolean handled = false;
-
try {
+ // All returns need to be in the try block to make sure the finishInputEvent is
+ // called correctly.
+ if (!(event instanceof MotionEvent)
+ || (event.getSource() & InputDevice.SOURCE_CLASS_POINTER) == 0) {
+ return;
+ }
+ final MotionEvent motionEvent = (MotionEvent) event;
if (mDragEnded) {
// The drag has ended but the clean-up message has not been processed by
// window manager. Drop events that occur after this until window manager
diff --git a/services/core/java/com/android/server/wm/WindowFrames.java b/services/core/java/com/android/server/wm/WindowFrames.java
index 84fcfbd43d32..bafa38c7f4a7 100644
--- a/services/core/java/com/android/server/wm/WindowFrames.java
+++ b/services/core/java/com/android/server/wm/WindowFrames.java
@@ -106,6 +106,16 @@ public class WindowFrames {
*/
final Rect mLastFrame = new Rect();
+ /**
+ * mFrame but relative to the parent container.
+ */
+ final Rect mRelFrame = new Rect();
+
+ /**
+ * mLastFrame but relative to the parent container
+ */
+ final Rect mLastRelFrame = new Rect();
+
private boolean mFrameSizeChanged = false;
// Frame that is scaled to the application's coordinate space when in
diff --git a/services/core/java/com/android/server/wm/WindowProcessController.java b/services/core/java/com/android/server/wm/WindowProcessController.java
index d63fbc217e54..41e88c8f763b 100644
--- a/services/core/java/com/android/server/wm/WindowProcessController.java
+++ b/services/core/java/com/android/server/wm/WindowProcessController.java
@@ -554,7 +554,7 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio
if (task == null) {
continue;
}
- ActivityRecord topActivity = task.getTopActivity();
+ ActivityRecord topActivity = task.getTopNonFinishingActivity();
if (topActivity != null && topActivity.visible) {
return true;
}
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index f98e30748847..db0f3bc139bc 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -212,7 +212,6 @@ import com.android.internal.util.ToBooleanFunction;
import com.android.server.policy.WindowManagerPolicy;
import com.android.server.protolog.common.ProtoLog;
import com.android.server.wm.LocalAnimationAdapter.AnimationSpec;
-import com.android.server.wm.utils.InsetUtils;
import com.android.server.wm.utils.WmDisplayCutout;
import java.io.PrintWriter;
@@ -1129,6 +1128,22 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
}
}
+ // Calculate relative frame
+ mWindowFrames.mRelFrame.set(mWindowFrames.mFrame);
+ WindowContainer parent = getParent();
+ int parentLeft = 0;
+ int parentTop = 0;
+ if (mIsChildWindow) {
+ parentLeft = ((WindowState) parent).mWindowFrames.mFrame.left;
+ parentTop = ((WindowState) parent).mWindowFrames.mFrame.top;
+ } else if (parent != null) {
+ final Rect parentBounds = parent.getDisplayedBounds();
+ parentLeft = parentBounds.left;
+ parentTop = parentBounds.top;
+ }
+ mWindowFrames.mRelFrame.offsetTo(mWindowFrames.mFrame.left - parentLeft,
+ mWindowFrames.mFrame.top - parentTop);
+
if (DEBUG_LAYOUT || DEBUG) {
Slog.v(TAG, "Resolving (mRequestedWidth="
+ mRequestedWidth + ", mRequestedheight="
@@ -1154,6 +1169,11 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
return mWindowFrames.mFrame;
}
+ /** Accessor for testing */
+ Rect getRelativeFrameLw() {
+ return mWindowFrames.mRelFrame;
+ }
+
@Override
public Rect getDisplayFrameLw() {
return mWindowFrames.mDisplayFrame;
@@ -1289,6 +1309,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
// We update mLastFrame always rather than in the conditional with the last inset
// variables, because mFrameSizeChanged only tracks the width and height changing.
mWindowFrames.mLastFrame.set(mWindowFrames.mFrame);
+ mWindowFrames.mLastRelFrame.set(mWindowFrames.mRelFrame);
if (didFrameInsetsChange
|| winAnimator.mSurfaceResized
@@ -1859,8 +1880,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
private boolean hasMoved() {
return mHasSurface && (mWindowFrames.hasContentChanged() || mMovedByResize)
&& !mAnimatingExit
- && (mWindowFrames.mFrame.top != mWindowFrames.mLastFrame.top
- || mWindowFrames.mFrame.left != mWindowFrames.mLastFrame.left)
+ && (mWindowFrames.mRelFrame.top != mWindowFrames.mLastRelFrame.top
+ || mWindowFrames.mRelFrame.left != mWindowFrames.mLastRelFrame.left)
&& (!mIsChildWindow || !getParentWindow().hasMoved());
}
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 2a364e6e4aae..3043b6f9d80c 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -83,6 +83,7 @@ import com.android.server.am.ActivityManagerService;
import com.android.server.appbinding.AppBindingService;
import com.android.server.attention.AttentionManagerService;
import com.android.server.audio.AudioService;
+import com.android.server.biometrics.AuthService;
import com.android.server.biometrics.BiometricService;
import com.android.server.biometrics.face.FaceService;
import com.android.server.biometrics.fingerprint.FingerprintService;
@@ -1775,8 +1776,13 @@ public final class SystemServer {
t.traceBegin("StartBiometricService");
mSystemServiceManager.startService(BiometricService.class);
t.traceEnd();
+
+ t.traceBegin("StartAuthService");
+ mSystemServiceManager.startService(AuthService.class);
+ t.traceEnd();
}
+
t.traceBegin("StartBackgroundDexOptService");
try {
BackgroundDexOptService.schedule(context);
diff --git a/services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java
index 9c9730501a78..45de451e5bea 100644
--- a/services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java
@@ -33,6 +33,8 @@ import static com.android.server.DeviceIdleController.LIGHT_STATE_OVERRIDE;
import static com.android.server.DeviceIdleController.LIGHT_STATE_PRE_IDLE;
import static com.android.server.DeviceIdleController.LIGHT_STATE_WAITING_FOR_NETWORK;
import static com.android.server.DeviceIdleController.MSG_REPORT_STATIONARY_STATUS;
+import static com.android.server.DeviceIdleController.MSG_RESET_PRE_IDLE_TIMEOUT_FACTOR;
+import static com.android.server.DeviceIdleController.MSG_UPDATE_PRE_IDLE_TIMEOUT_FACTOR;
import static com.android.server.DeviceIdleController.STATE_ACTIVE;
import static com.android.server.DeviceIdleController.STATE_IDLE;
import static com.android.server.DeviceIdleController.STATE_IDLE_MAINTENANCE;
@@ -180,7 +182,9 @@ public class DeviceIdleControllerTest {
mHandler = controller.new MyHandler(getContext().getMainLooper());
spyOn(mHandler);
doNothing().when(mHandler).handleMessage(argThat((message) ->
- message.what != MSG_REPORT_STATIONARY_STATUS));
+ message.what != MSG_REPORT_STATIONARY_STATUS
+ && message.what != MSG_UPDATE_PRE_IDLE_TIMEOUT_FACTOR
+ && message.what != MSG_RESET_PRE_IDLE_TIMEOUT_FACTOR));
doAnswer(new Answer<Boolean>() {
@Override
public Boolean answer(InvocationOnMock invocation) throws Throwable {
@@ -189,7 +193,9 @@ public class DeviceIdleControllerTest {
return true;
}
}).when(mHandler).sendMessageDelayed(
- argThat((message) -> message.what == MSG_REPORT_STATIONARY_STATUS),
+ argThat((message) -> message.what == MSG_REPORT_STATIONARY_STATUS
+ || message.what == MSG_UPDATE_PRE_IDLE_TIMEOUT_FACTOR
+ || message.what == MSG_RESET_PRE_IDLE_TIMEOUT_FACTOR),
anyLong());
}
@@ -1734,13 +1740,11 @@ public class DeviceIdleControllerTest {
}
//TODO(b/123045185): Mocked Handler of DeviceIdleController to make message loop
//workable in this test class
- mDeviceIdleController.updatePreIdleFactor();
float expectedfactor = mDeviceIdleController.getPreIdleTimeoutByMode(mode);
float curfactor = mDeviceIdleController.getPreIdleTimeoutFactor();
assertEquals("Pre idle time factor of mode [" + mode + "].",
expectedfactor, curfactor, delta);
mDeviceIdleController.resetPreIdleTimeoutMode();
- mDeviceIdleController.updatePreIdleFactor();
checkNextAlarmTimeWithNewPreIdleFactor(expectedfactor, STATE_INACTIVE);
checkNextAlarmTimeWithNewPreIdleFactor(expectedfactor, STATE_IDLE_PENDING);
@@ -2088,14 +2092,11 @@ public class DeviceIdleControllerTest {
mDeviceIdleController.SET_IDLE_FACTOR_RESULT_OK, ret);
}
if (ret == mDeviceIdleController.SET_IDLE_FACTOR_RESULT_OK) {
- mDeviceIdleController.updatePreIdleFactor();
long newAlarm = mDeviceIdleController.getNextAlarmTime();
long newDelay = (long) ((alarm - now) * factor);
assertTrue("setPreIdleTimeoutFactor: " + factor,
Math.abs(newDelay - (newAlarm - now)) < errorTolerance);
mDeviceIdleController.resetPreIdleTimeoutMode();
- mDeviceIdleController.updatePreIdleFactor();
- mDeviceIdleController.maybeDoImmediateMaintenance();
newAlarm = mDeviceIdleController.getNextAlarmTime();
assertTrue("resetPreIdleTimeoutMode from: " + factor,
Math.abs(newAlarm - alarm) < errorTolerance);
@@ -2106,19 +2107,14 @@ public class DeviceIdleControllerTest {
assertTrue("setPreIdleTimeoutFactor: " + factor + " before step to idle",
Math.abs(newDelay - (newAlarm - now)) < errorTolerance);
mDeviceIdleController.resetPreIdleTimeoutMode();
- mDeviceIdleController.updatePreIdleFactor();
- mDeviceIdleController.maybeDoImmediateMaintenance();
}
} else {
mDeviceIdleController.setPreIdleTimeoutFactor(factor);
- mDeviceIdleController.updatePreIdleFactor();
long newAlarm = mDeviceIdleController.getNextAlarmTime();
assertTrue("setPreIdleTimeoutFactor: " + factor
+ " shounld not change next alarm" ,
(newAlarm == alarm));
mDeviceIdleController.resetPreIdleTimeoutMode();
- mDeviceIdleController.updatePreIdleFactor();
- mDeviceIdleController.maybeDoImmediateMaintenance();
}
}
@@ -2138,18 +2134,15 @@ public class DeviceIdleControllerTest {
long alarm = mDeviceIdleController.getNextAlarmTime();
mDeviceIdleController.setIdleStartTimeForTest(
now - (long) (mConstants.IDLE_TIMEOUT * 0.6));
- mDeviceIdleController.maybeDoImmediateMaintenance();
long newAlarm = mDeviceIdleController.getNextAlarmTime();
assertTrue("maintenance not reschedule IDLE_TIMEOUT * 0.6",
newAlarm == alarm);
mDeviceIdleController.setIdleStartTimeForTest(
now - (long) (mConstants.IDLE_TIMEOUT * 1.2));
- mDeviceIdleController.maybeDoImmediateMaintenance();
newAlarm = mDeviceIdleController.getNextAlarmTime();
assertTrue("maintenance not reschedule IDLE_TIMEOUT * 1.2",
(newAlarm - now) < minuteInMillis);
mDeviceIdleController.resetPreIdleTimeoutMode();
- mDeviceIdleController.updatePreIdleFactor();
}
}
}
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/AuthServiceTest.java b/services/tests/servicestests/src/com/android/server/biometrics/AuthServiceTest.java
new file mode 100644
index 000000000000..106a7238e399
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/biometrics/AuthServiceTest.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.biometrics;
+
+import static android.hardware.biometrics.BiometricConstants.BIOMETRIC_SUCCESS;
+
+import static junit.framework.Assert.assertEquals;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.hardware.biometrics.IBiometricEnabledOnKeyguardCallback;
+import android.hardware.biometrics.IBiometricService;
+import android.hardware.biometrics.IBiometricServiceReceiver;
+import android.os.Binder;
+import android.os.Bundle;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@SmallTest
+public class AuthServiceTest {
+
+ private static final String TAG = "AuthServiceTest";
+ private static final String TEST_OP_PACKAGE_NAME = "test_package";
+
+ private AuthService mAuthService;
+
+ @Mock
+ private Context mContext;
+ @Mock
+ private PackageManager mPackageManager;
+ @Mock
+ IBiometricServiceReceiver mReceiver;
+ @Mock
+ AuthService.Injector mInjector;
+ @Mock
+ IBiometricService mBiometricService;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+
+ when(mContext.getPackageManager()).thenReturn(mPackageManager);
+ when(mInjector.getBiometricService()).thenReturn(mBiometricService);
+ when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT))
+ .thenReturn(true);
+ when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_IRIS)).thenReturn(true);
+ when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)).thenReturn(true);
+ }
+
+
+ // TODO(b/141025588): Check that an exception is thrown when the userId != callingUserId
+ @Test
+ public void testAuthenticate_callsBiometricServiceAuthenticate() throws
+ Exception {
+ mAuthService = new AuthService(mContext, mInjector);
+ mAuthService.onStart();
+
+ final Binder token = new Binder();
+ final Bundle bundle = new Bundle();
+ final long sessionId = 0;
+ final int userId = 0;
+
+ mAuthService.mImpl.authenticate(
+ token,
+ sessionId,
+ userId,
+ mReceiver,
+ TEST_OP_PACKAGE_NAME,
+ bundle);
+ waitForIdle();
+ verify(mBiometricService).authenticate(
+ eq(token),
+ eq(sessionId),
+ eq(userId),
+ eq(mReceiver),
+ eq(TEST_OP_PACKAGE_NAME),
+ eq(bundle));
+ }
+
+ @Test
+ public void testCanAuthenticate_callsBiometricServiceCanAuthenticate() throws
+ Exception {
+ mAuthService = new AuthService(mContext, mInjector);
+ mAuthService.onStart();
+
+ final int userId = 0;
+ final int expectedResult = BIOMETRIC_SUCCESS;
+ when(mBiometricService.canAuthenticate(anyString(), anyInt())).thenReturn(expectedResult);
+
+ final int result = mAuthService.mImpl.canAuthenticate(TEST_OP_PACKAGE_NAME, userId);
+
+ assertEquals(expectedResult, result);
+ waitForIdle();
+ verify(mBiometricService).canAuthenticate(
+ eq(TEST_OP_PACKAGE_NAME),
+ eq(userId));
+ }
+
+
+ @Test
+ public void testHasEnrolledBiometrics_callsBiometricServiceHasEnrolledBiometrics() throws
+ Exception {
+ mAuthService = new AuthService(mContext, mInjector);
+ mAuthService.onStart();
+
+ final int userId = 0;
+ final boolean expectedResult = true;
+ when(mBiometricService.hasEnrolledBiometrics(anyInt(), anyString())).thenReturn(
+ expectedResult);
+
+ final boolean result = mAuthService.mImpl.hasEnrolledBiometrics(userId,
+ TEST_OP_PACKAGE_NAME);
+
+ assertEquals(expectedResult, result);
+ waitForIdle();
+ verify(mBiometricService).hasEnrolledBiometrics(
+ eq(userId),
+ eq(TEST_OP_PACKAGE_NAME));
+ }
+
+
+ @Test
+ public void testRegisterKeyguardCallback_callsBiometricServiceRegisterKeyguardCallback()
+ throws Exception {
+ mAuthService = new AuthService(mContext, mInjector);
+ mAuthService.onStart();
+
+ final IBiometricEnabledOnKeyguardCallback callback =
+ new IBiometricEnabledOnKeyguardCallback.Default();
+
+ mAuthService.mImpl.registerEnabledOnKeyguardCallback(callback);
+
+ waitForIdle();
+ verify(mBiometricService).registerEnabledOnKeyguardCallback(eq(callback));
+ }
+
+ @Test
+ public void testSetActiveUser_callsBiometricServiceSetActiveUser() throws
+ Exception {
+ mAuthService = new AuthService(mContext, mInjector);
+ mAuthService.onStart();
+
+ final int userId = 0;
+
+ mAuthService.mImpl.setActiveUser(userId);
+
+ waitForIdle();
+ verify(mBiometricService).setActiveUser(eq(userId));
+ }
+
+ @Test
+ public void testResetLockout_callsBiometricServiceResetLockout() throws
+ Exception {
+ mAuthService = new AuthService(mContext, mInjector);
+ mAuthService.onStart();
+
+ final byte[] token = new byte[0];
+
+ mAuthService.mImpl.resetLockout(token);
+
+ waitForIdle();
+ verify(mBiometricService).resetLockout(token);
+ }
+
+ private static void waitForIdle() {
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/BiometricServiceTest.java b/services/tests/servicestests/src/com/android/server/biometrics/BiometricServiceTest.java
index ec47a959de30..4ced421be63a 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/BiometricServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/BiometricServiceTest.java
@@ -36,7 +36,6 @@ import static org.mockito.Mockito.when;
import android.app.IActivityManager;
import android.content.ContentResolver;
import android.content.Context;
-import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.hardware.biometrics.Authenticator;
import android.hardware.biometrics.BiometricAuthenticator;
@@ -82,6 +81,8 @@ public class BiometricServiceTest {
private static final String FINGERPRINT_ACQUIRED_SENSOR_DIRTY = "sensor_dirty";
+ private static final int STRENGTH_STRONG = 1;
+
private BiometricService mBiometricService;
@Mock
@@ -91,8 +92,6 @@ public class BiometricServiceTest {
@Mock
private Resources mResources;
@Mock
- private PackageManager mPackageManager;
- @Mock
IBiometricServiceReceiver mReceiver1;
@Mock
IBiometricServiceReceiver mReceiver2;
@@ -107,14 +106,11 @@ public class BiometricServiceTest {
public void setUp() {
MockitoAnnotations.initMocks(this);
- when(mContext.getPackageManager()).thenReturn(mPackageManager);
when(mContext.getContentResolver()).thenReturn(mContentResolver);
when(mContext.getResources()).thenReturn(mResources);
when(mInjector.getActivityManagerService()).thenReturn(mock(IActivityManager.class));
when(mInjector.getStatusBarService()).thenReturn(mock(IStatusBarService.class));
- when(mInjector.getFingerprintAuthenticator()).thenReturn(mFingerprintAuthenticator);
- when(mInjector.getFaceAuthenticator()).thenReturn(mFaceAuthenticator);
when(mInjector.getSettingObserver(any(), any(), any())).thenReturn(
mock(BiometricService.SettingObserver.class));
when(mInjector.getKeyStore()).thenReturn(mock(KeyStore.class));
@@ -131,11 +127,6 @@ public class BiometricServiceTest {
@Test
public void testAuthenticate_withoutHardware_returnsErrorHardwareNotPresent() throws
Exception {
- when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT))
- .thenReturn(false);
- when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_IRIS)).thenReturn(false);
- when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)).thenReturn(false);
-
mBiometricService = new BiometricService(mContext, mInjector);
mBiometricService.onStart();
@@ -150,11 +141,13 @@ public class BiometricServiceTest {
@Test
public void testAuthenticate_withoutEnrolled_returnsErrorNoBiometrics() throws Exception {
- when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)).thenReturn(true);
when(mFingerprintAuthenticator.isHardwareDetected(any())).thenReturn(true);
mBiometricService = new BiometricService(mContext, mInjector);
mBiometricService.onStart();
+ mBiometricService.mImpl.registerAuthenticator(0 /* id */, STRENGTH_STRONG,
+ BiometricAuthenticator.TYPE_FINGERPRINT, mFingerprintAuthenticator);
+
invokeAuthenticate(mBiometricService.mImpl, mReceiver1, false /* requireConfirmation */,
false /* allowDeviceCredential */);
@@ -168,12 +161,13 @@ public class BiometricServiceTest {
@Test
public void testAuthenticate_whenHalIsDead_returnsErrorHardwareUnavailable() throws
Exception {
- when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)).thenReturn(true);
when(mFingerprintAuthenticator.hasEnrolledTemplates(anyInt(), any())).thenReturn(true);
when(mFingerprintAuthenticator.isHardwareDetected(any())).thenReturn(false);
mBiometricService = new BiometricService(mContext, mInjector);
mBiometricService.onStart();
+ mBiometricService.mImpl.registerAuthenticator(0 /* id */, STRENGTH_STRONG,
+ BiometricAuthenticator.TYPE_FINGERPRINT, mFingerprintAuthenticator);
invokeAuthenticate(mBiometricService.mImpl, mReceiver1, false /* requireConfirmation */,
false /* allowDeviceCredential */);
@@ -187,12 +181,13 @@ public class BiometricServiceTest {
@Test
public void testAuthenticateFace_respectsUserSetting()
throws Exception {
- when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)).thenReturn(true);
when(mFaceAuthenticator.hasEnrolledTemplates(anyInt(), any())).thenReturn(true);
when(mFaceAuthenticator.isHardwareDetected(any())).thenReturn(true);
mBiometricService = new BiometricService(mContext, mInjector);
mBiometricService.onStart();
+ mBiometricService.mImpl.registerAuthenticator(0 /* id */, STRENGTH_STRONG,
+ BiometricAuthenticator.TYPE_FACE, mFaceAuthenticator);
// Disabled in user settings receives onError
when(mBiometricService.mSettingObserver.getFaceEnabledForApps(anyInt())).thenReturn(false);
@@ -248,8 +243,6 @@ public class BiometricServiceTest {
@Test
public void testAuthenticate_happyPathWithoutConfirmation() throws Exception {
setupAuthForOnly(BiometricAuthenticator.TYPE_FINGERPRINT);
- mBiometricService = new BiometricService(mContext, mInjector);
- mBiometricService.onStart();
// Start testing the happy path
invokeAuthenticate(mBiometricService.mImpl, mReceiver1, false /* requireConfirmation */,
@@ -861,27 +854,24 @@ public class BiometricServiceTest {
// Helper methods
private void setupAuthForOnly(int modality) throws RemoteException {
- when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT))
- .thenReturn(false);
- when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)).thenReturn(false);
+ mBiometricService = new BiometricService(mContext, mInjector);
+ mBiometricService.onStart();
+
+ when(mBiometricService.mSettingObserver.getFaceEnabledForApps(anyInt())).thenReturn(true);
if (modality == BiometricAuthenticator.TYPE_FINGERPRINT) {
- when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT))
- .thenReturn(true);
when(mFingerprintAuthenticator.hasEnrolledTemplates(anyInt(), any())).thenReturn(true);
when(mFingerprintAuthenticator.isHardwareDetected(any())).thenReturn(true);
+ mBiometricService.mImpl.registerAuthenticator(0 /* id */, STRENGTH_STRONG, modality,
+ mFingerprintAuthenticator);
} else if (modality == BiometricAuthenticator.TYPE_FACE) {
- when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)).thenReturn(true);
when(mFaceAuthenticator.hasEnrolledTemplates(anyInt(), any())).thenReturn(true);
when(mFaceAuthenticator.isHardwareDetected(any())).thenReturn(true);
+ mBiometricService.mImpl.registerAuthenticator(0 /* id */, STRENGTH_STRONG, modality,
+ mFaceAuthenticator);
} else {
fail("Unknown modality: " + modality);
}
-
- mBiometricService = new BiometricService(mContext, mInjector);
- mBiometricService.onStart();
-
- when(mBiometricService.mSettingObserver.getFaceEnabledForApps(anyInt())).thenReturn(true);
}
private void resetReceiver() {
diff --git a/services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java b/services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java
index 7081d2e3b370..1d04c8397ffa 100644
--- a/services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java
+++ b/services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java
@@ -37,6 +37,7 @@ import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.display.AmbientBrightnessDayStats;
import android.hardware.display.BrightnessChangeEvent;
+import android.hardware.display.BrightnessConfiguration;
import android.hardware.display.DisplayManager;
import android.hardware.display.DisplayedContentSample;
import android.hardware.display.DisplayedContentSamplingAttributes;
@@ -78,6 +79,7 @@ import java.util.concurrent.TimeUnit;
@RunWith(AndroidJUnit4.class)
public class BrightnessTrackerTest {
private static final float DEFAULT_INITIAL_BRIGHTNESS = 2.5f;
+ private static final boolean DEFAULT_COLOR_SAMPLING_ENABLED = true;
private static final float FLOAT_DELTA = 0.01f;
private BrightnessTracker mTracker;
@@ -151,6 +153,40 @@ public class BrightnessTrackerTest {
}
@Test
+ public void testModifyBrightnessConfiguration() {
+ mInjector.mInteractive = true;
+ // Start with tracker not listening for color samples.
+ startTracker(mTracker, DEFAULT_INITIAL_BRIGHTNESS, /* collectColorSamples= */ false);
+ assertFalse(mInjector.mColorSamplingEnabled);
+
+ // Update brightness config to enabled color sampling.
+ mTracker.setBrightnessConfiguration(buildBrightnessConfiguration(
+ /* collectColorSamples= */ true));
+ mInjector.waitForHandler();
+ assertTrue(mInjector.mColorSamplingEnabled);
+
+ // Update brightness config to disable color sampling.
+ mTracker.setBrightnessConfiguration(buildBrightnessConfiguration(
+ /* collectColorSamples= */ false));
+ mInjector.waitForHandler();
+ assertFalse(mInjector.mColorSamplingEnabled);
+
+ // Pretend screen is off, update config to turn on color sampling.
+ mInjector.sendScreenChange(/*screen on */ false);
+ mTracker.setBrightnessConfiguration(buildBrightnessConfiguration(
+ /* collectColorSamples= */ true));
+ mInjector.waitForHandler();
+ assertFalse(mInjector.mColorSamplingEnabled);
+
+ // Pretend screen is on.
+ mInjector.sendScreenChange(/*screen on */ true);
+ assertTrue(mInjector.mColorSamplingEnabled);
+
+ mTracker.stop();
+ assertFalse(mInjector.mColorSamplingEnabled);
+ }
+
+ @Test
public void testNoColorSampling_WrongPixelFormat() {
mInjector.mDefaultSamplingAttributes =
new DisplayedContentSamplingAttributes(
@@ -278,7 +314,7 @@ public class BrightnessTrackerTest {
mInjector.mSecureIntSettings.put(Settings.Secure.NIGHT_DISPLAY_ACTIVATED, 1);
mInjector.mSecureIntSettings.put(Settings.Secure.NIGHT_DISPLAY_COLOR_TEMPERATURE, 3333);
- startTracker(mTracker, initialBrightness);
+ startTracker(mTracker, initialBrightness, DEFAULT_COLOR_SAMPLING_ENABLED);
mInjector.mBroadcastReceiver.onReceive(InstrumentationRegistry.getContext(),
batteryChangeEvent(30, 60));
mInjector.mSensorListener.onSensorChanged(createSensorEvent(1000.0f));
@@ -311,7 +347,7 @@ public class BrightnessTrackerTest {
@Test
public void testIgnoreAutomaticBrightnessChange() {
final int initialBrightness = 30;
- startTracker(mTracker, initialBrightness);
+ startTracker(mTracker, initialBrightness, DEFAULT_COLOR_SAMPLING_ENABLED);
mInjector.mSensorListener.onSensorChanged(createSensorEvent(1.0f));
mInjector.incrementTime(TimeUnit.SECONDS.toMillis(1));
@@ -750,11 +786,13 @@ public class BrightnessTrackerTest {
}
private void startTracker(BrightnessTracker tracker) {
- startTracker(tracker, DEFAULT_INITIAL_BRIGHTNESS);
+ startTracker(tracker, DEFAULT_INITIAL_BRIGHTNESS, DEFAULT_COLOR_SAMPLING_ENABLED);
}
- private void startTracker(BrightnessTracker tracker, float initialBrightness) {
+ private void startTracker(BrightnessTracker tracker, float initialBrightness,
+ boolean collectColorSamples) {
tracker.start(initialBrightness);
+ tracker.setBrightnessConfiguration(buildBrightnessConfiguration(collectColorSamples));
mInjector.waitForHandler();
}
@@ -772,6 +810,14 @@ public class BrightnessTrackerTest {
mInjector.waitForHandler();
}
+ private BrightnessConfiguration buildBrightnessConfiguration(boolean collectColorSamples) {
+ BrightnessConfiguration.Builder builder = new BrightnessConfiguration.Builder(
+ /* lux = */ new float[] {0f, 10f, 100f},
+ /* nits = */ new float[] {1f, 90f, 100f});
+ builder.setShouldCollectColorSamples(collectColorSamples);
+ return builder.build();
+ }
+
private static final class Idle implements MessageQueue.IdleHandler {
private boolean mIdle;
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java
index 9df7b4576427..24db657892df 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityDisplayTests.java
@@ -38,12 +38,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.when;
-import android.app.TaskStackListener;
-import android.content.pm.ActivityInfo;
-import android.content.res.Configuration;
-import android.os.IBinder;
import android.platform.test.annotations.Presubmit;
import androidx.test.filters.SmallTest;
@@ -51,10 +46,6 @@ import androidx.test.filters.SmallTest;
import org.junit.Test;
import org.junit.runner.RunWith;
-import java.util.ArrayList;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-
/**
* Tests for the {@link ActivityDisplay} class.
*
@@ -181,7 +172,7 @@ public class ActivityDisplayTests extends ActivityTestsBase {
final ActivityDisplay display = mRootActivityContainer.getDefaultDisplay();
final KeyguardController keyguard = mSupervisor.getKeyguardController();
final ActivityStack stack = new StackBuilder(mRootActivityContainer).build();
- final ActivityRecord activity = stack.getTopActivity();
+ final ActivityRecord activity = stack.getTopNonFinishingActivity();
// Create empty stack on top.
final ActivityStack emptyStack =
@@ -237,7 +228,7 @@ public class ActivityDisplayTests extends ActivityTestsBase {
display.positionChildAtTop(alwaysOnTopStack, false /* includingParents */);
assertTrue(alwaysOnTopStack.isAlwaysOnTop());
// Ensure always on top state is synced to the children of the stack.
- assertTrue(alwaysOnTopStack.getTopActivity().isAlwaysOnTop());
+ assertTrue(alwaysOnTopStack.getTopNonFinishingActivity().isAlwaysOnTop());
assertEquals(alwaysOnTopStack, display.getTopStack());
final ActivityStack pinnedStack = display.createStack(
@@ -331,50 +322,4 @@ public class ActivityDisplayTests extends ActivityTestsBase {
verify(mSupervisor).removeTaskByIdLocked(eq(task1.mTaskId), anyBoolean(), anyBoolean(),
any());
}
-
- /**
- * Ensures that {@link TaskStackListener} can receive callback about the activity in size
- * compatibility mode.
- */
- @Test
- public void testHandleActivitySizeCompatMode() throws Exception {
- final ActivityDisplay display = mRootActivityContainer.getDefaultDisplay();
- final ActivityRecord activity = createFullscreenStackWithSimpleActivityAt(
- display).topRunningActivityLocked();
- activity.setState(ActivityStack.ActivityState.RESUMED, "testHandleActivitySizeCompatMode");
- when(activity.getRequestedOrientation()).thenReturn(
- ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
- activity.info.resizeMode = ActivityInfo.RESIZE_MODE_UNRESIZEABLE;
- activity.info.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
- activity.visible = true;
- activity.ensureActivityConfiguration(0 /* globalChanges */, false /* preserveWindow */);
-
- final ArrayList<CompletableFuture<IBinder>> resultWrapper = new ArrayList<>();
- mService.getTaskChangeNotificationController().registerTaskStackListener(
- new TaskStackListener() {
- @Override
- public void onSizeCompatModeActivityChanged(int displayId,
- IBinder activityToken) {
- resultWrapper.get(0).complete(activityToken);
- }
- });
-
- resultWrapper.add(new CompletableFuture<>());
-
- // resize the display to exercise size-compat mode
- final DisplayContent displayContent = display.mDisplayContent;
- displayContent.mBaseDisplayHeight = (int) (0.8f * displayContent.mBaseDisplayHeight);
- Configuration c = new Configuration();
- displayContent.computeScreenConfiguration(c);
- display.onRequestedOverrideConfigurationChanged(c);
-
- assertEquals(activity.appToken, resultWrapper.get(0).get(2, TimeUnit.SECONDS));
-
- // Expect null token when switching to non-size-compat mode activity.
- activity.info.resizeMode = ActivityInfo.RESIZE_MODE_RESIZEABLE;
- resultWrapper.set(0, new CompletableFuture<>());
- display.handleActivitySizeCompatModeIfNeeded(activity);
-
- assertNull(resultWrapper.get(0).get(2, TimeUnit.SECONDS));
- }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
index c51a46a76f4c..6c63d419ceed 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -18,24 +18,18 @@ package com.android.server.wm;
import static android.content.pm.ActivityInfo.CONFIG_ORIENTATION;
import static android.content.pm.ActivityInfo.CONFIG_SCREEN_LAYOUT;
-import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import static android.os.Process.NOBODY_UID;
import static android.view.Display.DEFAULT_DISPLAY;
-import static android.view.Surface.ROTATION_0;
-import static android.view.Surface.ROTATION_90;
import static android.view.WindowManager.TRANSIT_TASK_CLOSE;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.any;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.anyInt;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.atLeast;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.eq;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.reset;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.times;
@@ -61,18 +55,13 @@ import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.when;
-import android.app.ActivityManager;
-import android.app.ActivityManagerInternal;
import android.app.ActivityOptions;
-import android.app.WindowConfiguration;
import android.app.servertransaction.ActivityConfigurationChangeItem;
import android.app.servertransaction.ClientTransaction;
import android.app.servertransaction.PauseActivityItem;
@@ -80,13 +69,11 @@ import android.content.ComponentName;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
-import android.graphics.Rect;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.platform.test.annotations.Presubmit;
import android.util.MergedConfiguration;
import android.util.MutableBoolean;
-import android.view.DisplayInfo;
import android.view.IRemoteAnimationFinishedCallback;
import android.view.IRemoteAnimationRunner.Stub;
import android.view.RemoteAnimationAdapter;
@@ -120,7 +107,7 @@ public class ActivityRecordTests extends ActivityTestsBase {
public void setUp() throws Exception {
mStack = new StackBuilder(mRootActivityContainer).build();
mTask = mStack.getChildAt(0);
- mActivity = mTask.getTopActivity();
+ mActivity = mTask.getTopNonFinishingActivity();
doReturn(false).when(mService).isBooting();
doReturn(true).when(mService).isBooted();
@@ -219,23 +206,6 @@ public class ActivityRecordTests extends ActivityTestsBase {
}
@Test
- public void testRestartProcessIfVisible() {
- doNothing().when(mSupervisor).scheduleRestartTimeout(mActivity);
- mActivity.visible = true;
- mActivity.setSavedState(null /* savedState */);
- mActivity.setState(ActivityStack.ActivityState.RESUMED, "testRestart");
- prepareFixedAspectRatioUnresizableActivity();
-
- final Rect originalOverrideBounds = new Rect(mActivity.getBounds());
- setupDisplayAndParentSize(600, 1200);
- // The visible activity should recompute configuration according to the last parent bounds.
- mService.restartActivityProcessIfVisible(mActivity.appToken);
-
- assertEquals(ActivityStack.ActivityState.RESTARTING_PROCESS, mActivity.getState());
- assertNotEquals(originalOverrideBounds, mActivity.getBounds());
- }
-
- @Test
public void testsApplyOptionsLocked() {
ActivityOptions activityOptions = ActivityOptions.makeBasic();
@@ -484,214 +454,6 @@ public class ActivityRecordTests extends ActivityTestsBase {
}
@Test
- public void testSizeCompatMode_KeepBoundsWhenChangingFromFreeformToFullscreen() {
- setupDisplayContentForCompatDisplayInsets();
-
- // put display in freeform mode
- ActivityDisplay display = mActivity.getDisplay();
- final Configuration c = new Configuration(display.getRequestedOverrideConfiguration());
- c.windowConfiguration.setBounds(new Rect(0, 0, 2000, 1000));
- c.densityDpi = 300;
- c.windowConfiguration.setWindowingMode(WindowConfiguration.WINDOWING_MODE_FREEFORM);
- display.onRequestedOverrideConfigurationChanged(c);
-
- // launch compat activity in freeform and store bounds
- when(mActivity.getRequestedOrientation()).thenReturn(
- ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
- mTask.getRequestedOverrideConfiguration().orientation = Configuration.ORIENTATION_PORTRAIT;
- mTask.setBounds(100, 100, 400, 600);
- mActivity.info.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
- mActivity.info.resizeMode = ActivityInfo.RESIZE_MODE_UNRESIZEABLE;
- mActivity.visible = true;
- ensureActivityConfiguration();
-
- final Rect bounds = new Rect(mActivity.getBounds());
- final int density = mActivity.getConfiguration().densityDpi;
-
- // change display configuration to fullscreen
- c.windowConfiguration.setWindowingMode(WindowConfiguration.WINDOWING_MODE_FULLSCREEN);
- display.onRequestedOverrideConfigurationChanged(c);
-
- // check if dimensions stay the same
- assertTrue(mActivity.inSizeCompatMode());
- assertEquals(bounds.width(), mActivity.getBounds().width());
- assertEquals(bounds.height(), mActivity.getBounds().height());
- assertEquals(density, mActivity.getConfiguration().densityDpi);
- assertEquals(WindowConfiguration.WINDOWING_MODE_FULLSCREEN, mActivity.getWindowingMode());
- }
-
- @Test
- public void testSizeCompatMode_FixedAspectRatioBoundsWithDecor() {
- setupDisplayContentForCompatDisplayInsets();
- final int decorHeight = 200; // e.g. The device has cutout.
- final DisplayPolicy policy = setupDisplayAndParentSize(600, 800).getDisplayPolicy();
- spyOn(policy);
- doAnswer(invocationOnMock -> {
- final int rotation = invocationOnMock.<Integer>getArgument(0);
- final Rect insets = invocationOnMock.<Rect>getArgument(4);
- if (rotation == ROTATION_0) {
- insets.top = decorHeight;
- } else if (rotation == ROTATION_90) {
- insets.left = decorHeight;
- }
- return null;
- }).when(policy).getNonDecorInsetsLw(anyInt() /* rotation */, anyInt() /* width */,
- anyInt() /* height */, any() /* displayCutout */, any() /* outInsets */);
- // set appBounds to incorporate decor
- final Configuration c =
- new Configuration(mStack.getDisplay().getRequestedOverrideConfiguration());
- c.windowConfiguration.getAppBounds().top = decorHeight;
- mStack.getDisplay().onRequestedOverrideConfigurationChanged(c);
-
- doReturn(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
- .when(mActivity).getRequestedOrientation();
- mActivity.info.resizeMode = RESIZE_MODE_UNRESIZEABLE;
- mActivity.info.minAspectRatio = mActivity.info.maxAspectRatio = 1;
- mActivity.visible = true;
- ensureActivityConfiguration();
- // The parent configuration doesn't change since the first resolved configuration, so the
- // activity shouldn't be in the size compatibility mode.
- assertFalse(mActivity.inSizeCompatMode());
-
- final Rect appBounds = mActivity.getWindowConfiguration().getAppBounds();
- // Ensure the app bounds keep the declared aspect ratio.
- assertEquals(appBounds.width(), appBounds.height());
- // The decor height should be a part of the effective bounds.
- assertEquals(mActivity.getBounds().height(), appBounds.height() + decorHeight);
-
- mTask.getConfiguration().windowConfiguration.setRotation(ROTATION_90);
- mActivity.onConfigurationChanged(mTask.getConfiguration());
- // After changing orientation, the aspect ratio should be the same.
- assertEquals(appBounds.width(), appBounds.height());
- // The decor height will be included in width.
- assertEquals(mActivity.getBounds().width(), appBounds.width() + decorHeight);
- }
-
- @Test
- public void testSizeCompatMode_FixedScreenConfigurationWhenMovingToDisplay() {
- // Initialize different bounds on a new display.
- final Rect newDisplayBounds = new Rect(0, 0, 1000, 2000);
- DisplayInfo info = new DisplayInfo();
- mService.mContext.getDisplay().getDisplayInfo(info);
- info.logicalWidth = newDisplayBounds.width();
- info.logicalHeight = newDisplayBounds.height();
- info.logicalDensityDpi = 300;
-
- final ActivityDisplay newDisplay =
- addNewActivityDisplayAt(info, ActivityDisplay.POSITION_TOP);
-
- final Configuration c =
- new Configuration(mStack.getDisplay().getRequestedOverrideConfiguration());
- c.densityDpi = 200;
- mStack.getDisplay().onRequestedOverrideConfigurationChanged(c);
- mActivity = new ActivityBuilder(mService)
- .setTask(mTask)
- .setResizeMode(RESIZE_MODE_UNRESIZEABLE)
- .setMaxAspectRatio(1.5f)
- .build();
- mActivity.visible = true;
-
- final Rect originalBounds = new Rect(mActivity.getBounds());
- final int originalDpi = mActivity.getConfiguration().densityDpi;
-
- // Move the non-resizable activity to the new display.
- mStack.reparent(newDisplay.mDisplayContent, true /* onTop */);
-
- assertEquals(originalBounds.width(),
- mActivity.getWindowConfiguration().getBounds().width());
- assertEquals(originalBounds.height(),
- mActivity.getWindowConfiguration().getBounds().height());
- assertEquals(originalDpi, mActivity.getConfiguration().densityDpi);
- assertTrue(mActivity.inSizeCompatMode());
- }
-
- @Test
- public void testSizeCompatMode_FixedScreenBoundsWhenDisplaySizeChanged() {
- setupDisplayContentForCompatDisplayInsets();
- when(mActivity.getRequestedOrientation()).thenReturn(
- ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
- mTask.getWindowConfiguration().setAppBounds(mStack.getDisplay().getBounds());
- mTask.getRequestedOverrideConfiguration().orientation = Configuration.ORIENTATION_PORTRAIT;
- mActivity.info.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
- mActivity.info.resizeMode = ActivityInfo.RESIZE_MODE_UNRESIZEABLE;
- mActivity.visible = true;
-
- ensureActivityConfiguration();
- final Rect originalBounds = new Rect(mActivity.getBounds());
-
- // Change the size of current display.
- setupDisplayAndParentSize(1000, 2000);
- ensureActivityConfiguration();
-
- assertEquals(originalBounds.width(),
- mActivity.getWindowConfiguration().getBounds().width());
- assertEquals(originalBounds.height(),
- mActivity.getWindowConfiguration().getBounds().height());
- assertTrue(mActivity.inSizeCompatMode());
- }
-
- @Test
- public void testSizeCompatMode_FixedScreenLayoutSizeBits() {
- final int fixedScreenLayout = Configuration.SCREENLAYOUT_LONG_NO
- | Configuration.SCREENLAYOUT_SIZE_NORMAL;
- final int layoutMask = Configuration.SCREENLAYOUT_LONG_MASK
- | Configuration.SCREENLAYOUT_SIZE_MASK
- | Configuration.SCREENLAYOUT_LAYOUTDIR_MASK;
- mTask.getRequestedOverrideConfiguration().screenLayout = fixedScreenLayout
- | Configuration.SCREENLAYOUT_LAYOUTDIR_LTR;
- prepareFixedAspectRatioUnresizableActivity();
-
- // The initial configuration should inherit from parent.
- assertEquals(mTask.getConfiguration().screenLayout & layoutMask,
- mActivity.getConfiguration().screenLayout & layoutMask);
-
- mTask.getConfiguration().screenLayout = Configuration.SCREENLAYOUT_LAYOUTDIR_RTL
- | Configuration.SCREENLAYOUT_LONG_YES | Configuration.SCREENLAYOUT_SIZE_LARGE;
- mActivity.onConfigurationChanged(mTask.getConfiguration());
-
- // The size and aspect ratio bits don't change, but the layout direction should be updated.
- assertEquals(fixedScreenLayout | Configuration.SCREENLAYOUT_LAYOUTDIR_RTL,
- mActivity.getConfiguration().screenLayout & layoutMask);
- }
-
- @Test
- public void testSizeCompatMode_ResetNonVisibleActivity() {
- final ActivityDisplay display = mStack.getDisplay();
- spyOn(display);
-
- prepareFixedAspectRatioUnresizableActivity();
- mActivity.setState(STOPPED, "testSizeCompatMode");
- mActivity.visible = false;
- mActivity.app.setReportedProcState(ActivityManager.PROCESS_STATE_CACHED_ACTIVITY);
- // Make the parent bounds to be different so the activity is in size compatibility mode.
- setupDisplayAndParentSize(600, 1200);
-
- // Simulate the display changes orientation.
- doReturn(ActivityInfo.CONFIG_SCREEN_SIZE | CONFIG_ORIENTATION
- | ActivityInfo.CONFIG_WINDOW_CONFIGURATION)
- .when(display).getLastOverrideConfigurationChanges();
- mActivity.onConfigurationChanged(mTask.getConfiguration());
- when(display.getLastOverrideConfigurationChanges()).thenCallRealMethod();
- // The override configuration should not change so it is still in size compatibility mode.
- assertTrue(mActivity.inSizeCompatMode());
-
- // Change display density
- final DisplayContent displayContent = mStack.getDisplay().mDisplayContent;
- displayContent.mBaseDisplayDensity = (int) (0.7f * displayContent.mBaseDisplayDensity);
- final Configuration c = new Configuration();
- displayContent.computeScreenConfiguration(c);
- mService.mAmInternal = mock(ActivityManagerInternal.class);
- mStack.getDisplay().onRequestedOverrideConfigurationChanged(c);
-
- // The override configuration should be reset and the activity's process will be killed.
- assertFalse(mActivity.inSizeCompatMode());
- verify(mActivity).restartProcessIfVisible();
- waitHandlerIdle(mService.mH);
- verify(mService.mAmInternal).killProcess(
- eq(mActivity.app.mName), eq(mActivity.app.mUid), anyString());
- }
-
- @Test
public void testTakeOptions() {
ActivityOptions opts = ActivityOptions.makeRemoteAnimation(
new RemoteAnimationAdapter(new Stub() {
@@ -1015,7 +777,7 @@ public class ActivityRecordTests extends ActivityTestsBase {
// Simulates that {@code currentTop} starts an existing activity from background (so its
// state is stopped) and the starting flow just goes to place it at top.
final ActivityStack nextStack = new StackBuilder(mRootActivityContainer).build();
- final ActivityRecord nextTop = nextStack.getTopActivity();
+ final ActivityRecord nextTop = nextStack.getTopNonFinishingActivity();
nextTop.setState(STOPPED, "test");
mStack.mPausingActivity = currentTop;
@@ -1340,33 +1102,4 @@ public class ActivityRecordTests extends ActivityTestsBase {
verify(mActivity).removeFromHistory(anyString());
}
-
- /** Setup {@link #mActivity} as a size-compat-mode-able activity without fixed orientation. */
- private void prepareFixedAspectRatioUnresizableActivity() {
- setupDisplayContentForCompatDisplayInsets();
- mActivity.info.resizeMode = RESIZE_MODE_UNRESIZEABLE;
- mActivity.info.maxAspectRatio = 1.5f;
- mActivity.visible = true;
- ensureActivityConfiguration();
- }
-
- private void setupDisplayContentForCompatDisplayInsets() {
- final Rect displayBounds = mStack.getDisplay().getBounds();
- setupDisplayAndParentSize(displayBounds.width(), displayBounds.height());
- }
-
- private DisplayContent setupDisplayAndParentSize(int width, int height) {
- final DisplayContent displayContent = mStack.getDisplay().mDisplayContent;
- displayContent.mBaseDisplayWidth = width;
- displayContent.mBaseDisplayHeight = height;
- final Configuration c =
- new Configuration(mStack.getDisplay().getRequestedOverrideConfiguration());
- c.windowConfiguration.setBounds(new Rect(0, 0, width, height));
- c.windowConfiguration.setAppBounds(0, 0, width, height);
- c.windowConfiguration.setRotation(ROTATION_0);
- c.orientation = width > height
- ? Configuration.ORIENTATION_LANDSCAPE : Configuration.ORIENTATION_PORTRAIT;
- mStack.getDisplay().onRequestedOverrideConfigurationChanged(c);
- return displayContent;
- }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStackSupervisorTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStackSupervisorTests.java
index 128ed2a9d0e7..0219539b3588 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStackSupervisorTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStackSupervisorTests.java
@@ -115,7 +115,7 @@ public class ActivityStackSupervisorTests extends ActivityTestsBase {
final ActivityDisplay newDisplay = addNewActivityDisplayAt(ActivityDisplay.POSITION_TOP);
final ActivityStack stack = new StackBuilder(mRootActivityContainer)
.setDisplay(newDisplay).build();
- final ActivityRecord unresizableActivity = stack.getTopActivity();
+ final ActivityRecord unresizableActivity = stack.getTopNonFinishingActivity();
final Task task = unresizableActivity.getTask();
unresizableActivity.info.resizeMode = ActivityInfo.RESIZE_MODE_UNRESIZEABLE;
task.setResizeMode(unresizableActivity.info.resizeMode);
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java
index d0e07b619ad6..aa9dd9de5fda 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java
@@ -243,8 +243,8 @@ public class ActivityStackTests extends ActivityTestsBase {
new RootActivityContainer.FindTaskResult();
mStack.findTaskLocked(r, result);
- assertEquals(r, task.getTopActivity(false /* includeOverlays */));
- assertEquals(taskOverlay, task.getTopActivity(true /* includeOverlays */));
+ assertEquals(r, task.getTopNonFinishingActivity(false /* includeOverlays */));
+ assertEquals(taskOverlay, task.getTopNonFinishingActivity(true /* includeOverlays */));
assertNotNull(result.mRecord);
}
@@ -1006,7 +1006,7 @@ public class ActivityStackTests extends ActivityTestsBase {
// There is still an activity1 in stack1 so the activity2 should be added to finishing list
// that will be destroyed until idle.
- stack2.getTopActivity().visible = true;
+ stack2.getTopNonFinishingActivity().visible = true;
final ActivityRecord activity2 = finishTopActivity(stack2);
assertEquals(STOPPING, activity2.getState());
assertThat(mSupervisor.mStoppingActivities).contains(activity2);
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java
index a23e2f1589c1..e9546a2f9769 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java
@@ -55,7 +55,7 @@ public class ActivityTaskManagerServiceTests extends ActivityTestsBase {
@Test
public void testActivityFinish() {
final ActivityStack stack = new StackBuilder(mRootActivityContainer).build();
- final ActivityRecord activity = stack.getChildAt(0).getTopActivity();
+ final ActivityRecord activity = stack.getChildAt(0).getTopNonFinishingActivity();
assertTrue("Activity must be finished", mService.finishActivity(activity.appToken,
0 /* resultCode */, null /* resultData */,
Activity.DONT_FINISH_TASK_WITH_ACTIVITY));
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
index 9f4143ff95fa..571f214564a0 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
@@ -711,18 +711,14 @@ public class DisplayContentTests extends WindowTestsBase {
final ActivityStack stack =
new ActivityTestsBase.StackBuilder(mWm.mAtmService.mRootActivityContainer)
.setDisplay(dc.mActivityDisplay).build();
- final ActivityRecord activity = stack.topTask().getTopActivity();
+ final ActivityRecord activity = stack.topTask().getTopNonFinishingActivity();
activity.setRequestedOrientation(newOrientation);
- final ArgumentCaptor<Configuration> captor = ArgumentCaptor.forClass(Configuration.class);
- verify(dc.mActivityDisplay).updateDisplayOverrideConfigurationLocked(captor.capture(),
- same(activity), anyBoolean(), same(null));
- final Configuration newDisplayConfig = captor.getValue();
final int expectedOrientation = newOrientation == SCREEN_ORIENTATION_PORTRAIT
? Configuration.ORIENTATION_PORTRAIT
: Configuration.ORIENTATION_LANDSCAPE;
- assertEquals(expectedOrientation, newDisplayConfig.orientation);
+ assertEquals(expectedOrientation, dc.getConfiguration().orientation);
}
@Test
@@ -737,7 +733,7 @@ public class DisplayContentTests extends WindowTestsBase {
final ActivityStack stack =
new ActivityTestsBase.StackBuilder(mWm.mAtmService.mRootActivityContainer)
.setDisplay(dc.mActivityDisplay).build();
- final ActivityRecord activity = stack.topTask().getTopActivity();
+ final ActivityRecord activity = stack.topTask().getTopNonFinishingActivity();
activity.setRequestedOrientation(newOrientation);
diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java
index e0ffb0d03f89..4f2d5d23f83d 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java
@@ -61,6 +61,7 @@ import android.graphics.Rect;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.SystemClock;
+import android.os.UserManager;
import android.platform.test.annotations.Presubmit;
import android.util.ArraySet;
import android.util.SparseBooleanArray;
@@ -92,7 +93,9 @@ public class RecentTasksTest extends ActivityTestsBase {
private static final int TEST_USER_1_ID = 10;
private static final int TEST_QUIET_USER_ID = 20;
private static final UserInfo DEFAULT_USER_INFO = new UserInfo();
- private static final UserInfo QUIET_USER_INFO = new UserInfo();
+ private static final UserInfo QUIET_PROFILE_USER_INFO = new UserInfo(TEST_QUIET_USER_ID,
+ "quiet_profile", null /* iconPath */, UserInfo.FLAG_QUIET_MODE,
+ UserManager.USER_TYPE_PROFILE_MANAGED);
private static final int INVALID_STACK_ID = 999;
private ActivityDisplay mDisplay;
@@ -125,7 +128,6 @@ public class RecentTasksTest extends ActivityTestsBase {
WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */);
mCallbacksRecorder = new CallbacksRecorder();
mRecentTasks.registerCallback(mCallbacksRecorder);
- QUIET_USER_INFO.flags = UserInfo.FLAG_MANAGED_PROFILE | UserInfo.FLAG_QUIET_MODE;
mTasks = new ArrayList<>();
mTasks.add(createTaskBuilder(".Task1").build());
@@ -1220,7 +1222,7 @@ public class RecentTasksTest extends ActivityTestsBase {
case TEST_USER_1_ID:
return DEFAULT_USER_INFO;
case TEST_QUIET_USER_ID:
- return QUIET_USER_INFO;
+ return QUIET_PROFILE_USER_INFO;
}
return null;
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java
index 41cbd8137f5e..b2cb8c9216ee 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java
@@ -154,7 +154,7 @@ public class RecentsAnimationTest extends ActivityTestsBase {
ACTIVITY_TYPE_RECENTS);
assertThat(recentsStack).isNotNull();
- ActivityRecord recentsActivity = recentsStack.getTopActivity();
+ ActivityRecord recentsActivity = recentsStack.getTopNonFinishingActivity();
// The activity is started in background so it should be invisible and will be stopped.
assertThat(recentsActivity).isNotNull();
assertThat(mSupervisor.mStoppingActivities).contains(recentsActivity);
@@ -211,7 +211,7 @@ public class RecentsAnimationTest extends ActivityTestsBase {
display.mDisplayContent.mBoundsAnimationController = mock(BoundsAnimationController.class);
ActivityStack homeStack = display.getHomeStack();
// Assume the home activity support recents.
- ActivityRecord targetActivity = homeStack.getTopActivity();
+ ActivityRecord targetActivity = homeStack.getTopNonFinishingActivity();
if (targetActivity == null) {
targetActivity = new ActivityBuilder(mService)
.setCreateTask(true)
diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
new file mode 100644
index 000000000000..ecd9a834d5b3
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
@@ -0,0 +1,426 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm;
+
+import static android.content.pm.ActivityInfo.CONFIG_ORIENTATION;
+import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE;
+import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
+import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
+import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
+import static android.view.Surface.ROTATION_270;
+import static android.view.Surface.ROTATION_90;
+
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.eq;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
+import static com.android.server.wm.ActivityStack.ActivityState.STOPPED;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+
+import android.app.ActivityManager;
+import android.app.ActivityManagerInternal;
+import android.app.TaskStackListener;
+import android.app.WindowConfiguration;
+import android.content.pm.ActivityInfo;
+import android.content.res.Configuration;
+import android.graphics.Rect;
+import android.os.IBinder;
+import android.platform.test.annotations.Presubmit;
+
+import androidx.test.filters.MediumTest;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests for Size Compatibility mode.
+ *
+ * Build/Install/Run:
+ * atest WmTests:SizeCompatTests
+ */
+@MediumTest
+@Presubmit
+@RunWith(WindowTestRunner.class)
+public class SizeCompatTests extends ActivityTestsBase {
+ private ActivityStack mStack;
+ private Task mTask;
+ private ActivityRecord mActivity;
+
+ private void setUpApp(ActivityDisplay display) {
+ mStack = new StackBuilder(mRootActivityContainer).setDisplay(display).build();
+ mTask = mStack.getChildAt(0);
+ mActivity = mTask.getTopNonFinishingActivity();
+ }
+
+ private void ensureActivityConfiguration() {
+ mActivity.ensureActivityConfiguration(0 /* globalChanges */, false /* preserveWindow */);
+ }
+
+ @Test
+ public void testRestartProcessIfVisible() {
+ setUpApp(new TestActivityDisplay.Builder(mService, 1000, 2500).build());
+ doNothing().when(mSupervisor).scheduleRestartTimeout(mActivity);
+ mActivity.visible = true;
+ mActivity.setSavedState(null /* savedState */);
+ mActivity.setState(ActivityStack.ActivityState.RESUMED, "testRestart");
+ prepareUnresizable(1.5f /* maxAspect */, SCREEN_ORIENTATION_UNSPECIFIED);
+
+ final Rect originalOverrideBounds = new Rect(mActivity.getBounds());
+ resizeDisplay(mStack.getDisplay(), 600, 1200);
+ // The visible activity should recompute configuration according to the last parent bounds.
+ mService.restartActivityProcessIfVisible(mActivity.appToken);
+
+ assertEquals(ActivityStack.ActivityState.RESTARTING_PROCESS, mActivity.getState());
+ assertNotEquals(originalOverrideBounds, mActivity.getBounds());
+ }
+
+ @Test
+ public void testKeepBoundsWhenChangingFromFreeformToFullscreen() {
+ removeGlobalMinSizeRestriction();
+ // create freeform display and a freeform app
+ ActivityDisplay display = new TestActivityDisplay.Builder(mService, 2000, 1000)
+ .setCanRotate(false)
+ .setWindowingMode(WindowConfiguration.WINDOWING_MODE_FREEFORM).build();
+ setUpApp(display);
+
+ // Put app window into freeform and then make it a compat app.
+ mTask.setBounds(100, 100, 400, 600);
+ prepareUnresizable(-1.f /* maxAspect */, SCREEN_ORIENTATION_PORTRAIT);
+
+ final Rect bounds = new Rect(mActivity.getBounds());
+ final int density = mActivity.getConfiguration().densityDpi;
+
+ // change display configuration to fullscreen
+ Configuration c = new Configuration(display.getRequestedOverrideConfiguration());
+ c.windowConfiguration.setWindowingMode(WindowConfiguration.WINDOWING_MODE_FULLSCREEN);
+ display.onRequestedOverrideConfigurationChanged(c);
+
+ // check if dimensions stay the same
+ assertTrue(mActivity.inSizeCompatMode());
+ assertEquals(bounds.width(), mActivity.getBounds().width());
+ assertEquals(bounds.height(), mActivity.getBounds().height());
+ assertEquals(density, mActivity.getConfiguration().densityDpi);
+ }
+
+ @Test
+ public void testFixedAspectRatioBoundsWithDecor() {
+ final int decorHeight = 200; // e.g. The device has cutout.
+ setUpApp(new TestActivityDisplay.Builder(mService, 600, 800)
+ .setNotch(decorHeight).build());
+
+ mActivity.info.minAspectRatio = mActivity.info.maxAspectRatio = 1;
+ prepareUnresizable(-1f, SCREEN_ORIENTATION_UNSPECIFIED);
+
+ // The parent configuration doesn't change since the first resolved configuration, so the
+ // activity shouldn't be in the size compatibility mode.
+ assertFalse(mActivity.inSizeCompatMode());
+
+ final Rect appBounds = mActivity.getWindowConfiguration().getAppBounds();
+ // Ensure the app bounds keep the declared aspect ratio.
+ assertEquals(appBounds.width(), appBounds.height());
+ // The decor height should be a part of the effective bounds.
+ assertEquals(mActivity.getBounds().height(), appBounds.height() + decorHeight);
+
+ mTask.getConfiguration().windowConfiguration.setRotation(ROTATION_90);
+ mActivity.onConfigurationChanged(mTask.getConfiguration());
+ // After changing orientation, the aspect ratio should be the same.
+ assertEquals(appBounds.width(), appBounds.height());
+ // The decor height will be included in width.
+ assertEquals(mActivity.getBounds().width(), appBounds.width() + decorHeight);
+ }
+
+ @Test
+ public void testFixedScreenConfigurationWhenMovingToDisplay() {
+ setUpApp(new TestActivityDisplay.Builder(mService, 1000, 2500).build());
+
+ // Make a new less-tall display with lower density
+ final ActivityDisplay newDisplay =
+ new TestActivityDisplay.Builder(mService, 1000, 2000)
+ .setDensityDpi(200).build();
+
+ mActivity = new ActivityBuilder(mService)
+ .setTask(mTask)
+ .setResizeMode(RESIZE_MODE_UNRESIZEABLE)
+ .setMaxAspectRatio(1.5f)
+ .build();
+ mActivity.visible = true;
+
+ final Rect originalBounds = new Rect(mActivity.getBounds());
+ final int originalDpi = mActivity.getConfiguration().densityDpi;
+
+ // Move the non-resizable activity to the new display.
+ mStack.reparent(newDisplay.mDisplayContent, true /* onTop */);
+
+ assertEquals(originalBounds.width(), mActivity.getBounds().width());
+ assertEquals(originalBounds.height(), mActivity.getBounds().height());
+ assertEquals(originalDpi, mActivity.getConfiguration().densityDpi);
+ assertTrue(mActivity.inSizeCompatMode());
+ }
+
+ @Test
+ public void testFixedScreenBoundsWhenDisplaySizeChanged() {
+ setUpApp(new TestActivityDisplay.Builder(mService, 1000, 2500).build());
+ prepareUnresizable(-1f /* maxAspect */, SCREEN_ORIENTATION_PORTRAIT);
+ assertFalse(mActivity.inSizeCompatMode());
+
+ final Rect origBounds = new Rect(mActivity.getBounds());
+
+ // Change the size of current display.
+ resizeDisplay(mStack.getDisplay(), 1000, 2000);
+ ensureActivityConfiguration();
+
+ assertEquals(origBounds.width(), mActivity.getWindowConfiguration().getBounds().width());
+ assertEquals(origBounds.height(), mActivity.getWindowConfiguration().getBounds().height());
+ assertTrue(mActivity.inSizeCompatMode());
+
+ // Change display size to a different orientation
+ resizeDisplay(mStack.getDisplay(), 2000, 1000);
+ ensureActivityConfiguration();
+ assertEquals(origBounds.width(), mActivity.getWindowConfiguration().getBounds().width());
+ assertEquals(origBounds.height(), mActivity.getWindowConfiguration().getBounds().height());
+ }
+
+ @Test
+ public void testLetterboxFullscreenBounds() {
+ setUpApp(new TestActivityDisplay.Builder(mService, 1000, 2500).build());
+
+ // Fill out required fields on default display since WM-side is mocked out
+ prepareUnresizable(-1.f /* maxAspect */, SCREEN_ORIENTATION_LANDSCAPE);
+ assertFalse(mActivity.inSizeCompatMode());
+ assertTrue(mActivity.getBounds().width() > mActivity.getBounds().height());
+ }
+
+ @Test
+ public void testMoveToDifferentOrientDisplay() {
+ setUpApp(new TestActivityDisplay.Builder(mService, 1000, 2500).build());
+
+ final ActivityDisplay newDisplay =
+ new TestActivityDisplay.Builder(mService, 2000, 1000)
+ .setCanRotate(false).build();
+
+ prepareUnresizable(-1.f /* maxAspect */, SCREEN_ORIENTATION_PORTRAIT);
+ assertFalse(mActivity.inSizeCompatMode());
+
+ final Rect origBounds = new Rect(mActivity.getBounds());
+
+ // Move the non-resizable activity to the new display.
+ mStack.reparent(newDisplay.mDisplayContent, true /* onTop */);
+ ensureActivityConfiguration();
+ assertEquals(origBounds.width(), mActivity.getWindowConfiguration().getBounds().width());
+ assertEquals(origBounds.height(), mActivity.getWindowConfiguration().getBounds().height());
+ assertTrue(mActivity.inSizeCompatMode());
+ }
+
+ @Test
+ public void testFixedOrientRotateCutoutDisplay() {
+ // Create a display with a notch/cutout
+ setUpApp(new TestActivityDisplay.Builder(mService, 1000, 2500).setNotch(60).build());
+ prepareUnresizable(1.4f /* maxAspect */, SCREEN_ORIENTATION_PORTRAIT);
+
+ final Rect origBounds = new Rect(mActivity.getBounds());
+ final Rect origAppBounds = new Rect(mActivity.getWindowConfiguration().getAppBounds());
+
+ // Rotate the display
+ Configuration c = new Configuration();
+ mStack.getDisplay().mDisplayContent.getDisplayRotation().setRotation(ROTATION_270);
+ mStack.getDisplay().mDisplayContent.computeScreenConfiguration(c);
+ mStack.getDisplay().onRequestedOverrideConfigurationChanged(c);
+
+ // Make sure the app size is the same
+ assertEquals(ROTATION_270, mStack.getWindowConfiguration().getRotation());
+ assertEquals(origBounds.width(), mActivity.getWindowConfiguration().getBounds().width());
+ assertEquals(origBounds.height(), mActivity.getWindowConfiguration().getBounds().height());
+ assertEquals(origAppBounds.width(),
+ mActivity.getWindowConfiguration().getAppBounds().width());
+ assertEquals(origAppBounds.height(),
+ mActivity.getWindowConfiguration().getAppBounds().height());
+ }
+
+ @Test
+ public void testFixedAspOrientChangeOrient() {
+ setUpApp(new TestActivityDisplay.Builder(mService, 1000, 2500).build());
+
+ prepareUnresizable(1.4f /* maxAspect */, SCREEN_ORIENTATION_LANDSCAPE);
+ assertTrue(mActivity.inSizeCompatMode());
+
+ final Rect originalBounds = new Rect(mActivity.getBounds());
+ final Rect originalAppBounds = new Rect(mActivity.getWindowConfiguration().getAppBounds());
+
+ // Change the fixed orientation
+ mActivity.mOrientation = SCREEN_ORIENTATION_PORTRAIT;
+ mActivity.info.screenOrientation = SCREEN_ORIENTATION_PORTRAIT;
+ // TaskRecord's configuration actually depends on the activity config right now for
+ // pillarboxing.
+ mActivity.getTask().onRequestedOverrideConfigurationChanged(
+ mActivity.getTask().getRequestedOverrideConfiguration());
+
+ assertEquals(originalBounds.width(), mActivity.getBounds().height());
+ assertEquals(originalBounds.height(), mActivity.getBounds().width());
+ assertEquals(originalAppBounds.width(),
+ mActivity.getWindowConfiguration().getAppBounds().height());
+ assertEquals(originalAppBounds.height(),
+ mActivity.getWindowConfiguration().getAppBounds().width());
+ }
+
+ @Test
+ public void testFixedScreenLayoutSizeBits() {
+ setUpApp(new TestActivityDisplay.Builder(mService, 1000, 2500).build());
+ final int fixedScreenLayout = Configuration.SCREENLAYOUT_LONG_NO
+ | Configuration.SCREENLAYOUT_SIZE_NORMAL;
+ final int layoutMask = Configuration.SCREENLAYOUT_LONG_MASK
+ | Configuration.SCREENLAYOUT_SIZE_MASK
+ | Configuration.SCREENLAYOUT_LAYOUTDIR_MASK;
+ Configuration c = new Configuration(mTask.getRequestedOverrideConfiguration());
+ c.screenLayout = fixedScreenLayout | Configuration.SCREENLAYOUT_LAYOUTDIR_LTR;
+ mTask.onRequestedOverrideConfigurationChanged(c);
+ prepareUnresizable(1.5f, SCREEN_ORIENTATION_UNSPECIFIED);
+
+ // The initial configuration should inherit from parent.
+ assertEquals(fixedScreenLayout | Configuration.SCREENLAYOUT_LAYOUTDIR_LTR,
+ mActivity.getConfiguration().screenLayout & layoutMask);
+
+ mTask.getConfiguration().screenLayout = Configuration.SCREENLAYOUT_LAYOUTDIR_RTL
+ | Configuration.SCREENLAYOUT_LONG_YES | Configuration.SCREENLAYOUT_SIZE_LARGE;
+ mActivity.onConfigurationChanged(mTask.getConfiguration());
+
+ // The size and aspect ratio bits don't change, but the layout direction should be updated.
+ assertEquals(fixedScreenLayout | Configuration.SCREENLAYOUT_LAYOUTDIR_RTL,
+ mActivity.getConfiguration().screenLayout & layoutMask);
+ }
+
+ @Test
+ public void testResetNonVisibleActivity() {
+ setUpApp(new TestActivityDisplay.Builder(mService, 1000, 2500).build());
+ final ActivityDisplay display = mStack.getDisplay();
+ spyOn(display);
+
+ prepareUnresizable(1.5f, SCREEN_ORIENTATION_UNSPECIFIED);
+ mActivity.setState(STOPPED, "testSizeCompatMode");
+ mActivity.visible = false;
+ mActivity.app.setReportedProcState(ActivityManager.PROCESS_STATE_CACHED_ACTIVITY);
+ // Make the parent bounds to be different so the activity is in size compatibility mode.
+ mTask.getWindowConfiguration().setAppBounds(new Rect(0, 0, 600, 1200));
+
+ // Simulate the display changes orientation.
+ when(display.getLastOverrideConfigurationChanges()).thenReturn(
+ ActivityInfo.CONFIG_SCREEN_SIZE | CONFIG_ORIENTATION
+ | ActivityInfo.CONFIG_WINDOW_CONFIGURATION);
+ mActivity.onConfigurationChanged(mTask.getConfiguration());
+ when(display.getLastOverrideConfigurationChanges()).thenCallRealMethod();
+ // The override configuration should not change so it is still in size compatibility mode.
+ assertTrue(mActivity.inSizeCompatMode());
+
+ // Change display density
+ final DisplayContent displayContent = mStack.getDisplay().mDisplayContent;
+ displayContent.mBaseDisplayDensity = (int) (0.7f * displayContent.mBaseDisplayDensity);
+ final Configuration c = new Configuration();
+ displayContent.computeScreenConfiguration(c);
+ mService.mAmInternal = mock(ActivityManagerInternal.class);
+ mStack.getDisplay().onRequestedOverrideConfigurationChanged(c);
+
+ // The override configuration should be reset and the activity's process will be killed.
+ assertFalse(mActivity.inSizeCompatMode());
+ verify(mActivity).restartProcessIfVisible();
+ mLockRule.runWithScissors(mService.mH, () -> { }, TimeUnit.SECONDS.toMillis(3));
+ verify(mService.mAmInternal).killProcess(
+ eq(mActivity.app.mName), eq(mActivity.app.mUid), anyString());
+ }
+
+ /**
+ * Ensures that {@link TaskStackListener} can receive callback about the activity in size
+ * compatibility mode.
+ */
+ @Test
+ public void testHandleActivitySizeCompatMode() {
+ setUpApp(new TestActivityDisplay.Builder(mService, 1000, 2000).build());
+ ActivityRecord activity = mActivity;
+ activity.setState(ActivityStack.ActivityState.RESUMED, "testHandleActivitySizeCompatMode");
+ prepareUnresizable(-1.f /* maxAspect */, SCREEN_ORIENTATION_PORTRAIT);
+ ensureActivityConfiguration();
+ assertFalse(mActivity.inSizeCompatMode());
+
+ final ArrayList<IBinder> compatTokens = new ArrayList<>();
+ mService.getTaskChangeNotificationController().registerTaskStackListener(
+ new TaskStackListener() {
+ @Override
+ public void onSizeCompatModeActivityChanged(int displayId,
+ IBinder activityToken) {
+ compatTokens.add(activityToken);
+ }
+ });
+
+ // Resize the display so that the activity exercises size-compat mode.
+ resizeDisplay(mStack.getDisplay(), 1000, 2500);
+
+ // Expect the exact token when the activity is in size compatibility mode.
+ assertEquals(1, compatTokens.size());
+ assertEquals(activity.appToken, compatTokens.get(0));
+
+ compatTokens.clear();
+ // Make the activity resizable again by restarting it
+ activity.info.resizeMode = ActivityInfo.RESIZE_MODE_RESIZEABLE;
+ activity.visible = true;
+ activity.restartProcessIfVisible();
+ // The full lifecycle isn't hooked up so manually set state to resumed
+ activity.setState(ActivityStack.ActivityState.RESUMED, "testHandleActivitySizeCompatMode");
+ mStack.getDisplay().handleActivitySizeCompatModeIfNeeded(activity);
+
+ // Expect null token when switching to non-size-compat mode activity.
+ assertEquals(1, compatTokens.size());
+ assertEquals(null, compatTokens.get(0));
+ }
+
+ /**
+ * Setup {@link #mActivity} as a size-compat-mode-able activity with fixed aspect and/or
+ * orientation.
+ */
+ private void prepareUnresizable(float maxAspect, int screenOrientation) {
+ mActivity.info.resizeMode = RESIZE_MODE_UNRESIZEABLE;
+ mActivity.visible = true;
+ if (maxAspect >= 0) {
+ mActivity.info.maxAspectRatio = maxAspect;
+ }
+ if (screenOrientation != SCREEN_ORIENTATION_UNSPECIFIED) {
+ mActivity.mOrientation = screenOrientation;
+ mActivity.info.screenOrientation = screenOrientation;
+ // TaskRecord's configuration actually depends on the activity config right now for
+ // pillarboxing.
+ mActivity.getTask().onRequestedOverrideConfigurationChanged(
+ mActivity.getTask().getRequestedOverrideConfiguration());
+ }
+ ensureActivityConfiguration();
+ }
+
+ private void resizeDisplay(ActivityDisplay display, int width, int height) {
+ final DisplayContent displayContent = display.mDisplayContent;
+ displayContent.mBaseDisplayWidth = width;
+ displayContent.mBaseDisplayHeight = height;
+ Configuration c = new Configuration();
+ displayContent.computeScreenConfiguration(c);
+ display.onRequestedOverrideConfigurationChanged(c);
+ }
+}
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java
index faa9f11f97bf..b07a27b3495c 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java
@@ -45,6 +45,7 @@ import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.sameInstance;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
@@ -161,12 +162,12 @@ public class TaskRecordTests extends ActivityTestsBase {
assertTrue(task.returnsToHomeStack());
}
- /** Ensures that empty bounds are not propagated to the configuration. */
+ /** Ensures that empty bounds cause appBounds to inherit from parent. */
@Test
public void testAppBounds_EmptyBounds() {
final Rect emptyBounds = new Rect();
testStackBoundsConfiguration(WINDOWING_MODE_FULLSCREEN, mParentBounds, emptyBounds,
- null /*ExpectedBounds*/);
+ mParentBounds);
}
/** Ensures that bounds on freeform stacks are not clipped. */
@@ -280,7 +281,7 @@ public class TaskRecordTests extends ActivityTestsBase {
ActivityStack stack = new StackBuilder(mRootActivityContainer)
.setWindowingMode(WINDOWING_MODE_FULLSCREEN).setDisplay(display).build();
Task task = stack.getChildAt(0);
- ActivityRecord root = task.getTopActivity();
+ ActivityRecord root = task.getTopNonFinishingActivity();
assertEquals(fullScreenBounds, task.getBounds());
@@ -293,7 +294,7 @@ public class TaskRecordTests extends ActivityTestsBase {
// Top activity gets used
ActivityRecord top = new ActivityBuilder(mService).setTask(task).setStack(stack).build();
- assertEquals(top, task.getTopActivity());
+ assertEquals(top, task.getTopNonFinishingActivity());
top.setRequestedOrientation(SCREEN_ORIENTATION_LANDSCAPE);
assertThat(task.getBounds().width()).isGreaterThan(task.getBounds().height());
assertEquals(task.getBounds().width(), fullScreenBounds.width());
@@ -344,7 +345,7 @@ public class TaskRecordTests extends ActivityTestsBase {
ActivityStack stack = new StackBuilder(mRootActivityContainer)
.setWindowingMode(WINDOWING_MODE_FULLSCREEN).setDisplay(display).build();
Task task = stack.getChildAt(0);
- ActivityRecord root = task.getTopActivity();
+ ActivityRecord root = task.getTopNonFinishingActivity();
final WindowContainer parentWindowContainer =
new WindowContainer(mSystemServicesTestRule.getWindowManagerService());
@@ -415,6 +416,24 @@ public class TaskRecordTests extends ActivityTestsBase {
assertEquals(Configuration.ORIENTATION_LANDSCAPE, inOutConfig.orientation);
}
+ @Test
+ public void testComputeNestedConfigResourceOverrides() {
+ final Task task = new TaskBuilder(mSupervisor).build();
+ assertTrue(task.getResolvedOverrideBounds().isEmpty());
+ int origScreenH = task.getConfiguration().screenHeightDp;
+ Configuration stackConfig = new Configuration();
+ stackConfig.setTo(task.getStack().getRequestedOverrideConfiguration());
+ stackConfig.windowConfiguration.setWindowingMode(WINDOWING_MODE_FREEFORM);
+
+ // Set bounds on stack (not task) and verify that the task resource configuration changes
+ // despite it's override bounds being empty.
+ Rect bounds = new Rect(task.getStack().getBounds());
+ bounds.bottom = (int) (bounds.bottom * 0.6f);
+ stackConfig.windowConfiguration.setBounds(bounds);
+ task.getStack().onRequestedOverrideConfigurationChanged(stackConfig);
+ assertNotEquals(origScreenH, task.getConfiguration().screenHeightDp);
+ }
+
/** Ensures that the alias intent won't have target component resolved. */
@Test
public void testTaskIntentActivityAlias() {
diff --git a/services/tests/wmtests/src/com/android/server/wm/TestActivityDisplay.java b/services/tests/wmtests/src/com/android/server/wm/TestActivityDisplay.java
index 9c3ff654ddf0..48ec261f88f6 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TestActivityDisplay.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TestActivityDisplay.java
@@ -23,12 +23,17 @@ import static android.view.DisplayAdjustments.DEFAULT_DISPLAY_ADJUSTMENTS;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.anyBoolean;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static org.mockito.ArgumentMatchers.any;
+import android.content.res.Configuration;
+import android.graphics.Insets;
+import android.graphics.Rect;
import android.hardware.display.DisplayManagerGlobal;
import android.view.Display;
+import android.view.DisplayCutout;
import android.view.DisplayInfo;
class TestActivityDisplay extends ActivityDisplay {
@@ -107,4 +112,94 @@ class TestActivityDisplay extends ActivityDisplay {
.setCreateActivity(false)
.build();
}
+
+ public static class Builder {
+ private final DisplayInfo mInfo;
+ private boolean mCanRotate = true;
+ private int mWindowingMode = WINDOWING_MODE_FULLSCREEN;
+ private int mPosition = POSITION_TOP;
+ private final ActivityTaskManagerService mService;
+ private boolean mSystemDecorations = false;
+
+ Builder(ActivityTaskManagerService service, int width, int height) {
+ mService = service;
+ mInfo = new DisplayInfo();
+ mService.mContext.getDisplay().getDisplayInfo(mInfo);
+ mInfo.logicalWidth = width;
+ mInfo.logicalHeight = height;
+ mInfo.logicalDensityDpi = 300;
+ mInfo.displayCutout = null;
+ }
+ Builder(ActivityTaskManagerService service, DisplayInfo info) {
+ mService = service;
+ mInfo = info;
+ }
+ Builder setSystemDecorations(boolean yes) {
+ mSystemDecorations = yes;
+ return this;
+ }
+ Builder setPosition(int position) {
+ mPosition = position;
+ return this;
+ }
+ Builder setUniqueId(String uniqueId) {
+ mInfo.uniqueId = uniqueId;
+ return this;
+ }
+ Builder setType(int type) {
+ mInfo.type = type;
+ return this;
+ }
+ Builder setOwnerUid(int ownerUid) {
+ mInfo.ownerUid = ownerUid;
+ return this;
+ }
+ Builder setNotch(int height) {
+ mInfo.displayCutout = new DisplayCutout(
+ Insets.of(0, height, 0, 0), null, new Rect(20, 0, 80, height), null, null);
+ return this;
+ }
+ Builder setCanRotate(boolean canRotate) {
+ mCanRotate = canRotate;
+ return this;
+ }
+ Builder setWindowingMode(int windowingMode) {
+ mWindowingMode = windowingMode;
+ return this;
+ }
+ Builder setDensityDpi(int dpi) {
+ mInfo.logicalDensityDpi = dpi;
+ return this;
+ }
+ TestActivityDisplay build() {
+ final int displayId = SystemServicesTestRule.sNextDisplayId++;
+ final Display display = new Display(DisplayManagerGlobal.getInstance(), displayId,
+ mInfo, DEFAULT_DISPLAY_ADJUSTMENTS);
+ final TestActivityDisplay newDisplay;
+ synchronized (mService.mGlobalLock) {
+ newDisplay = new TestActivityDisplay(mService.mStackSupervisor, display);
+ mService.mRootActivityContainer.addChild(newDisplay, mPosition);
+ }
+ // disable the normal system decorations
+ final DisplayPolicy displayPolicy = newDisplay.mDisplayContent.getDisplayPolicy();
+ spyOn(displayPolicy);
+ if (mSystemDecorations) {
+ doReturn(true).when(newDisplay).supportsSystemDecorations();
+ } else {
+ doReturn(false).when(displayPolicy).hasNavigationBar();
+ doReturn(false).when(displayPolicy).hasStatusBar();
+ doReturn(false).when(newDisplay).supportsSystemDecorations();
+ }
+ Configuration c = new Configuration();
+ newDisplay.mDisplayContent.computeScreenConfiguration(c);
+ c.windowConfiguration.setWindowingMode(mWindowingMode);
+ newDisplay.onRequestedOverrideConfigurationChanged(c);
+ // This is a rotating display
+ if (mCanRotate) {
+ doReturn(false).when(newDisplay.mDisplayContent)
+ .handlesOrientationChangeFromDescendant();
+ }
+ return newDisplay;
+ }
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowFrameTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowFrameTests.java
index 0b8b6a1f23ec..7be05a39cbde 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowFrameTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowFrameTests.java
@@ -96,6 +96,10 @@ public class WindowFrameTests extends WindowTestsBase {
assertRect(w.getFrameLw(), left, top, right, bottom);
}
+ private void assertRelFrame(WindowState w, int left, int top, int right, int bottom) {
+ assertRect(w.getRelativeFrameLw(), left, top, right, bottom);
+ }
+
private void assertContentFrame(WindowState w, Rect expectedRect) {
assertRect(w.getContentFrameLw(), expectedRect.left, expectedRect.top, expectedRect.right,
expectedRect.bottom);
@@ -153,6 +157,7 @@ public class WindowFrameTests extends WindowTestsBase {
w.getWindowFrames().setFrames(pf, df, cf, vf, dcf, sf);
w.computeFrameLw();
assertFrame(w, 0, 0, 1000, 1000);
+ assertRelFrame(w, 0, 0, 1000, 1000);
assertContentInset(w, 0, topContentInset, 0, bottomContentInset);
assertVisibleInset(w, 0, topVisibleInset, 0, bottomVisibleInset);
assertStableInset(w, leftStableInset, 0, rightStableInset, 0);
@@ -167,6 +172,7 @@ public class WindowFrameTests extends WindowTestsBase {
w.mRequestedHeight = 100;
w.computeFrameLw();
assertFrame(w, 100, 100, 200, 200);
+ assertRelFrame(w, 100, 100, 200, 200);
assertContentInset(w, 0, 0, 0, 0);
// In this case the frames are shrunk to the window frame.
assertContentFrame(w, w.getFrameLw());
@@ -189,6 +195,7 @@ public class WindowFrameTests extends WindowTestsBase {
w.getWindowFrames().setFrames(pf, pf, pf, pf, pf, pf);
w.computeFrameLw();
assertFrame(w, 0, 0, 1000, 1000);
+ assertRelFrame(w, 0, 0, 1000, 1000);
// It can select various widths and heights within the bounds.
// Strangely the window attribute width is ignored for normal windows
@@ -242,15 +249,18 @@ public class WindowFrameTests extends WindowTestsBase {
w.mAttrs.gravity = Gravity.RIGHT | Gravity.TOP;
w.computeFrameLw();
assertFrame(w, 700, 0, 1000, 300);
+ assertRelFrame(w, 700, 0, 1000, 300);
w.mAttrs.gravity = Gravity.RIGHT | Gravity.BOTTOM;
w.computeFrameLw();
assertFrame(w, 700, 700, 1000, 1000);
+ assertRelFrame(w, 700, 700, 1000, 1000);
// Window specified x and y are interpreted as offsets in the opposite
// direction of gravity
w.mAttrs.x = 100;
w.mAttrs.y = 100;
w.computeFrameLw();
assertFrame(w, 600, 600, 900, 900);
+ assertRelFrame(w, 600, 600, 900, 900);
}
@Test
@@ -279,6 +289,8 @@ public class WindowFrameTests extends WindowTestsBase {
// For non fullscreen tasks the containing frame is based off the
// task bounds not the parent frame.
assertEquals(resolvedTaskBounds, w.getFrameLw());
+ assertEquals(0, w.getRelativeFrameLw().left);
+ assertEquals(0, w.getRelativeFrameLw().top);
assertContentFrame(w, resolvedTaskBounds);
assertContentInset(w, 0, 0, 0, 0);
@@ -290,6 +302,8 @@ public class WindowFrameTests extends WindowTestsBase {
windowFrames.setFrames(pf, pf, cf, cf, pf, cf);
w.computeFrameLw();
assertEquals(resolvedTaskBounds, w.getFrameLw());
+ assertEquals(0, w.getRelativeFrameLw().left);
+ assertEquals(0, w.getRelativeFrameLw().top);
int contentInsetRight = resolvedTaskBounds.right - cfRight;
int contentInsetBottom = resolvedTaskBounds.bottom - cfBottom;
assertContentInset(w, 0, 0, contentInsetRight, contentInsetBottom);
@@ -309,6 +323,8 @@ public class WindowFrameTests extends WindowTestsBase {
windowFrames.setFrames(pf, pf, cf, cf, pf, cf);
w.computeFrameLw();
assertEquals(resolvedTaskBounds, w.getFrameLw());
+ assertEquals(0, w.getRelativeFrameLw().left);
+ assertEquals(0, w.getRelativeFrameLw().top);
contentInsetRight = insetRight - cfRight;
contentInsetBottom = insetBottom - cfBottom;
assertContentInset(w, 0, 0, contentInsetRight, contentInsetBottom);
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index 2cdf21ddca04..46c89d26ad03 100755
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -821,13 +821,6 @@ public class CarrierConfigManager {
"always_show_emergency_alert_onoff_bool";
/**
- * The flag to disable cell broadcast severe alert when extreme alert is disabled.
- * @hide
- */
- public static final String KEY_DISABLE_SEVERE_WHEN_EXTREME_DISABLED_BOOL =
- "disable_severe_when_extreme_disabled_bool";
-
- /**
* The data call retry configuration for different types of APN.
* @hide
*/
@@ -3455,7 +3448,6 @@ public class CarrierConfigManager {
sDefaults.putStringArray(KEY_APN_SETTINGS_DEFAULT_APN_TYPES_STRING_ARRAY, null);
sDefaults.putBoolean(KEY_BROADCAST_EMERGENCY_CALL_STATE_CHANGES_BOOL, false);
sDefaults.putBoolean(KEY_ALWAYS_SHOW_EMERGENCY_ALERT_ONOFF_BOOL, false);
- sDefaults.putBoolean(KEY_DISABLE_SEVERE_WHEN_EXTREME_DISABLED_BOOL, true);
sDefaults.putStringArray(KEY_CARRIER_DATA_CALL_RETRY_CONFIG_STRINGS, new String[]{
"default:default_randomization=2000,5000,10000,20000,40000,80000:5000,160000:5000,"
+ "320000:5000,640000:5000,1280000:5000,1800000:5000",
diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java
index 3f95a810fe10..89c4e905f503 100644
--- a/telephony/java/android/telephony/SmsManager.java
+++ b/telephony/java/android/telephony/SmsManager.java
@@ -514,7 +514,6 @@ public final class SmsManager {
throw new IllegalArgumentException("Invalid message body");
}
- final Context context = ActivityThread.currentApplication().getApplicationContext();
// We will only show the SMS disambiguation dialog in the case that the message is being
// persisted. This is for two reasons:
// 1) Messages that are not persisted are sent by carrier/OEM apps for a specific
@@ -623,7 +622,6 @@ public final class SmsManager {
final int finalPriority = priority;
final int finalValidity = validityPeriod;
- final Context context = ActivityThread.currentApplication().getApplicationContext();
// We will only show the SMS disambiguation dialog in the case that the message is being
// persisted. This is for two reasons:
// 1) Messages that are not persisted are sent by carrier/OEM apps for a specific
@@ -927,7 +925,6 @@ public final class SmsManager {
}
if (parts.size() > 1) {
- final Context context = ActivityThread.currentApplication().getApplicationContext();
// We will only show the SMS disambiguation dialog in the case that the message is being
// persisted. This is for two reasons:
// 1) Messages that are not persisted are sent by carrier/OEM apps for a specific
@@ -1168,7 +1165,6 @@ public final class SmsManager {
if (parts.size() > 1) {
final int finalPriority = priority;
final int finalValidity = validityPeriod;
- final Context context = ActivityThread.currentApplication().getApplicationContext();
if (persistMessage) {
resolveSubscriptionForOperation(new SubscriptionResolverResult() {
@Override
@@ -1325,7 +1321,6 @@ public final class SmsManager {
throw new IllegalArgumentException("Invalid message data");
}
- final Context context = ActivityThread.currentApplication().getApplicationContext();
resolveSubscriptionForOperation(new SubscriptionResolverResult() {
@Override
public void onSuccess(int subId) {
diff --git a/tests/net/java/com/android/server/connectivity/TetheringTest.java b/tests/net/java/com/android/server/connectivity/TetheringTest.java
index 5f62c08f55f3..9e5717b4bd64 100644
--- a/tests/net/java/com/android/server/connectivity/TetheringTest.java
+++ b/tests/net/java/com/android/server/connectivity/TetheringTest.java
@@ -208,6 +208,12 @@ public class TetheringTest {
if (Context.TELEPHONY_SERVICE.equals(name)) return mTelephonyManager;
return super.getSystemService(name);
}
+
+ @Override
+ public String getSystemServiceName(Class<?> serviceClass) {
+ if (TelephonyManager.class.equals(serviceClass)) return Context.TELEPHONY_SERVICE;
+ return super.getSystemServiceName(serviceClass);
+ }
}
public class MockIpServerDependencies extends IpServer.Dependencies {
diff --git a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
index 1d29a824d10d..4d42a612030d 100644
--- a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
+++ b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
@@ -192,8 +192,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
mService = new NetworkStatsService(
mServiceContext, mNetManager, mAlarmManager, wakeLock, mClock,
- TelephonyManager.getDefault(), mSettings, mStatsFactory,
- new NetworkStatsObservers(), mStatsDir, getBaseDir(mStatsDir));
+ mServiceContext.getSystemService(TelephonyManager.class), mSettings,
+ mStatsFactory, new NetworkStatsObservers(), mStatsDir, getBaseDir(mStatsDir));
mHandlerThread = new HandlerThread("HandlerThread");
mHandlerThread.start();
Handler.Callback callback = new NetworkStatsService.HandlerCallback(mService);
diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java
index 90343d4798a7..f7d2b40e1ea0 100644
--- a/wifi/java/android/net/wifi/WifiConfiguration.java
+++ b/wifi/java/android/net/wifi/WifiConfiguration.java
@@ -384,12 +384,7 @@ public class WifiConfiguration implements Parcelable {
public void setSecurityParams(@SecurityType int securityType) {
// Clear all the bitsets.
allowedKeyManagement.clear();
- allowedProtocols.clear();
allowedAuthAlgorithms.clear();
- allowedPairwiseCiphers.clear();
- allowedGroupCiphers.clear();
- allowedGroupManagementCiphers.clear();
- allowedSuiteBCiphers.clear();
switch (securityType) {
case SECURITY_TYPE_OPEN:
@@ -412,6 +407,9 @@ public class WifiConfiguration implements Parcelable {
requirePMF = true;
break;
case SECURITY_TYPE_EAP_SUITE_B:
+ allowedGroupCiphers.clear();
+ allowedGroupManagementCiphers.clear();
+ allowedSuiteBCiphers.clear();
allowedKeyManagement.set(WifiConfiguration.KeyMgmt.SUITE_B_192);
allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GCMP_256);
allowedGroupManagementCiphers.set(WifiConfiguration.GroupMgmtCipher.BIP_GMAC_256);
@@ -947,6 +945,12 @@ public class WifiConfiguration implements Parcelable {
public int meteredOverride = METERED_OVERRIDE_NONE;
/**
+ * This Wifi configuration is a clone of another network with lower security
+ * @hide
+ */
+ public String clonedNetworkConfigKey;
+
+ /**
* Blend together all the various opinions to decide if the given network
* should be considered metered or not.
*
@@ -1804,6 +1808,7 @@ public class WifiConfiguration implements Parcelable {
shared = true;
dtimInterval = 0;
mRandomizedMacAddress = MacAddress.fromString(WifiInfo.DEFAULT_MAC_ADDRESS);
+ clonedNetworkConfigKey = null;
}
/**
@@ -2371,6 +2376,7 @@ public class WifiConfiguration implements Parcelable {
/** copy constructor {@hide} */
@UnsupportedAppUsage
+
public WifiConfiguration(WifiConfiguration source) {
if (source != null) {
networkId = source.networkId;
@@ -2454,6 +2460,7 @@ public class WifiConfiguration implements Parcelable {
requirePMF = source.requirePMF;
updateIdentifier = source.updateIdentifier;
carrierId = source.carrierId;
+ clonedNetworkConfigKey = source.clonedNetworkConfigKey;
}
}
@@ -2529,6 +2536,7 @@ public class WifiConfiguration implements Parcelable {
dest.writeInt(osu ? 1 : 0);
dest.writeLong(randomizedMacExpirationTimeMs);
dest.writeInt(carrierId);
+ dest.writeString(clonedNetworkConfigKey);
}
/** Implement the Parcelable interface {@hide} */
@@ -2606,6 +2614,7 @@ public class WifiConfiguration implements Parcelable {
config.osu = in.readInt() != 0;
config.randomizedMacExpirationTimeMs = in.readLong();
config.carrierId = in.readInt();
+ config.clonedNetworkConfigKey = in.readString();
return config;
}
diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java
index a61a5afc310e..16cb964901bf 100644
--- a/wifi/java/android/net/wifi/WifiManager.java
+++ b/wifi/java/android/net/wifi/WifiManager.java
@@ -380,14 +380,6 @@ public class WifiManager {
* @hide
*/
public static final String EXTRA_DELAY = "android.net.wifi.extra.DELAY";
- /**
- * String representation of an URL.
- *
- * Retrieve with {@link android.content.Intent#getStringExtra(String)}.
- *
- * @hide
- */
- public static final String EXTRA_URL = "android.net.wifi.extra.URL";
/**
* Broadcast intent action indicating a Passpoint subscription remediation frame has been
@@ -420,34 +412,49 @@ public class WifiManager {
"android.net.wifi.extra.SUBSCRIPTION_REMEDIATION_METHOD";
/**
- * Activity Action: lunch OSU (Online Sign Up) view.
+ * Activity Action: Receiver should launch Passpoint OSU (Online Sign Up) view.
* Included extras:
*
* {@link #EXTRA_OSU_NETWORK}: {@link Network} instance associated with OSU AP.
* {@link #EXTRA_URL}: String representation of a server URL used for OSU process.
*
- * <p>Note: The broadcast is only delivered to registered receivers - no manifest registered
- * components will be launched.
- *
* @hide
*/
+ @SystemApi
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
public static final String ACTION_PASSPOINT_LAUNCH_OSU_VIEW =
"android.net.wifi.action.PASSPOINT_LAUNCH_OSU_VIEW";
/**
- * The lookup key for a {@link android.net.Network} associated with OSU server.
+ * The lookup key for a {@link android.net.Network} associated with a Passpoint OSU server.
+ * Included in the {@link #ACTION_PASSPOINT_LAUNCH_OSU_VIEW} broadcast.
*
* Retrieve with {@link android.content.Intent#getParcelableExtra(String)}.
*
* @hide
*/
+ @SystemApi
public static final String EXTRA_OSU_NETWORK = "android.net.wifi.extra.OSU_NETWORK";
/**
+ * String representation of an URL for Passpoint OSU.
+ * Included in the {@link #ACTION_PASSPOINT_LAUNCH_OSU_VIEW} broadcast.
+ *
+ * Retrieve with {@link android.content.Intent#getStringExtra(String)}.
+ *
+ * @hide
+ */
+ @SystemApi
+ public static final String EXTRA_URL = "android.net.wifi.extra.URL";
+
+ /**
* Broadcast intent action indicating that Wi-Fi has been enabled, disabled,
* enabling, disabling, or unknown. One extra provides this state as an int.
- * Another extra provides the previous state, if available.
+ * Another extra provides the previous state, if available. No network-related
+ * permissions are required to subscribe to this broadcast.
+ *
+ * <p class="note">This broadcast is not delivered to manifest receivers in
+ * applications that target API version 26 or later.
*
* @see #EXTRA_WIFI_STATE
* @see #EXTRA_PREVIOUS_WIFI_STATE
@@ -656,6 +663,7 @@ public class WifiManager {
*
* @hide
*/
+ @SystemApi
public static final int SAP_START_FAILURE_GENERAL= 0;
/**
@@ -664,6 +672,7 @@ public class WifiManager {
*
* @hide
*/
+ @SystemApi
public static final int SAP_START_FAILURE_NO_CHANNEL = 1;
/** @hide */
@@ -748,7 +757,11 @@ public class WifiManager {
/**
* Broadcast intent action indicating that the state of Wi-Fi connectivity
* has changed. An extra provides the new state
- * in the form of a {@link android.net.NetworkInfo} object.
+ * in the form of a {@link android.net.NetworkInfo} object. No network-related
+ * permissions are required to subscribe to this broadcast.
+ *
+ * <p class="note">This broadcast is not delivered to manifest receivers in
+ * applications that target API version 26 or later.
* @see #EXTRA_NETWORK_INFO
*/
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
@@ -917,7 +930,7 @@ public class WifiManager {
* The RSSI (signal strength) has changed.
*
* Receiver Required Permission: android.Manifest.permission.ACCESS_WIFI_STATE
- * @see {@link #EXTRA_NEW_RSSI}
+ * @see #EXTRA_NEW_RSSI
*/
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String RSSI_CHANGED_ACTION = "android.net.wifi.RSSI_CHANGED";
@@ -927,21 +940,37 @@ public class WifiManager {
public static final String EXTRA_NEW_RSSI = "newRssi";
/**
- * Broadcast intent action indicating that the link configuration
- * changed on wifi.
+ * @see #ACTION_LINK_CONFIGURATION_CHANGED
* @hide
*/
@UnsupportedAppUsage
public static final String LINK_CONFIGURATION_CHANGED_ACTION =
- "android.net.wifi.LINK_CONFIGURATION_CHANGED";
+ "android.net.wifi.LINK_CONFIGURATION_CHANGED";
+
+ /**
+ * Broadcast intent action indicating that the link configuration changed on wifi.
+ * <br />Included Extras:
+ * <br />{@link #EXTRA_LINK_PROPERTIES}: {@link android.net.LinkProperties} object associated
+ * with the Wi-Fi network.
+ * <br /> No permissions are required to listen to this broadcast.
+ * @hide
+ */
+ @SystemApi
+ public static final String ACTION_LINK_CONFIGURATION_CHANGED =
+ // should be android.net.wifi.action.LINK_CONFIGURATION_CHANGED, but due to
+ // @UnsupportedAppUsage leaving it as android.net.wifi.LINK_CONFIGURATION_CHANGED.
+ LINK_CONFIGURATION_CHANGED_ACTION;
/**
* The lookup key for a {@link android.net.LinkProperties} object associated with the
- * Wi-Fi network. Retrieve with
- * {@link android.content.Intent#getParcelableExtra(String)}.
+ * Wi-Fi network.
+ * Included in the {@link #ACTION_LINK_CONFIGURATION_CHANGED} broadcast.
+ *
+ * Retrieve with {@link android.content.Intent#getParcelableExtra(String)}.
* @hide
*/
- public static final String EXTRA_LINK_PROPERTIES = "linkProperties";
+ @SystemApi
+ public static final String EXTRA_LINK_PROPERTIES = "android.net.wifi.extra.LINK_PROPERTIES";
/**
* The lookup key for a {@link android.net.NetworkCapabilities} object associated with the
@@ -981,24 +1010,26 @@ public class WifiManager {
public static final String ACTION_PICK_WIFI_NETWORK = "android.net.wifi.PICK_WIFI_NETWORK";
/**
- * Activity Action: Show UI to get user approval to enable WiFi.
+ * Activity Action: Receiver should show UI to get user approval to enable WiFi.
* <p>Input: {@link android.content.Intent#EXTRA_PACKAGE_NAME} string extra with
* the name of the app requesting the action.
* <p>Output: Nothing.
- *
+ * <p>No permissions are required to send this action.
* @hide
*/
+ @SystemApi
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
public static final String ACTION_REQUEST_ENABLE = "android.net.wifi.action.REQUEST_ENABLE";
/**
- * Activity Action: Show UI to get user approval to disable WiFi.
+ * Activity Action: Receiver should show UI to get user approval to disable WiFi.
* <p>Input: {@link android.content.Intent#EXTRA_PACKAGE_NAME} string extra with
* the name of the app requesting the action.
* <p>Output: Nothing.
- *
+ * <p>No permissions are required to send this action.
* @hide
*/
+ @SystemApi
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
public static final String ACTION_REQUEST_DISABLE = "android.net.wifi.action.REQUEST_DISABLE";
@@ -1115,11 +1146,15 @@ public class WifiManager {
private static final int MAX_RSSI = -55;
/**
- * Number of RSSI levels used in the framework to initiate
- * {@link #RSSI_CHANGED_ACTION} broadcast
+ * Number of RSSI levels used in the framework to initiate {@link #RSSI_CHANGED_ACTION}
+ * broadcast, where each level corresponds to a range of RSSI values.
+ * The {@link #RSSI_CHANGED_ACTION} broadcast will only fire if the RSSI
+ * change is significant enough to change the RSSI signal level.
* @hide
*/
@UnsupportedAppUsage
+ // TODO(b/140781184): need to support custom number of RSSI levels, as well as levels that are
+ // not evenly spaced
public static final int RSSI_LEVELS = 5;
/**
@@ -1147,7 +1182,8 @@ public class WifiManager {
/** @hide */
public static final boolean DEFAULT_POOR_NETWORK_AVOIDANCE_ENABLED = false;
- /* Maximum number of active locks we allow.
+ /**
+ * Maximum number of active locks we allow.
* This limit was added to prevent apps from creating a ridiculous number
* of locks and crashing the system by overflowing the global ref table.
*/
@@ -1487,40 +1523,43 @@ public class WifiManager {
* {@link #reject()} to return the user's selection back to the platform via this callback.
* @hide
*/
+ @SystemApi
public interface NetworkRequestUserSelectionCallback {
/**
* User selected this network to connect to.
* @param wifiConfiguration WifiConfiguration object corresponding to the network
* user selected.
*/
- void select(@NonNull WifiConfiguration wifiConfiguration);
+ default void select(@NonNull WifiConfiguration wifiConfiguration) {}
/**
* User rejected the app's request.
*/
- void reject();
+ default void reject() {}
}
/**
* Interface for network request callback. Should be implemented by applications and passed when
- * calling {@link #registerNetworkRequestMatchCallback(NetworkRequestMatchCallback, Handler)}.
+ * calling {@link #registerNetworkRequestMatchCallback(Executor,
+ * WifiManager.NetworkRequestMatchCallback)}.
*
* This is meant to be implemented by a UI component to present the user with a list of networks
* matching the app's request. The user is allowed to pick one of these networks to connect to
* or reject the request by the app.
* @hide
*/
+ @SystemApi
public interface NetworkRequestMatchCallback {
/**
* Invoked to register a callback to be invoked to convey user selection. The callback
- * object paased in this method is to be invoked by the UI component after the service sends
+ * object passed in this method is to be invoked by the UI component after the service sends
* a list of matching scan networks using {@link #onMatch(List)} and user picks a network
* from that list.
*
* @param userSelectionCallback Callback object to send back the user selection.
*/
- void onUserSelectionCallbackRegistration(
- @NonNull NetworkRequestUserSelectionCallback userSelectionCallback);
+ default void onUserSelectionCallbackRegistration(
+ @NonNull NetworkRequestUserSelectionCallback userSelectionCallback) {}
/**
* Invoked when the active network request is aborted, either because
@@ -1529,7 +1568,7 @@ public class WifiManager {
* This signals the end of processing for the current request and should stop the UI
* component. No subsequent calls from the UI component will be handled by the platform.
*/
- void onAbort();
+ default void onAbort() {}
/**
* Invoked when a network request initiated by an app matches some networks in scan results.
@@ -1539,7 +1578,7 @@ public class WifiManager {
* @param scanResults List of {@link ScanResult} objects corresponding to the networks
* matching the request.
*/
- void onMatch(@NonNull List<ScanResult> scanResults);
+ default void onMatch(@NonNull List<ScanResult> scanResults) {}
/**
* Invoked on a successful connection with the network that the user selected
@@ -1548,7 +1587,7 @@ public class WifiManager {
* @param wifiConfiguration WifiConfiguration object corresponding to the network that the
* user selected.
*/
- void onUserSelectionConnectSuccess(@NonNull WifiConfiguration wifiConfiguration);
+ default void onUserSelectionConnectSuccess(@NonNull WifiConfiguration wifiConfiguration) {}
/**
* Invoked on failure to establish connection with the network that the user selected
@@ -1557,7 +1596,7 @@ public class WifiManager {
* @param wifiConfiguration WifiConfiguration object corresponding to the network
* user selected.
*/
- void onUserSelectionConnectFailure(@NonNull WifiConfiguration wifiConfiguration);
+ default void onUserSelectionConnectFailure(@NonNull WifiConfiguration wifiConfiguration) {}
}
/**
@@ -1606,11 +1645,11 @@ public class WifiManager {
* @hide
*/
private class NetworkRequestMatchCallbackProxy extends INetworkRequestMatchCallback.Stub {
- private final Handler mHandler;
+ private final Executor mExecutor;
private final NetworkRequestMatchCallback mCallback;
- NetworkRequestMatchCallbackProxy(Looper looper, NetworkRequestMatchCallback callback) {
- mHandler = new Handler(looper);
+ NetworkRequestMatchCallbackProxy(Executor executor, NetworkRequestMatchCallback callback) {
+ mExecutor = executor;
mCallback = callback;
}
@@ -1621,7 +1660,8 @@ public class WifiManager {
Log.v(TAG, "NetworkRequestMatchCallbackProxy: "
+ "onUserSelectionCallbackRegistration callback: " + userSelectionCallback);
}
- mHandler.post(() -> {
+ Binder.clearCallingIdentity();
+ mExecutor.execute(() -> {
mCallback.onUserSelectionCallbackRegistration(
new NetworkRequestUserSelectionCallbackProxy(userSelectionCallback));
});
@@ -1632,7 +1672,8 @@ public class WifiManager {
if (mVerboseLoggingEnabled) {
Log.v(TAG, "NetworkRequestMatchCallbackProxy: onAbort");
}
- mHandler.post(() -> {
+ Binder.clearCallingIdentity();
+ mExecutor.execute(() -> {
mCallback.onAbort();
});
}
@@ -1643,7 +1684,8 @@ public class WifiManager {
Log.v(TAG, "NetworkRequestMatchCallbackProxy: onMatch scanResults: "
+ scanResults);
}
- mHandler.post(() -> {
+ Binder.clearCallingIdentity();
+ mExecutor.execute(() -> {
mCallback.onMatch(scanResults);
});
}
@@ -1654,7 +1696,8 @@ public class WifiManager {
Log.v(TAG, "NetworkRequestMatchCallbackProxy: onUserSelectionConnectSuccess "
+ " wificonfiguration: " + wifiConfiguration);
}
- mHandler.post(() -> {
+ Binder.clearCallingIdentity();
+ mExecutor.execute(() -> {
mCallback.onUserSelectionConnectSuccess(wifiConfiguration);
});
}
@@ -1665,13 +1708,26 @@ public class WifiManager {
Log.v(TAG, "NetworkRequestMatchCallbackProxy: onUserSelectionConnectFailure"
+ " wificonfiguration: " + wifiConfiguration);
}
- mHandler.post(() -> {
+ Binder.clearCallingIdentity();
+ mExecutor.execute(() -> {
mCallback.onUserSelectionConnectFailure(wifiConfiguration);
});
}
}
/**
+ * Same as {@link #registerNetworkRequestMatchCallback(Executor, NetworkRequestMatchCallback)},
+ * except that the callback will be executed on the application's main thread.
+ * @param callback Callback for network match events to register.
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
+ public void registerNetworkRequestMatchCallback(@NonNull NetworkRequestMatchCallback callback) {
+ registerNetworkRequestMatchCallback(mContext.getMainExecutor(), callback);
+ }
+
+ /**
* Registers a callback for NetworkRequest matches. See {@link NetworkRequestMatchCallback}.
* Caller can unregister a previously registered callback using
* {@link #unregisterNetworkRequestMatchCallback(NetworkRequestMatchCallback)}
@@ -1681,19 +1737,20 @@ public class WifiManager {
* without the permission will trigger a {@link java.lang.SecurityException}.
* <p>
*
- * @param callback Callback for network match events
- * @param handler The Handler on whose thread to execute the callbacks of the {@code callback}
- * object. If null, then the application's main thread will be used.
+ * @param executor The Executor on whose thread to execute the callbacks of the {@code callback}
+ * object.
+ * @param callback Callback for network match events to register.
* @hide
*/
+ @SystemApi
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
- public void registerNetworkRequestMatchCallback(@NonNull NetworkRequestMatchCallback callback,
- @Nullable Handler handler) {
+ public void registerNetworkRequestMatchCallback(@NonNull @CallbackExecutor Executor executor,
+ @NonNull NetworkRequestMatchCallback callback) {
+ if (executor == null) throw new IllegalArgumentException("executor cannot be null");
if (callback == null) throw new IllegalArgumentException("callback cannot be null");
Log.v(TAG, "registerNetworkRequestMatchCallback: callback=" + callback
- + ", handler=" + handler);
+ + ", executor=" + executor);
- Looper looper = (handler == null) ? mContext.getMainLooper() : handler.getLooper();
Binder binder = new Binder();
try {
IWifiManager iWifiManager = getIWifiManager();
@@ -1701,7 +1758,7 @@ public class WifiManager {
throw new RemoteException("Wifi service is not running");
}
iWifiManager.registerNetworkRequestMatchCallback(
- binder, new NetworkRequestMatchCallbackProxy(looper, callback),
+ binder, new NetworkRequestMatchCallbackProxy(executor, callback),
callback.hashCode());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -1716,9 +1773,10 @@ public class WifiManager {
* without the permission will trigger a {@link java.lang.SecurityException}.
* <p>
*
- * @param callback Callback for network match events
+ * @param callback Callback for network match events to unregister.
* @hide
*/
+ @SystemApi
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public void unregisterNetworkRequestMatchCallback(
@NonNull NetworkRequestMatchCallback callback) {
@@ -2561,29 +2619,30 @@ public class WifiManager {
}
/**
- * get the country code.
- * @return the country code in ISO 3166 format.
- *
- * @hide
- */
- @UnsupportedAppUsage
+ * Get the country code.
+ * @return the country code in ISO 3166 format, or null if there is no country code configured.
+ * @hide
+ */
+ @Nullable
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL)
public String getCountryCode() {
try {
IWifiManager iWifiManager = getIWifiManager();
if (iWifiManager == null) return null;
- String country = iWifiManager.getCountryCode();
- return country;
+ return iWifiManager.getCountryCode();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
/**
- * Check if the chipset supports dual frequency band (2.4 GHz and 5 GHz)
+ * Check if the chipset supports dual frequency band (2.4 GHz and 5 GHz).
+ * No permissions are required to call this method.
* @return {@code true} if supported, {@code false} otherwise.
* @hide
*/
- @UnsupportedAppUsage
+ @SystemApi
public boolean isDualBandSupported() {
try {
IWifiManager iWifiManager = getIWifiManager();
@@ -2595,10 +2654,20 @@ public class WifiManager {
}
/**
- * Check if the chipset requires conversion of 5GHz Only apBand to ANY.
- * @return {@code true} if required, {@code false} otherwise.
+ * Check if the device is dual mode capable i.e. supports concurrent STA + Soft AP.
+ *
+ * If the device is dual mode capable, it may require conversion of the user's Soft AP band
+ * selection {@link WifiConfiguration#apBand} from {@link WifiConfiguration#AP_BAND_5GHZ} to
+ * {@link WifiConfiguration#AP_BAND_ANY}, since if the device is connected to a 5GHz DFS
+ * channel as a STA, it may be unable to honor a request to start Soft AP on the same DFS
+ * channel.
+ *
+ * @return {@code true} if dual mode STA + AP is supported by this device, {@code false}
+ * otherwise.
* @hide
*/
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public boolean isDualModeSupported() {
try {
IWifiManager iWifiManager = getIWifiManager();
@@ -2685,6 +2754,7 @@ public class WifiManager {
*
* @hide for CTS test only
*/
+ // TODO(b/144036594): add @TestApi
public void getTxPacketCount(@NonNull TxPacketCountListener listener) {
if (listener == null) throw new IllegalArgumentException("listener cannot be null");
Binder binder = new Binder();
@@ -3134,10 +3204,12 @@ public class WifiManager {
}
/**
- * Method that triggers a notification to the user about a conversion to their saved AP config.
+ * Method that triggers a notification to the user about a band conversion
+ * (e.g. 5 GHz to 2.4 GHz) to their saved AP config.
*
* @hide
*/
+ // TODO(b/144218444): move the notification to Settings instead of making this @SystemApi
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public void notifyUserOfApBandConversion() {
Log.d(TAG, "apBand was converted, notify the user");
@@ -3371,22 +3443,21 @@ public class WifiManager {
/**
* Called when soft AP state changes.
*
- * @param state new new AP state. One of {@link #WIFI_AP_STATE_DISABLED},
+ * @param state the new AP state. One of {@link #WIFI_AP_STATE_DISABLED},
* {@link #WIFI_AP_STATE_DISABLING}, {@link #WIFI_AP_STATE_ENABLED},
* {@link #WIFI_AP_STATE_ENABLING}, {@link #WIFI_AP_STATE_FAILED}
* @param failureReason reason when in failed state. One of
* {@link #SAP_START_FAILURE_GENERAL},
* {@link #SAP_START_FAILURE_NO_CHANNEL}
*/
- void onStateChanged(@WifiApState int state,
- @SapStartFailure int failureReason);
+ default void onStateChanged(@WifiApState int state, @SapStartFailure int failureReason) {}
/**
* Called when the connected clients to soft AP changes.
*
* @param clients the currently connected clients
*/
- void onConnectedClientsChanged(@NonNull List<WifiClient> clients);
+ default void onConnectedClientsChanged(@NonNull List<WifiClient> clients) {}
/**
* Called when information of softap changes.
@@ -3452,31 +3523,42 @@ public class WifiManager {
}
/**
+ * Same as {@link #registerSoftApCallback(Executor, SoftApCallback)},
+ * except that the callback will be executed on the application's main thread.
+ * @param callback Callback for soft AP events
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
+ public void registerSoftApCallback(@NonNull SoftApCallback callback) {
+ registerSoftApCallback(mContext.getMainExecutor(), callback);
+ }
+
+ /**
* Registers a callback for Soft AP. See {@link SoftApCallback}. Caller will receive the current
* soft AP state and number of connected devices immediately after a successful call to this API
* via callback. Note that receiving an immediate WIFI_AP_STATE_FAILED value for soft AP state
* indicates that the latest attempt to start soft AP has failed. Caller can unregister a
- * previously registered callback using {@link unregisterSoftApCallback}
+ * previously registered callback using {@link #unregisterSoftApCallback}
* <p>
* Applications should have the
* {@link android.Manifest.permission#NETWORK_SETTINGS NETWORK_SETTINGS} permission. Callers
* without the permission will trigger a {@link java.lang.SecurityException}.
* <p>
*
- * @param executor The executor to execute the callbacks of the {@code executor}
- * object. If null, then the application's main executor will be used.
+ * @param executor The Executor on whose thread to execute the callbacks of the {@code callback}
+ * object.
* @param callback Callback for soft AP events
- *
* @hide
*/
@SystemApi
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
- public void registerSoftApCallback(@Nullable @CallbackExecutor Executor executor,
- @NonNull SoftApCallback callback) {
+ public void registerSoftApCallback(@NonNull @CallbackExecutor Executor executor,
+ @NonNull SoftApCallback callback) {
+ if (executor == null) throw new IllegalArgumentException("executor cannot be null");
if (callback == null) throw new IllegalArgumentException("callback cannot be null");
Log.v(TAG, "registerSoftApCallback: callback=" + callback + ", executor=" + executor);
- executor = (executor == null) ? mContext.getMainExecutor() : executor;
Binder binder = new Binder();
try {
IWifiManager iWifiManager = getIWifiManager();
@@ -3498,6 +3580,7 @@ public class WifiManager {
*
* @hide
*/
+ @SystemApi
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public void unregisterSoftApCallback(@NonNull SoftApCallback callback) {
if (callback == null) throw new IllegalArgumentException("callback cannot be null");
@@ -4042,23 +4125,27 @@ public class WifiManager {
}
/**
- * Disable ephemeral Network
+ * Disable an ephemeral network.
+ *
+ * @param ssid in the format of WifiConfiguration's SSID.
*
- * @param SSID, in the format of WifiConfiguration's SSID.
* @hide
*/
+ @SystemApi
@RequiresPermission(anyOf = {
android.Manifest.permission.NETWORK_SETTINGS,
android.Manifest.permission.NETWORK_STACK
})
- public void disableEphemeralNetwork(String SSID) {
- if (TextUtils.isEmpty(SSID)) throw new IllegalArgumentException("SSID cannot be null");
+ public void disableEphemeralNetwork(@NonNull String ssid) {
+ if (TextUtils.isEmpty(ssid)) {
+ throw new IllegalArgumentException("SSID cannot be null or empty!");
+ }
try {
IWifiManager iWifiManager = getIWifiManager();
if (iWifiManager == null) {
throw new RemoteException("Wifi service is not running");
}
- iWifiManager.disableEphemeralNetwork(SSID, mContext.getOpPackageName());
+ iWifiManager.disableEphemeralNetwork(ssid, mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -4554,11 +4641,15 @@ public class WifiManager {
}
/**
- * Set wifi verbose log. Called from developer settings.
+ * Set Wi-Fi verbose logging level from developer settings.
+ *
+ * @param verbose the verbose logging level to set. 0 will disable verbose logging, a positive
+ * integer will enable verbose logging.
+ *
* @hide
*/
+ @SystemApi
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
- @UnsupportedAppUsage
public void enableVerboseLogging (int verbose) {
try {
IWifiManager iWifiManager = getIWifiManager();
@@ -4574,11 +4665,15 @@ public class WifiManager {
}
/**
- * Get the WiFi verbose logging level.This is used by settings
- * to decide what to show within the picker.
+ * Get the persisted WiFi verbose logging level, set by {@link #enableVerboseLogging(int)}.
+ * No permissions are required to call this method.
+ *
+ * @return 0 to indicate that verbose logging is disabled, a positive integer to indicate that
+ * verbose logging is enabled.
+ *
* @hide
*/
- @UnsupportedAppUsage
+ @SystemApi
public int getVerboseLoggingLevel() {
try {
IWifiManager iWifiManager = getIWifiManager();
@@ -4590,10 +4685,13 @@ public class WifiManager {
}
/**
- * Removes all saved wifi networks.
+ * Removes all saved Wi-Fi networks, Passpoint configurations, ephemeral networks, Network
+ * Requests, and Network Suggestions.
*
* @hide
*/
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL)
public void factoryReset() {
try {
IWifiManager iWifiManager = getIWifiManager();
@@ -4607,11 +4705,12 @@ public class WifiManager {
}
/**
- * Get Network object of current wifi network
- * @return Get Network object of current wifi network
+ * Get {@link Network} object of current wifi network, or null if not connected.
* @hide
*/
- @UnsupportedAppUsage
+ @Nullable
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE)
public Network getCurrentNetwork() {
try {
IWifiManager iWifiManager = getIWifiManager();
@@ -4660,13 +4759,18 @@ public class WifiManager {
}
/**
- * Retrieve the data to be backed to save the current state.
+ * Returns a byte stream representing the data that needs to be backed up to save the
+ * current Wifi state.
+ * This Wifi state can be restored by calling {@link #restoreBackupData(byte[])}.
* @hide
*/
+ @NonNull
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public byte[] retrieveBackupData() {
try {
IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return null;
+ if (iWifiManager == null) return new byte[0];
return iWifiManager.retrieveBackupData();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -4675,9 +4779,12 @@ public class WifiManager {
/**
* Restore state from the backed up data.
+ * @param data byte stream in the same format produced by {@link #retrieveBackupData()}
* @hide
*/
- public void restoreBackupData(byte[] data) {
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
+ public void restoreBackupData(@NonNull byte[] data) {
try {
IWifiManager iWifiManager = getIWifiManager();
if (iWifiManager == null) {
@@ -4694,11 +4801,16 @@ public class WifiManager {
* Restore state from the older version of back up data.
* The old backup data was essentially a backup of wpa_supplicant.conf
* and ipconfig.txt file.
+ * @param supplicantData bytes representing wpa_supplicant.conf
+ * @param ipConfigData bytes representing ipconfig.txt
* @deprecated this is no longer supported.
* @hide
*/
@Deprecated
- public void restoreSupplicantBackupData(byte[] supplicantData, byte[] ipConfigData) {
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
+ public void restoreSupplicantBackupData(
+ @NonNull byte[] supplicantData, @NonNull byte[] ipConfigData) {
try {
IWifiManager iWifiManager = getIWifiManager();
if (iWifiManager == null) {
@@ -4774,22 +4886,29 @@ public class WifiManager {
}
/**
- * Base class for Traffic state callback. Should be extended by applications and set when
- * calling {@link WifiManager#registerTrafficStateCallback(TrafficStateCallback, Handler)}.
+ * Interface for Traffic state callback. Should be extended by applications and set when
+ * calling {@link #registerTrafficStateCallback(Executor, WifiManager.TrafficStateCallback)}.
* @hide
*/
+ @SystemApi
public interface TrafficStateCallback {
- /**
- * Lowest bit indicates data reception and the second lowest
- * bit indicates data transmitted
- */
/** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = {"DATA_ACTIVITY_"}, value = {
+ DATA_ACTIVITY_NONE,
+ DATA_ACTIVITY_IN,
+ DATA_ACTIVITY_OUT,
+ DATA_ACTIVITY_INOUT})
+ @interface DataActivity {}
+
+ // Lowest bit indicates data reception and the second lowest bit indicates data transmitted
+ /** No data in or out */
int DATA_ACTIVITY_NONE = 0x00;
- /** @hide */
+ /** Data in, no data out */
int DATA_ACTIVITY_IN = 0x01;
- /** @hide */
+ /** Data out, no data in */
int DATA_ACTIVITY_OUT = 0x02;
- /** @hide */
+ /** Data in and out */
int DATA_ACTIVITY_INOUT = 0x03;
/**
@@ -4797,9 +4916,8 @@ public class WifiManager {
*
* @param state One of the values: {@link #DATA_ACTIVITY_NONE}, {@link #DATA_ACTIVITY_IN},
* {@link #DATA_ACTIVITY_OUT} & {@link #DATA_ACTIVITY_INOUT}.
- * @hide
*/
- void onStateChanged(int state);
+ void onStateChanged(@DataActivity int state);
}
/**
@@ -4808,11 +4926,11 @@ public class WifiManager {
* @hide
*/
private class TrafficStateCallbackProxy extends ITrafficStateCallback.Stub {
- private final Handler mHandler;
+ private final Executor mExecutor;
private final TrafficStateCallback mCallback;
- TrafficStateCallbackProxy(Looper looper, TrafficStateCallback callback) {
- mHandler = new Handler(looper);
+ TrafficStateCallbackProxy(Executor executor, TrafficStateCallback callback) {
+ mExecutor = executor;
mCallback = callback;
}
@@ -4821,13 +4939,26 @@ public class WifiManager {
if (mVerboseLoggingEnabled) {
Log.v(TAG, "TrafficStateCallbackProxy: onStateChanged state=" + state);
}
- mHandler.post(() -> {
+ Binder.clearCallingIdentity();
+ mExecutor.execute(() -> {
mCallback.onStateChanged(state);
});
}
}
/**
+ * Same as {@link #registerTrafficStateCallback(Executor, TrafficStateCallback)},
+ * except that the callback will be executed on the application's main thread.
+ * @param callback Callback for traffic state events
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
+ public void registerTrafficStateCallback(@NonNull TrafficStateCallback callback) {
+ registerTrafficStateCallback(mContext.getMainExecutor(), callback);
+ }
+
+ /**
* Registers a callback for monitoring traffic state. See {@link TrafficStateCallback}. These
* callbacks will be invoked periodically by platform to inform clients about the current
* traffic state. Caller can unregister a previously registered callback using
@@ -4838,18 +4969,19 @@ public class WifiManager {
* without the permission will trigger a {@link java.lang.SecurityException}.
* <p>
*
+ * @param executor The Executor on whose thread to execute the callbacks of the {@code callback}
+ * object.
* @param callback Callback for traffic state events
- * @param handler The Handler on whose thread to execute the callbacks of the {@code callback}
- * object. If null, then the application's main thread will be used.
* @hide
*/
+ @SystemApi
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
- public void registerTrafficStateCallback(@NonNull TrafficStateCallback callback,
- @Nullable Handler handler) {
+ public void registerTrafficStateCallback(@NonNull @CallbackExecutor Executor executor,
+ @NonNull TrafficStateCallback callback) {
+ if (executor == null) throw new IllegalArgumentException("executor cannot be null");
if (callback == null) throw new IllegalArgumentException("callback cannot be null");
- Log.v(TAG, "registerTrafficStateCallback: callback=" + callback + ", handler=" + handler);
+ Log.v(TAG, "registerTrafficStateCallback: callback=" + callback + ", executor=" + executor);
- Looper looper = (handler == null) ? mContext.getMainLooper() : handler.getLooper();
Binder binder = new Binder();
try {
IWifiManager iWifiManager = getIWifiManager();
@@ -4857,7 +4989,7 @@ public class WifiManager {
throw new RemoteException("Wifi service is not running");
}
iWifiManager.registerTrafficStateCallback(
- binder, new TrafficStateCallbackProxy(looper, callback), callback.hashCode());
+ binder, new TrafficStateCallbackProxy(executor, callback), callback.hashCode());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -4870,6 +5002,7 @@ public class WifiManager {
* @param callback Callback to unregister for traffic state events
* @hide
*/
+ @SystemApi
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public void unregisterTrafficStateCallback(@NonNull TrafficStateCallback callback) {
if (callback == null) throw new IllegalArgumentException("callback cannot be null");
@@ -4933,11 +5066,13 @@ public class WifiManager {
* if failed.
* @hide
*/
+ @NonNull
+ @SystemApi
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public String[] getFactoryMacAddresses() {
try {
IWifiManager iWifiManager = getIWifiManager();
- if (iWifiManager == null) return null;
+ if (iWifiManager == null) return new String[0];
return iWifiManager.getFactoryMacAddresses();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
diff --git a/wifi/java/android/net/wifi/WifiScanner.java b/wifi/java/android/net/wifi/WifiScanner.java
index 7e14451332fb..0d36718f07f1 100644
--- a/wifi/java/android/net/wifi/WifiScanner.java
+++ b/wifi/java/android/net/wifi/WifiScanner.java
@@ -960,6 +960,9 @@ public class WifiScanner {
* Retrieve the most recent scan results from a single scan request.
* {@hide}
*/
+ @NonNull
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE)
public List<ScanResult> getSingleScanResults() {
validateChannel();
Bundle scanParams = new Bundle();
@@ -973,7 +976,7 @@ public class WifiScanner {
OperationResult result = (OperationResult) reply.obj;
Log.e(TAG, "Error retrieving SingleScan results reason: " + result.reason
+ " description: " + result.description);
- return new ArrayList<ScanResult>();
+ return new ArrayList<>();
}
private void startPnoScan(ScanSettings scanSettings, PnoSettings pnoSettings, int key) {
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pConfig.java b/wifi/java/android/net/wifi/p2p/WifiP2pConfig.java
index c3cfb0266328..767055fe6e29 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pConfig.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pConfig.java
@@ -66,12 +66,6 @@ public class WifiP2pConfig implements Parcelable {
public int groupOwnerBand = GROUP_OWNER_BAND_AUTO;
/** @hide */
- public static final int MAX_GROUP_OWNER_INTENT = 15;
- /** @hide */
- @UnsupportedAppUsage
- public static final int MIN_GROUP_OWNER_INTENT = 0;
-
- /** @hide */
@IntDef(flag = false, prefix = { "GROUP_OWNER_BAND_" }, value = {
GROUP_OWNER_BAND_AUTO,
GROUP_OWNER_BAND_2GHZ,
@@ -94,13 +88,35 @@ public class WifiP2pConfig implements Parcelable {
public static final int GROUP_OWNER_BAND_5GHZ = 2;
/**
- * This is an integer value between 0 and 15 where 0 indicates the least
- * inclination to be a group owner and 15 indicates the highest inclination
- * to be a group owner.
+ * The least inclination to be a group owner, to be filled in the field
+ * {@link #groupOwnerIntent}.
+ */
+ public static final int GROUP_OWNER_INTENT_MIN = 0;
+
+ /**
+ * The most inclination to be a group owner, to be filled in the field
+ * {@link #groupOwnerIntent}.
+ */
+ public static final int GROUP_OWNER_INTENT_MAX = 15;
+
+ /**
+ * The system can choose an appropriate owner intent value, to be filled in the field
+ * {@link #groupOwnerIntent}.
+ */
+ public static final int GROUP_OWNER_INTENT_AUTO = -1;
+
+ /**
+ * This is an integer value between {@link #GROUP_OWNER_INTENT_MIN} and
+ * {@link #GROUP_OWNER_INTENT_MAX} where
+ * {@link #GROUP_OWNER_INTENT_MIN} indicates the least inclination to be a group owner and
+ * {@link #GROUP_OWNER_INTENT_MAX} indicates the highest inclination to be a group owner.
+ *
+ * A value of {@link #GROUP_OWNER_INTENT_AUTO} indicates the system can choose an appropriate
+ * value.
*
- * A value of -1 indicates the system can choose an appropriate value.
+ * By default this field is set to {@link #GROUP_OWNER_INTENT_AUTO}.
*/
- public int groupOwnerIntent = -1;
+ public int groupOwnerIntent = GROUP_OWNER_INTENT_AUTO;
/** @hide */
@UnsupportedAppUsage
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java b/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java
index c5318a9e275a..13b25209990e 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java
@@ -16,6 +16,8 @@
package android.net.wifi.p2p;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
@@ -237,6 +239,12 @@ public class WifiP2pDevice implements Parcelable {
}
}
+ /** The Wifi Display information for this device, or null if unavailable. */
+ @Nullable
+ public WifiP2pWfdInfo getWfdInfo() {
+ return wfdInfo;
+ }
+
/** Returns true if WPS push button configuration is supported */
public boolean wpsPbcSupported() {
return (wpsConfigMethodsSupported & WPS_CONFIG_PUSHBUTTON) != 0;
@@ -278,14 +286,15 @@ public class WifiP2pDevice implements Parcelable {
}
/**
- * Update device details. This will be throw an exception if the device address
- * does not match.
+ * Update device details. This will throw an exception if the device address does not match.
+ *
* @param device to be updated
- * @throws IllegalArgumentException if the device is null or device address does not match
+ * @throws IllegalArgumentException if the device is null or the device address does not match
+ *
* @hide
*/
@UnsupportedAppUsage
- public void update(WifiP2pDevice device) {
+ public void update(@NonNull WifiP2pDevice device) {
updateSupplicantDetails(device);
status = device.status;
}
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pGroup.java b/wifi/java/android/net/wifi/p2p/WifiP2pGroup.java
index 4866bd4b2ce9..f9d1266cf804 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pGroup.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pGroup.java
@@ -16,6 +16,7 @@
package android.net.wifi.p2p;
+import android.annotation.Nullable;
import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
@@ -36,15 +37,21 @@ import java.util.regex.Pattern;
*/
public class WifiP2pGroup implements Parcelable {
- /** The temporary network id.
- * {@hide} */
+ /**
+ * The temporary network id.
+ *
+ * @hide
+ */
@UnsupportedAppUsage
public static final int TEMPORARY_NET_ID = -1;
- /** The persistent network id.
+ /**
+ * The persistent network id.
* If a matching persistent profile is found, use it.
* Otherwise, create a new persistent profile.
- * {@hide} */
+ *
+ * @hide
+ */
public static final int PERSISTENT_NET_ID = -2;
/** The network name */
@@ -64,7 +71,7 @@ public class WifiP2pGroup implements Parcelable {
private String mInterface;
- /** The network id in the wpa_supplicant */
+ /** The network ID in wpa_supplicant */
private int mNetId;
/** The frequency (in MHz) used by this group */
@@ -225,10 +232,13 @@ public class WifiP2pGroup implements Parcelable {
return mClients.size() == 0;
}
- /** @hide Returns {@code true} if the device is part of the group */
- public boolean contains(WifiP2pDevice device) {
- if (mOwner.equals(device) || mClients.contains(device)) return true;
- return false;
+ /**
+ * Returns {@code true} if the device is part of the group, {@code false} otherwise.
+ *
+ * @hide
+ */
+ public boolean contains(@Nullable WifiP2pDevice device) {
+ return mOwner.equals(device) || mClients.contains(device);
}
/** Get the list of clients currently part of the p2p group */
@@ -261,8 +271,7 @@ public class WifiP2pGroup implements Parcelable {
return mInterface;
}
- /** @hide */
- @UnsupportedAppUsage
+ /** The network ID of the P2P group in wpa_supplicant. */
public int getNetworkId() {
return mNetId;
}
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pGroupList.java b/wifi/java/android/net/wifi/p2p/WifiP2pGroupList.java
index 62524d9c2bd6..10fd09aa638f 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pGroupList.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pGroupList.java
@@ -15,14 +15,16 @@
*/
package android.net.wifi.p2p;
-import java.util.Collection;
-import java.util.Map;
-
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.LruCache;
+import java.util.Collection;
+import java.util.Map;
+
/**
* A class representing a Wi-Fi P2p group list
@@ -30,7 +32,8 @@ import android.util.LruCache;
* {@see WifiP2pManager}
* @hide
*/
-public class WifiP2pGroupList implements Parcelable {
+@SystemApi
+public final class WifiP2pGroupList implements Parcelable {
private static final int CREDENTIAL_MAX_NUM = 32;
@@ -40,6 +43,7 @@ public class WifiP2pGroupList implements Parcelable {
private boolean isClearCalled = false;
+ /** @hide */
public interface GroupDeleteListener {
public void onDeleteGroup(int netId);
}
@@ -71,11 +75,9 @@ public class WifiP2pGroupList implements Parcelable {
}
/**
- * Return the list of p2p group.
- *
- * @return the list of p2p group.
+ * Get the list of P2P groups.
*/
- @UnsupportedAppUsage
+ @NonNull
public Collection<WifiP2pGroup> getGroupList() {
return mGroups.snapshot().values();
}
@@ -206,6 +208,7 @@ public class WifiP2pGroupList implements Parcelable {
return false;
}
+ @Override
public String toString() {
StringBuffer sbuf = new StringBuffer();
@@ -217,12 +220,14 @@ public class WifiP2pGroupList implements Parcelable {
}
/** Implement the Parcelable interface */
+ @Override
public int describeContents() {
return 0;
}
/** Implement the Parcelable interface */
- public void writeToParcel(Parcel dest, int flags) {
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
final Collection<WifiP2pGroup> groups = mGroups.snapshot().values();
dest.writeInt(groups.size());
for(WifiP2pGroup group : groups) {
@@ -231,7 +236,7 @@ public class WifiP2pGroupList implements Parcelable {
}
/** Implement the Parcelable interface */
- public static final @android.annotation.NonNull Creator<WifiP2pGroupList> CREATOR =
+ public static final @NonNull Creator<WifiP2pGroupList> CREATOR =
new Creator<WifiP2pGroupList>() {
public WifiP2pGroupList createFromParcel(Parcel in) {
WifiP2pGroupList grpList = new WifiP2pGroupList();
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pManager.java b/wifi/java/android/net/wifi/p2p/WifiP2pManager.java
index 3178519a6739..1c2067980a79 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pManager.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pManager.java
@@ -22,6 +22,7 @@ import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
+import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.UnsupportedAppUsage;
import android.content.Context;
@@ -327,8 +328,9 @@ public class WifiP2pManager {
* Broadcast intent action indicating that remembered persistent groups have changed.
* @hide
*/
- public static final String WIFI_P2P_PERSISTENT_GROUPS_CHANGED_ACTION =
- "android.net.wifi.p2p.PERSISTENT_GROUPS_CHANGED";
+ @SystemApi
+ public static final String ACTION_WIFI_P2P_PERSISTENT_GROUPS_CHANGED =
+ "android.net.wifi.p2p.action.WIFI_P2P_PERSISTENT_GROUPS_CHANGED";
/**
* The lookup key for a handover message returned by the WifiP2pService.
@@ -756,13 +758,18 @@ public class WifiP2pManager {
}
- /** Interface for callback invocation when stored group info list is available {@hide}*/
+ /**
+ * Interface for callback invocation when stored group info list is available
+ *
+ * @hide
+ */
+ @SystemApi
public interface PersistentGroupInfoListener {
/**
* The requested stored p2p group info list is available
* @param groups Wi-Fi p2p group info list
*/
- public void onPersistentGroupInfoAvailable(WifiP2pGroupList groups);
+ void onPersistentGroupInfoAvailable(@NonNull WifiP2pGroupList groups);
}
/**
@@ -1202,7 +1209,7 @@ public class WifiP2pManager {
c.mAsyncChannel.sendMessage(DISCOVER_PEERS, 0, c.putListener(listener));
}
- /**
+ /**
* Stop an ongoing peer discovery
*
* <p> The function call immediately returns after sending a stop request
@@ -1347,20 +1354,36 @@ public class WifiP2pManager {
*
* @hide
*/
+ @SystemApi
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
- public void listen(Channel c, boolean enable, ActionListener listener) {
+ public void listen(@NonNull Channel c, boolean enable, @Nullable ActionListener listener) {
checkChannel(c);
c.mAsyncChannel.sendMessage(enable ? START_LISTEN : STOP_LISTEN,
0, c.putListener(listener));
}
- /** @hide */
- @UnsupportedAppUsage
- public void setWifiP2pChannels(Channel c, int lc, int oc, ActionListener listener) {
+ /**
+ * Set P2P listening and operating channel.
+ *
+ * @param c is the channel created at {@link #initialize}
+ * @param listeningChannel the listening channel's Wifi channel number. e.g. 1, 6, 11.
+ * @param operatingChannel the operating channel's Wifi channel number. e.g. 1, 6, 11.
+ * @param listener for callbacks on success or failure. Can be null.
+ *
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.NETWORK_SETTINGS,
+ android.Manifest.permission.NETWORK_STACK,
+ android.Manifest.permission.OVERRIDE_WIFI_CONFIG
+ })
+ public void setWifiP2pChannels(@NonNull Channel c, int listeningChannel, int operatingChannel,
+ @Nullable ActionListener listener) {
checkChannel(c);
Bundle p2pChannels = new Bundle();
- p2pChannels.putInt("lc", lc);
- p2pChannels.putInt("oc", oc);
+ p2pChannels.putInt("lc", listeningChannel);
+ p2pChannels.putInt("oc", operatingChannel);
c.mAsyncChannel.sendMessage(SET_CHANNEL, 0, c.putListener(listener), p2pChannels);
}
@@ -1618,23 +1641,47 @@ public class WifiP2pManager {
/**
* Set p2p device name.
- * @hide
+ *
* @param c is the channel created at {@link #initialize}
* @param listener for callback when group info is available. Can be null.
+ *
+ * @hide
*/
- @UnsupportedAppUsage
- public void setDeviceName(Channel c, String devName, ActionListener listener) {
+ @SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.NETWORK_SETTINGS,
+ android.Manifest.permission.NETWORK_STACK,
+ android.Manifest.permission.OVERRIDE_WIFI_CONFIG
+ })
+ public void setDeviceName(@NonNull Channel c, @NonNull String devName,
+ @Nullable ActionListener listener) {
checkChannel(c);
WifiP2pDevice d = new WifiP2pDevice();
d.deviceName = devName;
c.mAsyncChannel.sendMessage(SET_DEVICE_NAME, 0, c.putListener(listener), d);
}
+ /**
+ * Set Wifi Display information.
+ *
+ * @param c is the channel created at {@link #initialize}
+ * @param wfdInfo the Wifi Display information to set
+ * @param listener for callbacks on success or failure. Can be null.
+ *
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY)
+ public void setWfdInfo(@NonNull Channel c, @NonNull WifiP2pWfdInfo wfdInfo,
+ @Nullable ActionListener listener) {
+ setWFDInfo(c, wfdInfo, listener);
+ }
+
/** @hide */
@UnsupportedAppUsage
- public void setWFDInfo(
- Channel c, WifiP2pWfdInfo wfdInfo,
- ActionListener listener) {
+ @RequiresPermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY)
+ public void setWFDInfo(@NonNull Channel c, @NonNull WifiP2pWfdInfo wfdInfo,
+ @Nullable ActionListener listener) {
checkChannel(c);
try {
mService.checkConfigureWifiDisplayPermission();
@@ -1658,12 +1705,19 @@ public class WifiP2pManager {
* a network id can be obtained by {@link WifiP2pGroup#getNetworkId()}.
*
* @param c is the channel created at {@link #initialize}
- * @param netId he network id of the p2p group.
+ * @param netId the network id of the p2p group.
* @param listener for callbacks on success or failure. Can be null.
+ *
* @hide
*/
- @UnsupportedAppUsage
- public void deletePersistentGroup(Channel c, int netId, ActionListener listener) {
+ @SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.NETWORK_SETTINGS,
+ android.Manifest.permission.NETWORK_STACK,
+ android.Manifest.permission.OVERRIDE_WIFI_CONFIG
+ })
+ public void deletePersistentGroup(@NonNull Channel c, int netId,
+ @Nullable ActionListener listener) {
checkChannel(c);
c.mAsyncChannel.sendMessage(DELETE_PERSISTENT_GROUP, netId, c.putListener(listener));
}
@@ -1673,23 +1727,68 @@ public class WifiP2pManager {
*
* @param c is the channel created at {@link #initialize}
* @param listener for callback when persistent group info list is available. Can be null.
+ *
* @hide
*/
- @UnsupportedAppUsage
- public void requestPersistentGroupInfo(Channel c, PersistentGroupInfoListener listener) {
+ @SystemApi
+ @RequiresPermission(anyOf = {
+ android.Manifest.permission.NETWORK_SETTINGS,
+ android.Manifest.permission.NETWORK_STACK,
+ android.Manifest.permission.READ_WIFI_CREDENTIAL
+ })
+ public void requestPersistentGroupInfo(@NonNull Channel c,
+ @Nullable PersistentGroupInfoListener listener) {
checkChannel(c);
c.mAsyncChannel.sendMessage(REQUEST_PERSISTENT_GROUP_INFO, 0, c.putListener(listener));
}
/** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = {"MIRACAST_"}, value = {
+ MIRACAST_DISABLED,
+ MIRACAST_SOURCE,
+ MIRACAST_SINK})
+ public @interface MiracastMode {}
+
+ /**
+ * Miracast is disabled.
+ * @hide
+ */
+ @SystemApi
public static final int MIRACAST_DISABLED = 0;
- /** @hide */
+ /**
+ * Device acts as a Miracast source.
+ * @hide
+ */
+ @SystemApi
public static final int MIRACAST_SOURCE = 1;
- /** @hide */
+ /**
+ * Device acts as a Miracast sink.
+ * @hide
+ */
+ @SystemApi
public static final int MIRACAST_SINK = 2;
- /** Internal use only @hide */
- @UnsupportedAppUsage
- public void setMiracastMode(int mode) {
+
+ /**
+ * This is used to provide information to drivers to optimize performance depending
+ * on the current mode of operation.
+ * {@link #MIRACAST_DISABLED} - disabled
+ * {@link #MIRACAST_SOURCE} - source operation
+ * {@link #MIRACAST_SINK} - sink operation
+ *
+ * As an example, the driver could reduce the channel dwell time during scanning
+ * when acting as a source or sink to minimize impact on Miracast.
+ *
+ * @param mode mode of operation. One of {@link #MIRACAST_DISABLED}, {@link #MIRACAST_SOURCE},
+ * or {@link #MIRACAST_SINK}
+ *
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(allOf = {
+ android.Manifest.permission.CONNECTIVITY_INTERNAL,
+ android.Manifest.permission.CONFIGURE_WIFI_DISPLAY})
+ public void setMiracastMode(@MiracastMode int mode) {
try {
mService.setMiracastMode(mode);
} catch (RemoteException e) {
@@ -1778,8 +1877,10 @@ public class WifiP2pManager {
*
* @param c is the channel created at {@link #initialize}.
* @param listener for callback on success or failure. Can be null.
+ *
* @hide
*/
+ @SystemApi
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public void factoryReset(@NonNull Channel c, @Nullable ActionListener listener) {
checkChannel(c);
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java b/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java
index 3caa280ef62a..48b07032162b 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java
@@ -16,49 +16,68 @@
package android.net.wifi.p2p;
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.UnsupportedAppUsage;
-import android.os.Build;
-import android.os.Parcelable;
import android.os.Parcel;
+import android.os.Parcelable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.util.Locale;
/**
- * A class representing Wifi Display information for a device
- * @hide
+ * A class representing Wifi Display information for a device.
+ *
+ * See Wifi Display technical specification v1.0.0, section 5.1.2.
*/
-public class WifiP2pWfdInfo implements Parcelable {
-
- private static final String TAG = "WifiP2pWfdInfo";
+public final class WifiP2pWfdInfo implements Parcelable {
private boolean mWfdEnabled;
+ /** Device information bitmap */
private int mDeviceInfo;
- public static final int WFD_SOURCE = 0;
- public static final int PRIMARY_SINK = 1;
- public static final int SECONDARY_SINK = 2;
- public static final int SOURCE_OR_PRIMARY_SINK = 3;
-
- /* Device information bitmap */
- /** One of {@link #WFD_SOURCE}, {@link #PRIMARY_SINK}, {@link #SECONDARY_SINK}
- * or {@link #SOURCE_OR_PRIMARY_SINK}
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = { "DEVICE_TYPE_" }, value = {
+ DEVICE_TYPE_WFD_SOURCE,
+ DEVICE_TYPE_PRIMARY_SINK,
+ DEVICE_TYPE_SECONDARY_SINK,
+ DEVICE_TYPE_SOURCE_OR_PRIMARY_SINK})
+ public @interface DeviceType {}
+
+ /** The device is a Wifi Display Source. */
+ public static final int DEVICE_TYPE_WFD_SOURCE = 0;
+ /** The device is a primary sink. */
+ public static final int DEVICE_TYPE_PRIMARY_SINK = 1;
+ /** The device is a secondary sink. */
+ public static final int DEVICE_TYPE_SECONDARY_SINK = 2;
+ /** The device is dual-role capable i.e. either a WFD source or a primary sink. */
+ public static final int DEVICE_TYPE_SOURCE_OR_PRIMARY_SINK = 3;
+
+ /**
+ * {@link #mDeviceInfo} & {@link #DEVICE_TYPE} is one of {@link #DEVICE_TYPE_WFD_SOURCE},
+ * {@link #DEVICE_TYPE_PRIMARY_SINK}, {@link #DEVICE_TYPE_SECONDARY_SINK} or
+ * {@link #DEVICE_TYPE_SOURCE_OR_PRIMARY_SINK}.
*/
- private static final int DEVICE_TYPE = 0x3;
- private static final int COUPLED_SINK_SUPPORT_AT_SOURCE = 0x4;
- private static final int COUPLED_SINK_SUPPORT_AT_SINK = 0x8;
- private static final int SESSION_AVAILABLE = 0x30;
- private static final int SESSION_AVAILABLE_BIT1 = 0x10;
- private static final int SESSION_AVAILABLE_BIT2 = 0x20;
+ private static final int DEVICE_TYPE = 1 << 1 | 1 << 0;
+ private static final int COUPLED_SINK_SUPPORT_AT_SOURCE = 1 << 2;
+ private static final int COUPLED_SINK_SUPPORT_AT_SINK = 1 << 3;
+ private static final int SESSION_AVAILABLE_BIT1 = 1 << 4;
+ private static final int SESSION_AVAILABLE_BIT2 = 1 << 5;
+ private static final int SESSION_AVAILABLE =
+ SESSION_AVAILABLE_BIT2 | SESSION_AVAILABLE_BIT1;
private int mCtrlPort;
private int mMaxThroughput;
- @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
- public WifiP2pWfdInfo() {
- }
+ /** Default constructor. */
+ public WifiP2pWfdInfo() {}
+ /** @hide */
@UnsupportedAppUsage
public WifiP2pWfdInfo(int devInfo, int ctrlPort, int maxTput) {
mWfdEnabled = true;
@@ -67,24 +86,40 @@ public class WifiP2pWfdInfo implements Parcelable {
mMaxThroughput = maxTput;
}
- @UnsupportedAppUsage
+ /** Returns true is Wifi Display is enabled, false otherwise. */
public boolean isWfdEnabled() {
return mWfdEnabled;
}
- @UnsupportedAppUsage
+ /**
+ * Sets whether Wifi Display should be enabled.
+ *
+ * @param enabled true to enable Wifi Display, false to disable
+ */
public void setWfdEnabled(boolean enabled) {
mWfdEnabled = enabled;
}
- @UnsupportedAppUsage
+ /**
+ * Get the type of the device.
+ * One of {@link #DEVICE_TYPE_WFD_SOURCE}, {@link #DEVICE_TYPE_PRIMARY_SINK},
+ * {@link #DEVICE_TYPE_SECONDARY_SINK}, {@link #DEVICE_TYPE_SOURCE_OR_PRIMARY_SINK}
+ */
+ @DeviceType
public int getDeviceType() {
- return (mDeviceInfo & DEVICE_TYPE);
+ return mDeviceInfo & DEVICE_TYPE;
}
- @UnsupportedAppUsage
- public boolean setDeviceType(int deviceType) {
- if (deviceType >= WFD_SOURCE && deviceType <= SOURCE_OR_PRIMARY_SINK) {
+ /**
+ * Sets the type of the device.
+ *
+ * @param deviceType One of {@link #DEVICE_TYPE_WFD_SOURCE}, {@link #DEVICE_TYPE_PRIMARY_SINK},
+ * {@link #DEVICE_TYPE_SECONDARY_SINK}, {@link #DEVICE_TYPE_SOURCE_OR_PRIMARY_SINK}
+ * @return true if the device type was successfully set, false otherwise
+ */
+ public boolean setDeviceType(@DeviceType int deviceType) {
+ if (DEVICE_TYPE_WFD_SOURCE <= deviceType
+ && deviceType <= DEVICE_TYPE_SOURCE_OR_PRIMARY_SINK) {
mDeviceInfo &= ~DEVICE_TYPE;
mDeviceInfo |= deviceType;
return true;
@@ -92,35 +127,16 @@ public class WifiP2pWfdInfo implements Parcelable {
return false;
}
- public boolean isCoupledSinkSupportedAtSource() {
- return (mDeviceInfo & COUPLED_SINK_SUPPORT_AT_SINK) != 0;
- }
-
- public void setCoupledSinkSupportAtSource(boolean enabled) {
- if (enabled ) {
- mDeviceInfo |= COUPLED_SINK_SUPPORT_AT_SINK;
- } else {
- mDeviceInfo &= ~COUPLED_SINK_SUPPORT_AT_SINK;
- }
- }
-
- public boolean isCoupledSinkSupportedAtSink() {
- return (mDeviceInfo & COUPLED_SINK_SUPPORT_AT_SINK) != 0;
- }
-
- public void setCoupledSinkSupportAtSink(boolean enabled) {
- if (enabled ) {
- mDeviceInfo |= COUPLED_SINK_SUPPORT_AT_SINK;
- } else {
- mDeviceInfo &= ~COUPLED_SINK_SUPPORT_AT_SINK;
- }
- }
-
+ /** Returns true if a session is available, false otherwise. */
public boolean isSessionAvailable() {
return (mDeviceInfo & SESSION_AVAILABLE) != 0;
}
- @UnsupportedAppUsage
+ /**
+ * Sets whether a session is available.
+ *
+ * @param enabled true to indicate that a session is available, false otherwise.
+ */
public void setSessionAvailable(boolean enabled) {
if (enabled) {
mDeviceInfo |= SESSION_AVAILABLE_BIT1;
@@ -130,29 +146,33 @@ public class WifiP2pWfdInfo implements Parcelable {
}
}
+ /** Returns the TCP port at which the WFD Device listens for RTSP messages. */
public int getControlPort() {
return mCtrlPort;
}
- @UnsupportedAppUsage
+ /** Sets the TCP port at which the WFD Device listens for RTSP messages. */
public void setControlPort(int port) {
mCtrlPort = port;
}
- @UnsupportedAppUsage
+ /** Sets the maximum average throughput capability of the WFD Device, in megabits/second. */
public void setMaxThroughput(int maxThroughput) {
mMaxThroughput = maxThroughput;
}
+ /** Returns the maximum average throughput capability of the WFD Device, in megabits/second. */
public int getMaxThroughput() {
return mMaxThroughput;
}
+ /** @hide */
public String getDeviceInfoHex() {
return String.format(
Locale.US, "%04x%04x%04x", mDeviceInfo, mCtrlPort, mMaxThroughput);
}
+ @Override
public String toString() {
StringBuffer sbuf = new StringBuffer();
sbuf.append("WFD enabled: ").append(mWfdEnabled);
@@ -167,9 +187,8 @@ public class WifiP2pWfdInfo implements Parcelable {
return 0;
}
- /** copy constructor */
- @UnsupportedAppUsage
- public WifiP2pWfdInfo(WifiP2pWfdInfo source) {
+ /** Copy constructor. */
+ public WifiP2pWfdInfo(@Nullable WifiP2pWfdInfo source) {
if (source != null) {
mWfdEnabled = source.mWfdEnabled;
mDeviceInfo = source.mDeviceInfo;
@@ -179,14 +198,15 @@ public class WifiP2pWfdInfo implements Parcelable {
}
/** Implement the Parcelable interface */
- public void writeToParcel(Parcel dest, int flags) {
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeInt(mWfdEnabled ? 1 : 0);
dest.writeInt(mDeviceInfo);
dest.writeInt(mCtrlPort);
dest.writeInt(mMaxThroughput);
}
- public void readFromParcel(Parcel in) {
+ private void readFromParcel(Parcel in) {
mWfdEnabled = (in.readInt() == 1);
mDeviceInfo = in.readInt();
mCtrlPort = in.readInt();
@@ -194,8 +214,7 @@ public class WifiP2pWfdInfo implements Parcelable {
}
/** Implement the Parcelable interface */
- @UnsupportedAppUsage
- public static final @android.annotation.NonNull Creator<WifiP2pWfdInfo> CREATOR =
+ public static final @NonNull Creator<WifiP2pWfdInfo> CREATOR =
new Creator<WifiP2pWfdInfo>() {
public WifiP2pWfdInfo createFromParcel(Parcel in) {
WifiP2pWfdInfo device = new WifiP2pWfdInfo();
diff --git a/wifi/tests/src/android/net/wifi/WifiManagerTest.java b/wifi/tests/src/android/net/wifi/WifiManagerTest.java
index 630527726964..06ebc1b3f6da 100644
--- a/wifi/tests/src/android/net/wifi/WifiManagerTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiManagerTest.java
@@ -709,6 +709,18 @@ public class WifiManagerTest {
}
/**
+ * Verify an IllegalArgumentException is thrown if executor is null.
+ */
+ @Test
+ public void registerSoftApCallbackThrowsIllegalArgumentExceptionOnNullArgumentForExecutor() {
+ try {
+ mWifiManager.registerSoftApCallback(null, mSoftApCallback);
+ fail("expected IllegalArgumentException");
+ } catch (IllegalArgumentException expected) {
+ }
+ }
+
+ /**
* Verify an IllegalArgumentException is thrown if callback is not provided.
*/
@Test
@@ -724,9 +736,10 @@ public class WifiManagerTest {
* Verify main looper is used when handler is not provided.
*/
@Test
- public void registerSoftApCallbackUsesMainLooperOnNullArgumentForHandler() {
- when(mContext.getMainLooper()).thenReturn(mLooper.getLooper());
- mWifiManager.registerSoftApCallback(null, mSoftApCallback);
+ public void registerSoftApCallbackUsesMainExecutorOnNoExecutorProvided() {
+ when(mContext.getMainExecutor()).thenReturn(
+ new HandlerExecutor(new Handler(mLooper.getLooper())));
+ mWifiManager.registerSoftApCallback(mSoftApCallback);
verify(mContext).getMainExecutor();
}
@@ -1147,10 +1160,11 @@ public class WifiManagerTest {
@Test
public void registerTrafficStateCallbackUsesMainLooperOnNullArgumentForHandler()
throws Exception {
- when(mContext.getMainLooper()).thenReturn(mLooper.getLooper());
+ when(mContext.getMainExecutor()).thenReturn(
+ new HandlerExecutor(new Handler(mLooper.getLooper())));
ArgumentCaptor<ITrafficStateCallback.Stub> callbackCaptor =
ArgumentCaptor.forClass(ITrafficStateCallback.Stub.class);
- mWifiManager.registerTrafficStateCallback(mTrafficStateCallback, null);
+ mWifiManager.registerTrafficStateCallback(mTrafficStateCallback);
verify(mWifiService).registerTrafficStateCallback(
any(IBinder.class), callbackCaptor.capture(), anyInt());
@@ -1166,7 +1180,8 @@ public class WifiManagerTest {
@Test
public void unregisterTrafficStateCallbackCallGoesToWifiServiceImpl() throws Exception {
ArgumentCaptor<Integer> callbackIdentifier = ArgumentCaptor.forClass(Integer.class);
- mWifiManager.registerTrafficStateCallback(mTrafficStateCallback, mHandler);
+ mWifiManager.registerTrafficStateCallback(new HandlerExecutor(mHandler),
+ mTrafficStateCallback);
verify(mWifiService).registerTrafficStateCallback(any(IBinder.class),
any(ITrafficStateCallback.Stub.class), callbackIdentifier.capture());
@@ -1182,7 +1197,8 @@ public class WifiManagerTest {
public void trafficStateCallbackProxyCallsOnMultipleUpdates() throws Exception {
ArgumentCaptor<ITrafficStateCallback.Stub> callbackCaptor =
ArgumentCaptor.forClass(ITrafficStateCallback.Stub.class);
- mWifiManager.registerTrafficStateCallback(mTrafficStateCallback, mHandler);
+ mWifiManager.registerTrafficStateCallback(new HandlerExecutor(mHandler),
+ mTrafficStateCallback);
verify(mWifiService).registerTrafficStateCallback(
any(IBinder.class), callbackCaptor.capture(), anyInt());
@@ -1201,7 +1217,7 @@ public class WifiManagerTest {
TrafficStateCallback.DATA_ACTIVITY_OUT);
}
- /*
+ /**
* Verify client-provided callback is being called on the correct thread
*/
@Test
@@ -1210,7 +1226,8 @@ public class WifiManagerTest {
ArgumentCaptor.forClass(ITrafficStateCallback.Stub.class);
TestLooper altLooper = new TestLooper();
Handler altHandler = new Handler(altLooper.getLooper());
- mWifiManager.registerTrafficStateCallback(mTrafficStateCallback, altHandler);
+ mWifiManager.registerTrafficStateCallback(new HandlerExecutor(altHandler),
+ mTrafficStateCallback);
verify(mContext, never()).getMainLooper();
verify(mContext, never()).getMainExecutor();
verify(mWifiService).registerTrafficStateCallback(
@@ -1228,10 +1245,11 @@ public class WifiManagerTest {
@Test
public void registerNetworkRequestMatchCallbackCallGoesToWifiServiceImpl()
throws Exception {
- when(mContext.getMainLooper()).thenReturn(mLooper.getLooper());
+ when(mContext.getMainExecutor()).thenReturn(
+ new HandlerExecutor(new Handler(mLooper.getLooper())));
ArgumentCaptor<INetworkRequestMatchCallback.Stub> callbackCaptor =
ArgumentCaptor.forClass(INetworkRequestMatchCallback.Stub.class);
- mWifiManager.registerNetworkRequestMatchCallback(mNetworkRequestMatchCallback, null);
+ mWifiManager.registerNetworkRequestMatchCallback(mNetworkRequestMatchCallback);
verify(mWifiService).registerNetworkRequestMatchCallback(
any(IBinder.class), callbackCaptor.capture(), anyInt());
@@ -1265,7 +1283,8 @@ public class WifiManagerTest {
@Test
public void unregisterNetworkRequestMatchCallbackCallGoesToWifiServiceImpl() throws Exception {
ArgumentCaptor<Integer> callbackIdentifier = ArgumentCaptor.forClass(Integer.class);
- mWifiManager.registerNetworkRequestMatchCallback(mNetworkRequestMatchCallback, mHandler);
+ mWifiManager.registerNetworkRequestMatchCallback(new HandlerExecutor(mHandler),
+ mNetworkRequestMatchCallback);
verify(mWifiService).registerNetworkRequestMatchCallback(
any(IBinder.class), any(INetworkRequestMatchCallback.class),
callbackIdentifier.capture());
@@ -1282,10 +1301,11 @@ public class WifiManagerTest {
@Test
public void networkRequestUserSelectionCallbackCallGoesToWifiServiceImpl()
throws Exception {
- when(mContext.getMainLooper()).thenReturn(mLooper.getLooper());
+ when(mContext.getMainExecutor()).thenReturn(
+ new HandlerExecutor(new Handler(mLooper.getLooper())));
ArgumentCaptor<INetworkRequestMatchCallback.Stub> callbackCaptor =
ArgumentCaptor.forClass(INetworkRequestMatchCallback.Stub.class);
- mWifiManager.registerNetworkRequestMatchCallback(mNetworkRequestMatchCallback, null);
+ mWifiManager.registerNetworkRequestMatchCallback(mNetworkRequestMatchCallback);
verify(mWifiService).registerNetworkRequestMatchCallback(
any(IBinder.class), callbackCaptor.capture(), anyInt());
diff --git a/wifi/tests/src/android/net/wifi/p2p/WifiP2pWfdInfoTest.java b/wifi/tests/src/android/net/wifi/p2p/WifiP2pWfdInfoTest.java
index d2f11688e4e5..cea73efc88d0 100644
--- a/wifi/tests/src/android/net/wifi/p2p/WifiP2pWfdInfoTest.java
+++ b/wifi/tests/src/android/net/wifi/p2p/WifiP2pWfdInfoTest.java
@@ -43,7 +43,7 @@ public class WifiP2pWfdInfoTest {
@Before
public void setUp() {
// initialize device info flags.
- mSourceInfo.setDeviceType(WifiP2pWfdInfo.WFD_SOURCE);
+ mSourceInfo.setDeviceType(WifiP2pWfdInfo.DEVICE_TYPE_WFD_SOURCE);
mSourceInfo.setSessionAvailable(true);
}
@@ -57,14 +57,8 @@ public class WifiP2pWfdInfoTest {
info.setWfdEnabled(true);
assertTrue(info.isWfdEnabled());
- info.setDeviceType(WifiP2pWfdInfo.WFD_SOURCE);
- assertEquals(WifiP2pWfdInfo.WFD_SOURCE, info.getDeviceType());
-
- info.setCoupledSinkSupportAtSource(true);
- assertTrue(info.isCoupledSinkSupportedAtSource());
-
- info.setCoupledSinkSupportAtSink(true);
- assertTrue(info.isCoupledSinkSupportedAtSink());
+ info.setDeviceType(WifiP2pWfdInfo.DEVICE_TYPE_WFD_SOURCE);
+ assertEquals(WifiP2pWfdInfo.DEVICE_TYPE_WFD_SOURCE, info.getDeviceType());
info.setSessionAvailable(true);
assertTrue(info.isSessionAvailable());
@@ -75,7 +69,7 @@ public class WifiP2pWfdInfoTest {
info.setMaxThroughput(TEST_MAX_TPUT);
assertEquals(TEST_MAX_TPUT, info.getMaxThroughput());
- assertEquals("0018270f0400", info.getDeviceInfoHex());
+ assertEquals("0010270f0400", info.getDeviceInfoHex());
}
/**