summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/current.txt52
-rw-r--r--api/removed.txt4
-rw-r--r--api/system-current.txt53
-rw-r--r--api/system-removed.txt4
-rw-r--r--api/test-current.txt53
-rw-r--r--api/test-removed.txt4
-rw-r--r--cmds/am/src/com/android/commands/am/Am.java8
-rw-r--r--core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl2
-rw-r--r--core/java/android/app/Activity.java59
-rw-r--r--core/java/android/app/ActivityManagerNative.java25
-rw-r--r--core/java/android/app/ActivityOptions.java2
-rw-r--r--core/java/android/app/ActivityThread.java161
-rw-r--r--core/java/android/app/AppOpsManager.java55
-rw-r--r--core/java/android/app/IActivityManager.java5
-rw-r--r--core/java/android/app/ResourcesManager.java11
-rw-r--r--core/java/android/app/admin/DevicePolicyManager.java40
-rw-r--r--core/java/android/app/admin/IDevicePolicyManager.aidl2
-rw-r--r--core/java/android/app/backup/BackupAgent.java8
-rw-r--r--core/java/android/bluetooth/le/ScanFilter.java14
-rw-r--r--core/java/android/content/ClipData.java28
-rw-r--r--core/java/android/content/pm/PackageManager.java35
-rw-r--r--core/java/android/hardware/soundtrigger/KeyphraseEnrollmentInfo.java23
-rw-r--r--core/java/android/inputmethodservice/InputMethodService.java4
-rw-r--r--core/java/android/net/ConnectivityManager.java8
-rw-r--r--core/java/android/net/IConnectivityManager.aidl2
-rw-r--r--core/java/android/net/INetworkPolicyListener.aidl1
-rw-r--r--core/java/android/net/INetworkPolicyManager.aidl1
-rw-r--r--core/java/android/net/NetworkPolicyManager.java57
-rw-r--r--core/java/android/net/network-policy-restrictions.md47
-rw-r--r--core/java/android/os/BaseBundle.java104
-rw-r--r--core/java/android/os/BatteryStats.java6
-rw-r--r--core/java/android/provider/BlockedNumberContract.java10
-rw-r--r--core/java/android/provider/ContactsContract.java78
-rwxr-xr-xcore/java/android/provider/Settings.java18
-rw-r--r--core/java/android/service/vr/VrListenerService.java45
-rw-r--r--core/java/android/view/IWindowSession.aidl6
-rw-r--r--core/java/android/view/ViewGroup.java5
-rw-r--r--core/java/android/view/ViewRootImpl.java14
-rw-r--r--core/java/android/view/inputmethod/InputMethodManager.java25
-rw-r--r--core/java/android/webkit/ServiceWorkerClient.java7
-rw-r--r--core/java/android/webkit/ServiceWorkerController.java21
-rw-r--r--core/java/android/webkit/ServiceWorkerWebSettings.java13
-rw-r--r--core/java/android/webkit/WebSettings.java11
-rw-r--r--core/java/android/widget/Editor.java10
-rw-r--r--core/java/com/android/internal/policy/DecorView.java21
-rw-r--r--core/java/com/android/internal/util/RingBufferIndices.java82
-rw-r--r--core/java/com/android/internal/view/IInputConnectionWrapper.java34
-rw-r--r--core/jni/android_auditing_SecurityLog.cpp312
-rw-r--r--core/res/AndroidManifest.xml10
-rw-r--r--core/res/res/layout/global_actions_item.xml15
-rw-r--r--core/res/res/values-af/strings.xml57
-rw-r--r--core/res/res/values-am/strings.xml57
-rw-r--r--core/res/res/values-ar/strings.xml57
-rw-r--r--core/res/res/values-az-rAZ/strings.xml57
-rw-r--r--core/res/res/values-b+sr+Latn/strings.xml57
-rw-r--r--core/res/res/values-be-rBY/strings.xml73
-rw-r--r--core/res/res/values-bg/strings.xml59
-rw-r--r--core/res/res/values-bn-rBD/strings.xml57
-rw-r--r--core/res/res/values-bs-rBA/strings.xml57
-rw-r--r--core/res/res/values-ca/strings.xml57
-rw-r--r--core/res/res/values-cs/strings.xml57
-rw-r--r--core/res/res/values-da/strings.xml57
-rw-r--r--core/res/res/values-de/strings.xml57
-rw-r--r--core/res/res/values-el/strings.xml59
-rw-r--r--core/res/res/values-en-rAU/strings.xml57
-rw-r--r--core/res/res/values-en-rGB/strings.xml57
-rw-r--r--core/res/res/values-en-rIN/strings.xml57
-rw-r--r--core/res/res/values-es-rUS/strings.xml57
-rw-r--r--core/res/res/values-es/strings.xml57
-rw-r--r--core/res/res/values-et-rEE/strings.xml57
-rw-r--r--core/res/res/values-eu-rES/strings.xml73
-rw-r--r--core/res/res/values-fa/strings.xml57
-rw-r--r--core/res/res/values-fi/strings.xml57
-rw-r--r--core/res/res/values-fr-rCA/strings.xml57
-rw-r--r--core/res/res/values-fr/strings.xml57
-rw-r--r--core/res/res/values-gl-rES/strings.xml57
-rw-r--r--core/res/res/values-gu-rIN/strings.xml57
-rw-r--r--core/res/res/values-hi/strings.xml57
-rw-r--r--core/res/res/values-hr/strings.xml57
-rw-r--r--core/res/res/values-hu/strings.xml57
-rw-r--r--core/res/res/values-hy-rAM/strings.xml57
-rw-r--r--core/res/res/values-in/strings.xml57
-rw-r--r--core/res/res/values-is-rIS/strings.xml57
-rw-r--r--core/res/res/values-it/strings.xml57
-rw-r--r--core/res/res/values-iw/strings.xml57
-rw-r--r--core/res/res/values-ja/strings.xml57
-rw-r--r--core/res/res/values-ka-rGE/strings.xml57
-rw-r--r--core/res/res/values-kk-rKZ/strings.xml89
-rw-r--r--core/res/res/values-km-rKH/strings.xml57
-rw-r--r--core/res/res/values-kn-rIN/strings.xml57
-rw-r--r--core/res/res/values-ko/strings.xml57
-rw-r--r--core/res/res/values-ky-rKG/strings.xml57
-rw-r--r--core/res/res/values-lo-rLA/strings.xml57
-rw-r--r--core/res/res/values-lt/strings.xml57
-rw-r--r--core/res/res/values-lv/strings.xml57
-rw-r--r--core/res/res/values-mk-rMK/strings.xml57
-rw-r--r--core/res/res/values-ml-rIN/strings.xml57
-rw-r--r--core/res/res/values-mn-rMN/strings.xml57
-rw-r--r--core/res/res/values-mr-rIN/strings.xml57
-rw-r--r--core/res/res/values-ms-rMY/strings.xml57
-rw-r--r--core/res/res/values-my-rMM/strings.xml57
-rw-r--r--core/res/res/values-nb/strings.xml57
-rw-r--r--core/res/res/values-ne-rNP/strings.xml57
-rw-r--r--core/res/res/values-nl/strings.xml57
-rw-r--r--core/res/res/values-pa-rIN/strings.xml57
-rw-r--r--core/res/res/values-pl/strings.xml57
-rw-r--r--core/res/res/values-pt-rBR/strings.xml57
-rw-r--r--core/res/res/values-pt-rPT/strings.xml57
-rw-r--r--core/res/res/values-pt/strings.xml57
-rw-r--r--core/res/res/values-ro/strings.xml57
-rw-r--r--core/res/res/values-ru/strings.xml57
-rw-r--r--core/res/res/values-si-rLK/strings.xml57
-rw-r--r--core/res/res/values-sk/strings.xml57
-rw-r--r--core/res/res/values-sl/strings.xml57
-rw-r--r--core/res/res/values-sq-rAL/strings.xml57
-rw-r--r--core/res/res/values-sr/strings.xml57
-rw-r--r--core/res/res/values-sv/strings.xml57
-rw-r--r--core/res/res/values-sw/strings.xml57
-rw-r--r--core/res/res/values-ta-rIN/strings.xml57
-rw-r--r--core/res/res/values-te-rIN/strings.xml57
-rw-r--r--core/res/res/values-th/strings.xml57
-rw-r--r--core/res/res/values-tl/strings.xml57
-rw-r--r--core/res/res/values-tr/strings.xml57
-rw-r--r--core/res/res/values-uk/strings.xml57
-rw-r--r--core/res/res/values-ur-rPK/strings.xml57
-rw-r--r--core/res/res/values-uz-rUZ/strings.xml61
-rw-r--r--core/res/res/values-vi/strings.xml85
-rw-r--r--core/res/res/values-zh-rCN/strings.xml73
-rw-r--r--core/res/res/values-zh-rHK/strings.xml57
-rw-r--r--core/res/res/values-zh-rTW/strings.xml57
-rw-r--r--core/res/res/values-zu/strings.xml57
-rw-r--r--core/res/res/values/attrs_manifest.xml12
-rw-r--r--core/res/res/values/config.xml2
-rw-r--r--core/res/res/values/symbols.xml2
-rw-r--r--core/tests/coretests/src/android/net/NetworkPolicyManagerTest.java107
-rw-r--r--docs/html/_redirects.yaml46
-rw-r--r--docs/html/go/libraries/_book.yaml17
-rw-r--r--docs/html/guide/_book.yaml5
-rw-r--r--docs/html/guide/topics/resources/drawable-resource.jd4
-rw-r--r--docs/html/jd_extras_en.js10
-rw-r--r--docs/html/ndk/guides/graphics/getting-started.jd1
-rw-r--r--docs/html/preview/support.jd118
-rw-r--r--docs/html/topic/libraries/_book.yaml17
-rw-r--r--docs/html/topic/libraries/data-binding/index.jd (renamed from docs/html/go/libraries/data-binding/index.jd)0
-rw-r--r--docs/html/topic/libraries/index.jd (renamed from docs/html/go/libraries/index.jd)2
-rwxr-xr-xdocs/html/topic/libraries/support-library/features.jd (renamed from docs/html/go/libraries/support-library/features.jd)6
-rw-r--r--docs/html/topic/libraries/support-library/index.jd (renamed from docs/html/go/libraries/support-library/index.jd)0
-rwxr-xr-xdocs/html/topic/libraries/support-library/setup.jd (renamed from docs/html/go/libraries/support-library/setup.jd)0
-rw-r--r--docs/html/topic/libraries/testing-support-library/index.jd (renamed from docs/html/go/libraries/testing-support-library/index.jd)0
-rw-r--r--docs/html/training/index.jd5
-rw-r--r--libs/hwui/AmbientShadow.cpp29
-rw-r--r--libs/hwui/BakedOpDispatcher.cpp5
-rw-r--r--libs/hwui/Caches.cpp1
-rw-r--r--libs/hwui/FrameBuilder.cpp3
-rw-r--r--libs/hwui/Glop.h5
-rw-r--r--libs/hwui/GlopBuilder.cpp23
-rw-r--r--libs/hwui/GlopBuilder.h4
-rw-r--r--libs/hwui/LayerBuilder.cpp9
-rw-r--r--libs/hwui/OpenGLRenderer.cpp4
-rw-r--r--libs/hwui/ProgramCache.cpp7
-rw-r--r--libs/hwui/SpotShadow.cpp13
-rw-r--r--libs/hwui/renderstate/OffscreenBufferPool.cpp3
-rw-r--r--libs/hwui/renderstate/RenderState.cpp12
-rw-r--r--libs/hwui/renderstate/TextureState.cpp38
-rw-r--r--libs/hwui/renderstate/TextureState.h12
-rw-r--r--media/java/android/media/MediaRecorder.java27
-rw-r--r--media/java/android/media/midi/package.html9
-rw-r--r--media/java/android/media/tv/TvInputManager.java12
-rw-r--r--media/java/android/media/tv/TvStreamConfig.java29
-rw-r--r--packages/DefaultContainerService/res/values-ky-rKG/strings.xml24
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java20
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/DocumentClipper.java25
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java5
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java64
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java91
-rw-r--r--packages/InputDevices/res/values-ky-rKG/strings.xml2
-rw-r--r--packages/InputDevices/res/values-ur-rPK/strings.xml2
-rw-r--r--packages/PrintRecommendationService/res/values/donottranslate.xml21
-rw-r--r--packages/PrintRecommendationService/res/values/strings.xml1
-rw-r--r--packages/PrintRecommendationService/res/xml/vendorconfigs.xml10
-rw-r--r--packages/PrintRecommendationService/src/com/android/printservice/recommendation/RecommendationServiceImpl.java18
-rw-r--r--packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/HPRecommendationPlugin.java100
-rw-r--r--packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/MDnsUtils.java74
-rw-r--r--packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/PrinterHashMap.java33
-rw-r--r--packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/ServiceListener.java186
-rw-r--r--packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/ServiceRecommendationPlugin.java86
-rw-r--r--packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/ServiceResolveQueue.java109
-rw-r--r--packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/VendorInfo.java40
-rw-r--r--packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/MDNSFilterPlugin.java9
-rw-r--r--packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/MDNSUtils.java (renamed from packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/MDNSUtils.java)4
-rw-r--r--packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mopria/MopriaRecommendationPlugin.java54
-rw-r--r--packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/DiscoveryListenerMultiplexer.java177
-rw-r--r--packages/SettingsLib/res/values-ar/arrays.xml22
-rw-r--r--packages/SettingsLib/res/values-es/arrays.xml2
-rw-r--r--packages/SettingsLib/res/values-fa/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-fr/arrays.xml4
-rw-r--r--packages/SettingsLib/res/values-hy-rAM/arrays.xml2
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java39
-rw-r--r--packages/SettingsProvider/res/values-ky-rKG/strings.xml23
-rw-r--r--packages/SystemUI/res/layout/qs_paged_tile_layout.xml3
-rw-r--r--packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml29
-rw-r--r--packages/SystemUI/res/values-ky-rKG-land/strings.xml23
-rw-r--r--packages/SystemUI/res/values-uz-rUZ/strings.xml4
-rw-r--r--packages/SystemUI/src/com/android/systemui/ExpandHelper.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSPanel.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSTile.java23
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSTileBaseView.java55
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSTileView.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java26
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/TileLayout.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java44
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/BatteryTile.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java21
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java31
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java35
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java55
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java43
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/RecentsImplProxy.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/events/ui/dragndrop/DragEndCancelledEvent.java39
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/misc/Utilities.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java39
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/model/Task.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/model/TaskKeyLruCache.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java22
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/tv/RecentsTvActivity.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/tv/RecentsTvImpl.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/tv/animations/DismissAnimationsHolder.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/tv/views/RecentsTvTransitionHelper.java23
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskCardView.java21
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalViewAdapter.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java27
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java77
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/views/SystemBarScrimViews.java17
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java91
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java18
-rw-r--r--packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java18
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java107
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java59
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ExpandableIndicator.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpTouchHelper.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java38
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java133
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java17
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java17
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/DataSaverController.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java202
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/stack/ScrollContainer.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java28
-rw-r--r--proto/src/metrics_constants.proto15
-rw-r--r--services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java4
-rw-r--r--services/backup/java/com/android/server/backup/BackupManagerService.java155
-rw-r--r--services/core/java/com/android/server/ConnectivityService.java127
-rw-r--r--services/core/java/com/android/server/DeviceIdleController.java3
-rw-r--r--services/core/java/com/android/server/LocationManagerService.java10
-rw-r--r--services/core/java/com/android/server/LockSettingsService.java8
-rw-r--r--services/core/java/com/android/server/MountService.java12
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java55
-rw-r--r--services/core/java/com/android/server/am/ActivityMetricsLogger.java11
-rw-r--r--services/core/java/com/android/server/am/ActivityStack.java7
-rw-r--r--services/core/java/com/android/server/am/BatteryStatsService.java2
-rw-r--r--services/core/java/com/android/server/am/RecentTasks.java5
-rw-r--r--services/core/java/com/android/server/am/UserController.java26
-rw-r--r--services/core/java/com/android/server/connectivity/MetricsLoggerService.java10
-rw-r--r--services/core/java/com/android/server/connectivity/NetworkAgentInfo.java38
-rw-r--r--services/core/java/com/android/server/connectivity/Vpn.java6
-rw-r--r--services/core/java/com/android/server/fingerprint/AuthenticationClient.java15
-rw-r--r--services/core/java/com/android/server/job/JobPackageTracker.java132
-rw-r--r--services/core/java/com/android/server/job/JobSchedulerService.java5
-rw-r--r--services/core/java/com/android/server/job/controllers/ConnectivityController.java5
-rw-r--r--services/core/java/com/android/server/job/controllers/IdleController.java10
-rw-r--r--services/core/java/com/android/server/net/NetworkPolicyManagerService.java208
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerService.java2
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java123
-rw-r--r--services/core/java/com/android/server/pm/Settings.java32
-rw-r--r--services/core/java/com/android/server/trust/TrustManagerService.java13
-rw-r--r--services/core/java/com/android/server/tv/TvInputHardwareManager.java38
-rw-r--r--services/core/java/com/android/server/tv/TvInputManagerService.java177
-rw-r--r--services/core/java/com/android/server/wm/AppWindowAnimator.java6
-rw-r--r--services/core/java/com/android/server/wm/BoundsAnimationController.java52
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java2
-rw-r--r--services/core/java/com/android/server/wm/DockedStackDividerController.java19
-rw-r--r--services/core/java/com/android/server/wm/Session.java4
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerDebugConfig.java3
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java41
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java11
-rw-r--r--services/core/java/com/android/server/wm/WindowSurfacePlacer.java26
-rw-r--r--services/core/jni/com_android_server_tv_TvInputHal.cpp81
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java15
-rw-r--r--services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java28
-rw-r--r--services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerInternal.java8
-rw-r--r--services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java6
-rw-r--r--services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java28
-rw-r--r--telephony/java/android/telephony/CellIdentityGsm.java7
-rw-r--r--telephony/java/android/telephony/CellSignalStrengthCdma.java41
-rw-r--r--telephony/java/android/telephony/CellSignalStrengthLte.java16
-rw-r--r--tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java31
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/Bitmap_Delegate.java7
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowSession.java2
321 files changed, 6373 insertions, 5161 deletions
diff --git a/api/current.txt b/api/current.txt
index 63f24993ac01..d380e70d6a01 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -104,7 +104,6 @@ package android {
field public static final java.lang.String READ_VOICEMAIL = "com.android.voicemail.permission.READ_VOICEMAIL";
field public static final java.lang.String REBOOT = "android.permission.REBOOT";
field public static final java.lang.String RECEIVE_BOOT_COMPLETED = "android.permission.RECEIVE_BOOT_COMPLETED";
- field public static final java.lang.String RECEIVE_EMERGENCY_BROADCAST = "android.permission.RECEIVE_EMERGENCY_BROADCAST";
field public static final java.lang.String RECEIVE_MMS = "android.permission.RECEIVE_MMS";
field public static final java.lang.String RECEIVE_SMS = "android.permission.RECEIVE_SMS";
field public static final java.lang.String RECEIVE_WAP_PUSH = "android.permission.RECEIVE_WAP_PUSH";
@@ -115,7 +114,6 @@ package android {
field public static final deprecated java.lang.String RESTART_PACKAGES = "android.permission.RESTART_PACKAGES";
field public static final java.lang.String SEND_RESPOND_VIA_MESSAGE = "android.permission.SEND_RESPOND_VIA_MESSAGE";
field public static final java.lang.String SEND_SMS = "android.permission.SEND_SMS";
- field public static final java.lang.String SEND_SMS_NO_CONFIRMATION = "android.permission.SEND_SMS_NO_CONFIRMATION";
field public static final java.lang.String SET_ALARM = "com.android.alarm.permission.SET_ALARM";
field public static final java.lang.String SET_ALWAYS_FINISH = "android.permission.SET_ALWAYS_FINISH";
field public static final java.lang.String SET_ANIMATION_SCALE = "android.permission.SET_ANIMATION_SCALE";
@@ -5967,7 +5965,7 @@ package android.app.admin {
method public java.util.List<android.app.admin.SecurityLog.SecurityEvent> retrievePreRebootSecurityLogs(android.content.ComponentName);
method public java.util.List<android.app.admin.SecurityLog.SecurityEvent> retrieveSecurityLogs(android.content.ComponentName);
method public void setAccountManagementDisabled(android.content.ComponentName, java.lang.String, boolean);
- method public void setAlwaysOnVpnPackage(android.content.ComponentName, java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException, java.lang.UnsupportedOperationException;
+ method public void setAlwaysOnVpnPackage(android.content.ComponentName, java.lang.String, boolean) throws android.content.pm.PackageManager.NameNotFoundException, java.lang.UnsupportedOperationException;
method public boolean setApplicationHidden(android.content.ComponentName, java.lang.String, boolean);
method public void setApplicationRestrictions(android.content.ComponentName, java.lang.String, android.os.Bundle);
method public void setApplicationRestrictionsManagingPackage(android.content.ComponentName, java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
@@ -16283,11 +16281,8 @@ package android.icu.text {
method public abstract int next();
method public int preceding(int);
method public abstract int previous();
- method public static java.lang.Object registerInstance(android.icu.text.BreakIterator, java.util.Locale, int);
- method public static java.lang.Object registerInstance(android.icu.text.BreakIterator, android.icu.util.ULocale, int);
method public void setText(java.lang.String);
method public abstract void setText(java.text.CharacterIterator);
- method public static boolean unregister(java.lang.Object);
field public static final int DONE = -1; // 0xffffffff
field public static final int KIND_CHARACTER = 0; // 0x0
field public static final int KIND_LINE = 2; // 0x2
@@ -16372,13 +16367,10 @@ package android.icu.text {
method public abstract int getVariableTop();
method public abstract android.icu.util.VersionInfo getVersion();
method public boolean isFrozen();
- method public static final java.lang.Object registerFactory(android.icu.text.Collator.CollatorFactory);
- method public static final java.lang.Object registerInstance(android.icu.text.Collator, android.icu.util.ULocale);
method public void setDecomposition(int);
method public android.icu.text.Collator setMaxVariable(int);
method public void setReorderCodes(int...);
method public void setStrength(int);
- method public static final boolean unregister(java.lang.Object);
field public static final int CANONICAL_DECOMPOSITION = 17; // 0x11
field public static final int FULL_DECOMPOSITION = 15; // 0xf
field public static final int IDENTICAL = 15; // 0xf
@@ -16389,16 +16381,6 @@ package android.icu.text {
field public static final int TERTIARY = 2; // 0x2
}
- public static abstract class Collator.CollatorFactory {
- ctor protected Collator.CollatorFactory();
- method public android.icu.text.Collator createCollator(android.icu.util.ULocale);
- method public android.icu.text.Collator createCollator(java.util.Locale);
- method public java.lang.String getDisplayName(java.util.Locale, java.util.Locale);
- method public java.lang.String getDisplayName(android.icu.util.ULocale, android.icu.util.ULocale);
- method public abstract java.util.Set<java.lang.String> getSupportedLocaleIDs();
- method public boolean visible();
- }
-
public static abstract interface Collator.ReorderCodes {
field public static final int CURRENCY = 4099; // 0x1003
field public static final int DEFAULT = -1; // 0xffffffff
@@ -17258,7 +17240,6 @@ package android.icu.text {
method public java.lang.Number parse(java.lang.String) throws java.text.ParseException;
method public android.icu.util.CurrencyAmount parseCurrency(java.lang.CharSequence, java.text.ParsePosition);
method public final java.lang.Object parseObject(java.lang.String, java.text.ParsePosition);
- method public static java.lang.Object registerFactory(android.icu.text.NumberFormat.NumberFormatFactory);
method public void setContext(android.icu.text.DisplayContext);
method public void setCurrency(android.icu.util.Currency);
method public void setGroupingUsed(boolean);
@@ -17269,7 +17250,6 @@ package android.icu.text {
method public void setParseIntegerOnly(boolean);
method public void setParseStrict(boolean);
method public void setRoundingMode(int);
- method public static boolean unregister(java.lang.Object);
field public static final int ACCOUNTINGCURRENCYSTYLE = 7; // 0x7
field public static final int CASHCURRENCYSTYLE = 8; // 0x8
field public static final int CURRENCYSTYLE = 1; // 0x1
@@ -17298,28 +17278,6 @@ package android.icu.text {
field public static final android.icu.text.NumberFormat.Field SIGN;
}
- public static abstract class NumberFormat.NumberFormatFactory {
- ctor protected NumberFormat.NumberFormatFactory();
- method public android.icu.text.NumberFormat createFormat(android.icu.util.ULocale, int);
- method public android.icu.text.NumberFormat createFormat(java.util.Locale, int);
- method public abstract java.util.Set<java.lang.String> getSupportedLocaleNames();
- method public boolean visible();
- field public static final int FORMAT_CURRENCY = 1; // 0x1
- field public static final int FORMAT_INTEGER = 4; // 0x4
- field public static final int FORMAT_NUMBER = 0; // 0x0
- field public static final int FORMAT_PERCENT = 2; // 0x2
- field public static final int FORMAT_SCIENTIFIC = 3; // 0x3
- }
-
- public static abstract class NumberFormat.SimpleNumberFormatFactory extends android.icu.text.NumberFormat.NumberFormatFactory {
- ctor public NumberFormat.SimpleNumberFormatFactory(java.util.Locale);
- ctor public NumberFormat.SimpleNumberFormatFactory(java.util.Locale, boolean);
- ctor public NumberFormat.SimpleNumberFormatFactory(android.icu.util.ULocale);
- ctor public NumberFormat.SimpleNumberFormatFactory(android.icu.util.ULocale, boolean);
- method public final java.util.Set<java.lang.String> getSupportedLocaleNames();
- method public final boolean visible();
- }
-
public class NumberingSystem {
ctor public NumberingSystem();
method public static java.lang.String[] getAvailableNames();
@@ -18248,8 +18206,6 @@ package android.icu.util {
method public java.lang.String getSymbol(java.util.Locale);
method public java.lang.String getSymbol(android.icu.util.ULocale);
method public static boolean isAvailable(java.lang.String, java.util.Date, java.util.Date);
- method public static java.lang.Object registerInstance(android.icu.util.Currency, android.icu.util.ULocale);
- method public static boolean unregister(java.lang.Object);
field public static final int LONG_NAME = 1; // 0x1
field public static final int PLURAL_LONG_NAME = 2; // 0x2
field public static final int SYMBOL_NAME = 0; // 0x0
@@ -31602,7 +31558,7 @@ package android.provider {
public static final class ContactsContract.Directory implements android.provider.BaseColumns {
method public static boolean isEnterpriseDirectoryId(long);
- method public static boolean isRemoteDirectory(long);
+ method public static boolean isRemoteDirectoryId(long);
method public static void notifyDirectoryChange(android.content.ContentResolver);
field public static final java.lang.String ACCOUNT_NAME = "accountName";
field public static final java.lang.String ACCOUNT_TYPE = "accountType";
@@ -31695,6 +31651,8 @@ package android.provider {
field public static final java.lang.String EXTRA_RECIPIENT_CONTACT_NAME = "android.provider.extra.RECIPIENT_CONTACT_NAME";
field public static final java.lang.String EXTRA_RECIPIENT_CONTACT_URI = "android.provider.extra.RECIPIENT_CONTACT_URI";
field public static final java.lang.String INVITE_CONTACT = "com.android.contacts.action.INVITE_CONTACT";
+ field public static final java.lang.String METADATA_ACCOUNT_TYPE = "android.provider.account_type";
+ field public static final java.lang.String METADATA_MIMETYPE = "android.provider.mimetype";
field public static final java.lang.String SEARCH_SUGGESTION_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED";
field public static final java.lang.String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED";
field public static final java.lang.String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED";
@@ -32444,6 +32402,7 @@ package android.provider {
field public static final java.lang.String ACTION_VOICE_INPUT_SETTINGS = "android.settings.VOICE_INPUT_SETTINGS";
field public static final java.lang.String ACTION_VPN_SETTINGS = "android.settings.VPN_SETTINGS";
field public static final java.lang.String ACTION_VR_LISTENER_SETTINGS = "android.settings.VR_LISTENER_SETTINGS";
+ field public static final java.lang.String ACTION_WEBVIEW_SETTINGS = "android.settings.WEBVIEW_SETTINGS";
field public static final java.lang.String ACTION_WIFI_IP_SETTINGS = "android.settings.WIFI_IP_SETTINGS";
field public static final java.lang.String ACTION_WIFI_SETTINGS = "android.settings.WIFI_SETTINGS";
field public static final java.lang.String ACTION_WIRELESS_SETTINGS = "android.settings.WIRELESS_SETTINGS";
@@ -32972,7 +32931,6 @@ package android.provider {
field public static final java.lang.String SIM_FULL_ACTION = "android.provider.Telephony.SIM_FULL";
field public static final java.lang.String SMS_CB_RECEIVED_ACTION = "android.provider.Telephony.SMS_CB_RECEIVED";
field public static final java.lang.String SMS_DELIVER_ACTION = "android.provider.Telephony.SMS_DELIVER";
- field public static final java.lang.String SMS_EMERGENCY_CB_RECEIVED_ACTION = "android.provider.Telephony.SMS_EMERGENCY_CB_RECEIVED";
field public static final java.lang.String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
field public static final java.lang.String SMS_REJECTED_ACTION = "android.provider.Telephony.SMS_REJECTED";
field public static final java.lang.String SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED_ACTION = "android.provider.Telephony.SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED";
diff --git a/api/removed.txt b/api/removed.txt
index de8a7244d388..f9fce40f642d 100644
--- a/api/removed.txt
+++ b/api/removed.txt
@@ -368,6 +368,10 @@ package android.provider {
field public static final java.lang.String VOLUME_VOICE = "volume_voice";
}
+ public static final class Telephony.Sms.Intents {
+ field public static final java.lang.String SMS_EMERGENCY_CB_RECEIVED_ACTION = "android.provider.Telephony.SMS_EMERGENCY_CB_RECEIVED";
+ }
+
}
package android.test.mock {
diff --git a/api/system-current.txt b/api/system-current.txt
index bff39c28e504..dbbefbf934cb 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -6128,7 +6128,7 @@ package android.app.admin {
method public java.util.List<android.app.admin.SecurityLog.SecurityEvent> retrieveSecurityLogs(android.content.ComponentName);
method public void setAccountManagementDisabled(android.content.ComponentName, java.lang.String, boolean);
method public deprecated boolean setActiveProfileOwner(android.content.ComponentName, java.lang.String) throws java.lang.IllegalArgumentException;
- method public void setAlwaysOnVpnPackage(android.content.ComponentName, java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException, java.lang.UnsupportedOperationException;
+ method public void setAlwaysOnVpnPackage(android.content.ComponentName, java.lang.String, boolean) throws android.content.pm.PackageManager.NameNotFoundException, java.lang.UnsupportedOperationException;
method public boolean setApplicationHidden(android.content.ComponentName, java.lang.String, boolean);
method public void setApplicationRestrictions(android.content.ComponentName, java.lang.String, android.os.Bundle);
method public void setApplicationRestrictionsManagingPackage(android.content.ComponentName, java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
@@ -17484,11 +17484,8 @@ package android.icu.text {
method public abstract int next();
method public int preceding(int);
method public abstract int previous();
- method public static java.lang.Object registerInstance(android.icu.text.BreakIterator, java.util.Locale, int);
- method public static java.lang.Object registerInstance(android.icu.text.BreakIterator, android.icu.util.ULocale, int);
method public void setText(java.lang.String);
method public abstract void setText(java.text.CharacterIterator);
- method public static boolean unregister(java.lang.Object);
field public static final int DONE = -1; // 0xffffffff
field public static final int KIND_CHARACTER = 0; // 0x0
field public static final int KIND_LINE = 2; // 0x2
@@ -17573,13 +17570,10 @@ package android.icu.text {
method public abstract int getVariableTop();
method public abstract android.icu.util.VersionInfo getVersion();
method public boolean isFrozen();
- method public static final java.lang.Object registerFactory(android.icu.text.Collator.CollatorFactory);
- method public static final java.lang.Object registerInstance(android.icu.text.Collator, android.icu.util.ULocale);
method public void setDecomposition(int);
method public android.icu.text.Collator setMaxVariable(int);
method public void setReorderCodes(int...);
method public void setStrength(int);
- method public static final boolean unregister(java.lang.Object);
field public static final int CANONICAL_DECOMPOSITION = 17; // 0x11
field public static final int FULL_DECOMPOSITION = 15; // 0xf
field public static final int IDENTICAL = 15; // 0xf
@@ -17590,16 +17584,6 @@ package android.icu.text {
field public static final int TERTIARY = 2; // 0x2
}
- public static abstract class Collator.CollatorFactory {
- ctor protected Collator.CollatorFactory();
- method public android.icu.text.Collator createCollator(android.icu.util.ULocale);
- method public android.icu.text.Collator createCollator(java.util.Locale);
- method public java.lang.String getDisplayName(java.util.Locale, java.util.Locale);
- method public java.lang.String getDisplayName(android.icu.util.ULocale, android.icu.util.ULocale);
- method public abstract java.util.Set<java.lang.String> getSupportedLocaleIDs();
- method public boolean visible();
- }
-
public static abstract interface Collator.ReorderCodes {
field public static final int CURRENCY = 4099; // 0x1003
field public static final int DEFAULT = -1; // 0xffffffff
@@ -18459,7 +18443,6 @@ package android.icu.text {
method public java.lang.Number parse(java.lang.String) throws java.text.ParseException;
method public android.icu.util.CurrencyAmount parseCurrency(java.lang.CharSequence, java.text.ParsePosition);
method public final java.lang.Object parseObject(java.lang.String, java.text.ParsePosition);
- method public static java.lang.Object registerFactory(android.icu.text.NumberFormat.NumberFormatFactory);
method public void setContext(android.icu.text.DisplayContext);
method public void setCurrency(android.icu.util.Currency);
method public void setGroupingUsed(boolean);
@@ -18470,7 +18453,6 @@ package android.icu.text {
method public void setParseIntegerOnly(boolean);
method public void setParseStrict(boolean);
method public void setRoundingMode(int);
- method public static boolean unregister(java.lang.Object);
field public static final int ACCOUNTINGCURRENCYSTYLE = 7; // 0x7
field public static final int CASHCURRENCYSTYLE = 8; // 0x8
field public static final int CURRENCYSTYLE = 1; // 0x1
@@ -18499,28 +18481,6 @@ package android.icu.text {
field public static final android.icu.text.NumberFormat.Field SIGN;
}
- public static abstract class NumberFormat.NumberFormatFactory {
- ctor protected NumberFormat.NumberFormatFactory();
- method public android.icu.text.NumberFormat createFormat(android.icu.util.ULocale, int);
- method public android.icu.text.NumberFormat createFormat(java.util.Locale, int);
- method public abstract java.util.Set<java.lang.String> getSupportedLocaleNames();
- method public boolean visible();
- field public static final int FORMAT_CURRENCY = 1; // 0x1
- field public static final int FORMAT_INTEGER = 4; // 0x4
- field public static final int FORMAT_NUMBER = 0; // 0x0
- field public static final int FORMAT_PERCENT = 2; // 0x2
- field public static final int FORMAT_SCIENTIFIC = 3; // 0x3
- }
-
- public static abstract class NumberFormat.SimpleNumberFormatFactory extends android.icu.text.NumberFormat.NumberFormatFactory {
- ctor public NumberFormat.SimpleNumberFormatFactory(java.util.Locale);
- ctor public NumberFormat.SimpleNumberFormatFactory(java.util.Locale, boolean);
- ctor public NumberFormat.SimpleNumberFormatFactory(android.icu.util.ULocale);
- ctor public NumberFormat.SimpleNumberFormatFactory(android.icu.util.ULocale, boolean);
- method public final java.util.Set<java.lang.String> getSupportedLocaleNames();
- method public final boolean visible();
- }
-
public class NumberingSystem {
ctor public NumberingSystem();
method public static java.lang.String[] getAvailableNames();
@@ -19449,8 +19409,6 @@ package android.icu.util {
method public java.lang.String getSymbol(java.util.Locale);
method public java.lang.String getSymbol(android.icu.util.ULocale);
method public static boolean isAvailable(java.lang.String, java.util.Date, java.util.Date);
- method public static java.lang.Object registerInstance(android.icu.util.Currency, android.icu.util.ULocale);
- method public static boolean unregister(java.lang.Object);
field public static final int LONG_NAME = 1; // 0x1
field public static final int PLURAL_LONG_NAME = 2; // 0x2
field public static final int SYMBOL_NAME = 0; // 0x0
@@ -24900,7 +24858,6 @@ package android.media.tv {
public class TvStreamConfig implements android.os.Parcelable {
method public int describeContents();
- method public int getFlags();
method public int getGeneration();
method public int getMaxHeight();
method public int getMaxWidth();
@@ -24908,7 +24865,6 @@ package android.media.tv {
method public int getType();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.media.tv.TvStreamConfig> CREATOR;
- field public static final int FLAG_MASK_SIGNAL_DETECTION = 1; // 0x1
field public static final int STREAM_TYPE_BUFFER_PRODUCER = 2; // 0x2
field public static final int STREAM_TYPE_INDEPENDENT_VIDEO_SOURCE = 1; // 0x1
}
@@ -24916,7 +24872,6 @@ package android.media.tv {
public static final class TvStreamConfig.Builder {
ctor public TvStreamConfig.Builder();
method public android.media.tv.TvStreamConfig build();
- method public android.media.tv.TvStreamConfig.Builder flags(int);
method public android.media.tv.TvStreamConfig.Builder generation(int);
method public android.media.tv.TvStreamConfig.Builder maxHeight(int);
method public android.media.tv.TvStreamConfig.Builder maxWidth(int);
@@ -34170,7 +34125,7 @@ package android.provider {
public static final class ContactsContract.Directory implements android.provider.BaseColumns {
method public static boolean isEnterpriseDirectoryId(long);
- method public static boolean isRemoteDirectory(long);
+ method public static boolean isRemoteDirectoryId(long);
method public static void notifyDirectoryChange(android.content.ContentResolver);
field public static final java.lang.String ACCOUNT_NAME = "accountName";
field public static final java.lang.String ACCOUNT_TYPE = "accountType";
@@ -34263,6 +34218,8 @@ package android.provider {
field public static final java.lang.String EXTRA_RECIPIENT_CONTACT_NAME = "android.provider.extra.RECIPIENT_CONTACT_NAME";
field public static final java.lang.String EXTRA_RECIPIENT_CONTACT_URI = "android.provider.extra.RECIPIENT_CONTACT_URI";
field public static final java.lang.String INVITE_CONTACT = "com.android.contacts.action.INVITE_CONTACT";
+ field public static final java.lang.String METADATA_ACCOUNT_TYPE = "android.provider.account_type";
+ field public static final java.lang.String METADATA_MIMETYPE = "android.provider.mimetype";
field public static final java.lang.String SEARCH_SUGGESTION_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED";
field public static final java.lang.String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED";
field public static final java.lang.String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED";
@@ -35144,6 +35101,7 @@ package android.provider {
field public static final java.lang.String ACTION_VOICE_INPUT_SETTINGS = "android.settings.VOICE_INPUT_SETTINGS";
field public static final java.lang.String ACTION_VPN_SETTINGS = "android.settings.VPN_SETTINGS";
field public static final java.lang.String ACTION_VR_LISTENER_SETTINGS = "android.settings.VR_LISTENER_SETTINGS";
+ field public static final java.lang.String ACTION_WEBVIEW_SETTINGS = "android.settings.WEBVIEW_SETTINGS";
field public static final java.lang.String ACTION_WIFI_IP_SETTINGS = "android.settings.WIFI_IP_SETTINGS";
field public static final java.lang.String ACTION_WIFI_SETTINGS = "android.settings.WIFI_SETTINGS";
field public static final java.lang.String ACTION_WIRELESS_SETTINGS = "android.settings.WIRELESS_SETTINGS";
@@ -35675,7 +35633,6 @@ package android.provider {
field public static final java.lang.String SIM_FULL_ACTION = "android.provider.Telephony.SIM_FULL";
field public static final java.lang.String SMS_CB_RECEIVED_ACTION = "android.provider.Telephony.SMS_CB_RECEIVED";
field public static final java.lang.String SMS_DELIVER_ACTION = "android.provider.Telephony.SMS_DELIVER";
- field public static final java.lang.String SMS_EMERGENCY_CB_RECEIVED_ACTION = "android.provider.Telephony.SMS_EMERGENCY_CB_RECEIVED";
field public static final java.lang.String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
field public static final java.lang.String SMS_REJECTED_ACTION = "android.provider.Telephony.SMS_REJECTED";
field public static final java.lang.String SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED_ACTION = "android.provider.Telephony.SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED";
diff --git a/api/system-removed.txt b/api/system-removed.txt
index 844604ce1510..6897ce0571aa 100644
--- a/api/system-removed.txt
+++ b/api/system-removed.txt
@@ -366,6 +366,10 @@ package android.provider {
field public static final java.lang.String VOLUME_VOICE = "volume_voice";
}
+ public static final class Telephony.Sms.Intents {
+ field public static final java.lang.String SMS_EMERGENCY_CB_RECEIVED_ACTION = "android.provider.Telephony.SMS_EMERGENCY_CB_RECEIVED";
+ }
+
}
package android.test.mock {
diff --git a/api/test-current.txt b/api/test-current.txt
index 8764333ef2a8..acd729913df0 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -104,7 +104,6 @@ package android {
field public static final java.lang.String READ_VOICEMAIL = "com.android.voicemail.permission.READ_VOICEMAIL";
field public static final java.lang.String REBOOT = "android.permission.REBOOT";
field public static final java.lang.String RECEIVE_BOOT_COMPLETED = "android.permission.RECEIVE_BOOT_COMPLETED";
- field public static final java.lang.String RECEIVE_EMERGENCY_BROADCAST = "android.permission.RECEIVE_EMERGENCY_BROADCAST";
field public static final java.lang.String RECEIVE_MMS = "android.permission.RECEIVE_MMS";
field public static final java.lang.String RECEIVE_SMS = "android.permission.RECEIVE_SMS";
field public static final java.lang.String RECEIVE_WAP_PUSH = "android.permission.RECEIVE_WAP_PUSH";
@@ -115,7 +114,6 @@ package android {
field public static final deprecated java.lang.String RESTART_PACKAGES = "android.permission.RESTART_PACKAGES";
field public static final java.lang.String SEND_RESPOND_VIA_MESSAGE = "android.permission.SEND_RESPOND_VIA_MESSAGE";
field public static final java.lang.String SEND_SMS = "android.permission.SEND_SMS";
- field public static final java.lang.String SEND_SMS_NO_CONFIRMATION = "android.permission.SEND_SMS_NO_CONFIRMATION";
field public static final java.lang.String SET_ALARM = "com.android.alarm.permission.SET_ALARM";
field public static final java.lang.String SET_ALWAYS_FINISH = "android.permission.SET_ALWAYS_FINISH";
field public static final java.lang.String SET_ANIMATION_SCALE = "android.permission.SET_ANIMATION_SCALE";
@@ -3869,6 +3867,7 @@ package android.app {
method public static android.app.ActivityOptions makeThumbnailScaleUpAnimation(android.view.View, android.graphics.Bitmap, int, int);
method public void requestUsageTimeReport(android.app.PendingIntent);
method public android.app.ActivityOptions setLaunchBounds(android.graphics.Rect);
+ method public void setLaunchStackId(int);
method public android.os.Bundle toBundle();
method public void update(android.app.ActivityOptions);
field public static final java.lang.String EXTRA_USAGE_TIME_REPORT = "android.activity.usage_time";
@@ -5971,7 +5970,7 @@ package android.app.admin {
method public java.util.List<android.app.admin.SecurityLog.SecurityEvent> retrievePreRebootSecurityLogs(android.content.ComponentName);
method public java.util.List<android.app.admin.SecurityLog.SecurityEvent> retrieveSecurityLogs(android.content.ComponentName);
method public void setAccountManagementDisabled(android.content.ComponentName, java.lang.String, boolean);
- method public void setAlwaysOnVpnPackage(android.content.ComponentName, java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException, java.lang.UnsupportedOperationException;
+ method public void setAlwaysOnVpnPackage(android.content.ComponentName, java.lang.String, boolean) throws android.content.pm.PackageManager.NameNotFoundException, java.lang.UnsupportedOperationException;
method public boolean setApplicationHidden(android.content.ComponentName, java.lang.String, boolean);
method public void setApplicationRestrictions(android.content.ComponentName, java.lang.String, android.os.Bundle);
method public void setApplicationRestrictionsManagingPackage(android.content.ComponentName, java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
@@ -16295,11 +16294,8 @@ package android.icu.text {
method public abstract int next();
method public int preceding(int);
method public abstract int previous();
- method public static java.lang.Object registerInstance(android.icu.text.BreakIterator, java.util.Locale, int);
- method public static java.lang.Object registerInstance(android.icu.text.BreakIterator, android.icu.util.ULocale, int);
method public void setText(java.lang.String);
method public abstract void setText(java.text.CharacterIterator);
- method public static boolean unregister(java.lang.Object);
field public static final int DONE = -1; // 0xffffffff
field public static final int KIND_CHARACTER = 0; // 0x0
field public static final int KIND_LINE = 2; // 0x2
@@ -16384,13 +16380,10 @@ package android.icu.text {
method public abstract int getVariableTop();
method public abstract android.icu.util.VersionInfo getVersion();
method public boolean isFrozen();
- method public static final java.lang.Object registerFactory(android.icu.text.Collator.CollatorFactory);
- method public static final java.lang.Object registerInstance(android.icu.text.Collator, android.icu.util.ULocale);
method public void setDecomposition(int);
method public android.icu.text.Collator setMaxVariable(int);
method public void setReorderCodes(int...);
method public void setStrength(int);
- method public static final boolean unregister(java.lang.Object);
field public static final int CANONICAL_DECOMPOSITION = 17; // 0x11
field public static final int FULL_DECOMPOSITION = 15; // 0xf
field public static final int IDENTICAL = 15; // 0xf
@@ -16401,16 +16394,6 @@ package android.icu.text {
field public static final int TERTIARY = 2; // 0x2
}
- public static abstract class Collator.CollatorFactory {
- ctor protected Collator.CollatorFactory();
- method public android.icu.text.Collator createCollator(android.icu.util.ULocale);
- method public android.icu.text.Collator createCollator(java.util.Locale);
- method public java.lang.String getDisplayName(java.util.Locale, java.util.Locale);
- method public java.lang.String getDisplayName(android.icu.util.ULocale, android.icu.util.ULocale);
- method public abstract java.util.Set<java.lang.String> getSupportedLocaleIDs();
- method public boolean visible();
- }
-
public static abstract interface Collator.ReorderCodes {
field public static final int CURRENCY = 4099; // 0x1003
field public static final int DEFAULT = -1; // 0xffffffff
@@ -17270,7 +17253,6 @@ package android.icu.text {
method public java.lang.Number parse(java.lang.String) throws java.text.ParseException;
method public android.icu.util.CurrencyAmount parseCurrency(java.lang.CharSequence, java.text.ParsePosition);
method public final java.lang.Object parseObject(java.lang.String, java.text.ParsePosition);
- method public static java.lang.Object registerFactory(android.icu.text.NumberFormat.NumberFormatFactory);
method public void setContext(android.icu.text.DisplayContext);
method public void setCurrency(android.icu.util.Currency);
method public void setGroupingUsed(boolean);
@@ -17281,7 +17263,6 @@ package android.icu.text {
method public void setParseIntegerOnly(boolean);
method public void setParseStrict(boolean);
method public void setRoundingMode(int);
- method public static boolean unregister(java.lang.Object);
field public static final int ACCOUNTINGCURRENCYSTYLE = 7; // 0x7
field public static final int CASHCURRENCYSTYLE = 8; // 0x8
field public static final int CURRENCYSTYLE = 1; // 0x1
@@ -17310,28 +17291,6 @@ package android.icu.text {
field public static final android.icu.text.NumberFormat.Field SIGN;
}
- public static abstract class NumberFormat.NumberFormatFactory {
- ctor protected NumberFormat.NumberFormatFactory();
- method public android.icu.text.NumberFormat createFormat(android.icu.util.ULocale, int);
- method public android.icu.text.NumberFormat createFormat(java.util.Locale, int);
- method public abstract java.util.Set<java.lang.String> getSupportedLocaleNames();
- method public boolean visible();
- field public static final int FORMAT_CURRENCY = 1; // 0x1
- field public static final int FORMAT_INTEGER = 4; // 0x4
- field public static final int FORMAT_NUMBER = 0; // 0x0
- field public static final int FORMAT_PERCENT = 2; // 0x2
- field public static final int FORMAT_SCIENTIFIC = 3; // 0x3
- }
-
- public static abstract class NumberFormat.SimpleNumberFormatFactory extends android.icu.text.NumberFormat.NumberFormatFactory {
- ctor public NumberFormat.SimpleNumberFormatFactory(java.util.Locale);
- ctor public NumberFormat.SimpleNumberFormatFactory(java.util.Locale, boolean);
- ctor public NumberFormat.SimpleNumberFormatFactory(android.icu.util.ULocale);
- ctor public NumberFormat.SimpleNumberFormatFactory(android.icu.util.ULocale, boolean);
- method public final java.util.Set<java.lang.String> getSupportedLocaleNames();
- method public final boolean visible();
- }
-
public class NumberingSystem {
ctor public NumberingSystem();
method public static java.lang.String[] getAvailableNames();
@@ -18260,8 +18219,6 @@ package android.icu.util {
method public java.lang.String getSymbol(java.util.Locale);
method public java.lang.String getSymbol(android.icu.util.ULocale);
method public static boolean isAvailable(java.lang.String, java.util.Date, java.util.Date);
- method public static java.lang.Object registerInstance(android.icu.util.Currency, android.icu.util.ULocale);
- method public static boolean unregister(java.lang.Object);
field public static final int LONG_NAME = 1; // 0x1
field public static final int PLURAL_LONG_NAME = 2; // 0x2
field public static final int SYMBOL_NAME = 0; // 0x0
@@ -31674,7 +31631,7 @@ package android.provider {
public static final class ContactsContract.Directory implements android.provider.BaseColumns {
method public static boolean isEnterpriseDirectoryId(long);
- method public static boolean isRemoteDirectory(long);
+ method public static boolean isRemoteDirectoryId(long);
method public static void notifyDirectoryChange(android.content.ContentResolver);
field public static final java.lang.String ACCOUNT_NAME = "accountName";
field public static final java.lang.String ACCOUNT_TYPE = "accountType";
@@ -31767,6 +31724,8 @@ package android.provider {
field public static final java.lang.String EXTRA_RECIPIENT_CONTACT_NAME = "android.provider.extra.RECIPIENT_CONTACT_NAME";
field public static final java.lang.String EXTRA_RECIPIENT_CONTACT_URI = "android.provider.extra.RECIPIENT_CONTACT_URI";
field public static final java.lang.String INVITE_CONTACT = "com.android.contacts.action.INVITE_CONTACT";
+ field public static final java.lang.String METADATA_ACCOUNT_TYPE = "android.provider.account_type";
+ field public static final java.lang.String METADATA_MIMETYPE = "android.provider.mimetype";
field public static final java.lang.String SEARCH_SUGGESTION_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CLICKED";
field public static final java.lang.String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED";
field public static final java.lang.String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = "android.provider.Contacts.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED";
@@ -32516,6 +32475,7 @@ package android.provider {
field public static final java.lang.String ACTION_VOICE_INPUT_SETTINGS = "android.settings.VOICE_INPUT_SETTINGS";
field public static final java.lang.String ACTION_VPN_SETTINGS = "android.settings.VPN_SETTINGS";
field public static final java.lang.String ACTION_VR_LISTENER_SETTINGS = "android.settings.VR_LISTENER_SETTINGS";
+ field public static final java.lang.String ACTION_WEBVIEW_SETTINGS = "android.settings.WEBVIEW_SETTINGS";
field public static final java.lang.String ACTION_WIFI_IP_SETTINGS = "android.settings.WIFI_IP_SETTINGS";
field public static final java.lang.String ACTION_WIFI_SETTINGS = "android.settings.WIFI_SETTINGS";
field public static final java.lang.String ACTION_WIRELESS_SETTINGS = "android.settings.WIRELESS_SETTINGS";
@@ -33047,7 +33007,6 @@ package android.provider {
field public static final java.lang.String SMS_CARRIER_PROVISION_ACTION = "android.provider.Telephony.SMS_CARRIER_PROVISION";
field public static final java.lang.String SMS_CB_RECEIVED_ACTION = "android.provider.Telephony.SMS_CB_RECEIVED";
field public static final java.lang.String SMS_DELIVER_ACTION = "android.provider.Telephony.SMS_DELIVER";
- field public static final java.lang.String SMS_EMERGENCY_CB_RECEIVED_ACTION = "android.provider.Telephony.SMS_EMERGENCY_CB_RECEIVED";
field public static final java.lang.String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
field public static final java.lang.String SMS_REJECTED_ACTION = "android.provider.Telephony.SMS_REJECTED";
field public static final java.lang.String SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED_ACTION = "android.provider.Telephony.SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED";
diff --git a/api/test-removed.txt b/api/test-removed.txt
index de8a7244d388..f9fce40f642d 100644
--- a/api/test-removed.txt
+++ b/api/test-removed.txt
@@ -368,6 +368,10 @@ package android.provider {
field public static final java.lang.String VOLUME_VOICE = "volume_voice";
}
+ public static final class Telephony.Sms.Intents {
+ field public static final java.lang.String SMS_EMERGENCY_CB_RECEIVED_ACTION = "android.provider.Telephony.SMS_EMERGENCY_CB_RECEIVED";
+ }
+
}
package android.test.mock {
diff --git a/cmds/am/src/com/android/commands/am/Am.java b/cmds/am/src/com/android/commands/am/Am.java
index 0bcee86be7d8..8ccd5d2ebcba 100644
--- a/cmds/am/src/com/android/commands/am/Am.java
+++ b/cmds/am/src/com/android/commands/am/Am.java
@@ -1598,10 +1598,10 @@ public class Am extends BaseCommand {
}
System.out.println("Performing idle maintenance...");
- Intent intent = new Intent(
- "com.android.server.task.controllers.IdleController.ACTION_TRIGGER_IDLE");
- mAm.broadcastIntent(null, intent, null, null, 0, null, null, null,
- android.app.AppOpsManager.OP_NONE, null, true, false, UserHandle.USER_ALL);
+ try {
+ mAm.sendIdleJobTrigger();
+ } catch (RemoteException e) {
+ }
}
private void runScreenCompat() throws Exception {
diff --git a/core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl b/core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl
index d5e8a112a485..3783fcac5569 100644
--- a/core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl
+++ b/core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl
@@ -65,7 +65,7 @@ interface IAccessibilityServiceConnection {
boolean performGlobalAction(int action);
- oneway void disableSelf();
+ void disableSelf();
oneway void setOnKeyEventResult(boolean handled, int sequence);
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index b5490cf239ea..9b4c8bd070d8 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -29,6 +29,7 @@ import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.StyleRes;
import android.annotation.SystemApi;
+import android.app.VoiceInteractor.Request;
import android.app.admin.DevicePolicyManager;
import android.app.assist.AssistContent;
import android.content.ComponentCallbacks2;
@@ -1272,6 +1273,12 @@ public class Activity extends ContextThemeWrapper
}
void setVoiceInteractor(IVoiceInteractor voiceInteractor) {
+ if (mVoiceInteractor != null) {
+ for (Request activeRequest: mVoiceInteractor.getActiveRequests()) {
+ activeRequest.cancel();
+ activeRequest.clear();
+ }
+ }
if (voiceInteractor == null) {
mVoiceInteractor = null;
} else {
@@ -6217,17 +6224,59 @@ public class Activity extends ContextThemeWrapper
}
/**
- * Enable or disable virtual reality (VR) mode.
+ * Enable or disable virtual reality (VR) mode for this Activity.
+ *
+ * <p>VR mode is a hint to Android system to switch to a mode optimized for VR applications
+ * while this Activity has user focus.</p>
+ *
+ * <p>It is recommended that applications additionally declare
+ * {@link android.R.attr#enableVrMode} in their manifest to allow for smooth activity
+ * transitions when switching between VR activities.</p>
*
- * <p>VR mode is a hint to Android system services to switch to a mode optimized for
- * high-performance stereoscopic rendering. This mode will be enabled while this Activity has
- * focus.</p>
+ * <p>If the requested {@link android.service.vr.VrListenerService} component is not available,
+ * VR mode will not be started. Developers can handle this case as follows:</p>
+ *
+ * <pre>
+ * String servicePackage = "com.whatever.app";
+ * String serviceClass = "com.whatever.app.MyVrListenerService";
+ *
+ * // Name of the component of the VrListenerService to start.
+ * ComponentName serviceComponent = new ComponentName(servicePackage, serviceClass);
+ *
+ * try {
+ * setVrModeEnabled(true, myComponentName);
+ * } catch (PackageManager.NameNotFoundException e) {
+ * List&lt;ApplicationInfo> installed = getPackageManager().getInstalledApplications(0);
+ * boolean isInstalled = false;
+ * for (ApplicationInfo app : installed) {
+ * if (app.packageName.equals(servicePackage)) {
+ * isInstalled = true;
+ * break;
+ * }
+ * }
+ * if (isInstalled) {
+ * // Package is installed, but not enabled in Settings. Let user enable it.
+ * startActivity(new Intent(Settings.ACTION_VR_LISTENER_SETTINGS));
+ * } else {
+ * // Package is not installed. Send an intent to download this.
+ * sentIntentToLaunchAppStore(servicePackage);
+ * }
+ * }
+ * </pre>
*
* @param enabled {@code true} to enable this mode.
* @param requestedComponent the name of the component to use as a
* {@link android.service.vr.VrListenerService} while VR mode is enabled.
*
- * @throws android.content.pm.PackageManager.NameNotFoundException;
+ * @throws android.content.pm.PackageManager.NameNotFoundException if the given component
+ * to run as a {@link android.service.vr.VrListenerService} is not installed, or has
+ * not been enabled in user settings.
+ *
+ * @see android.content.pm.PackageManager#FEATURE_VR_MODE
+ * @see android.content.pm.PackageManager#FEATURE_VR_MODE_HIGH_PERFORMANCE
+ * @see android.service.vr.VrListenerService
+ * @see android.provider.Settings#ACTION_VR_LISTENER_SETTINGS
+ * @see android.R.attr#enableVrMode
*/
public void setVrModeEnabled(boolean enabled, @NonNull ComponentName requestedComponent)
throws PackageManager.NameNotFoundException {
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index 1a7c7467633f..6b628370ba28 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -1527,7 +1527,9 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM
case SET_LOCK_SCREEN_SHOWN_TRANSACTION: {
data.enforceInterface(IActivityManager.descriptor);
- setLockScreenShown(data.readInt() != 0);
+ final boolean showing = data.readInt() != 0;
+ final boolean occluded = data.readInt() != 0;
+ setLockScreenShown(showing, occluded);
reply.writeNoException();
return true;
}
@@ -2968,6 +2970,12 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM
reply.writeNoException();
return true;
}
+ case SEND_IDLE_JOB_TRIGGER_TRANSACTION: {
+ data.enforceInterface(IActivityManager.descriptor);
+ sendIdleJobTrigger();
+ reply.writeNoException();
+ return true;
+ }
}
return super.onTransact(code, data, reply, flags);
@@ -4922,12 +4930,13 @@ class ActivityManagerProxy implements IActivityManager
reply.recycle();
return pfd;
}
- public void setLockScreenShown(boolean shown) throws RemoteException
+ public void setLockScreenShown(boolean showing, boolean occluded) throws RemoteException
{
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
- data.writeInt(shown ? 1 : 0);
+ data.writeInt(showing ? 1 : 0);
+ data.writeInt(occluded ? 1 : 0);
mRemote.transact(SET_LOCK_SCREEN_SHOWN_TRANSACTION, data, reply, 0);
reply.readException();
data.recycle();
@@ -6244,6 +6253,16 @@ class ActivityManagerProxy implements IActivityManager
reply.recycle();
}
+ public void sendIdleJobTrigger() throws RemoteException {
+ Parcel data = Parcel.obtain();
+ Parcel reply = Parcel.obtain();
+ data.writeInterfaceToken(IActivityManager.descriptor);
+ mRemote.transact(SEND_IDLE_JOB_TRIGGER_TRANSACTION, data, reply, 0);
+ reply.readException();
+ data.recycle();
+ reply.recycle();
+ }
+
public IActivityContainer createVirtualActivityContainer(IBinder parentActivityToken,
IActivityContainerCallback callback) throws RemoteException {
Parcel data = Parcel.obtain();
diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java
index 051295e450fa..a30f6299a4d9 100644
--- a/core/java/android/app/ActivityOptions.java
+++ b/core/java/android/app/ActivityOptions.java
@@ -20,6 +20,7 @@ import static android.app.ActivityManager.DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT;
import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
import android.annotation.Nullable;
+import android.annotation.TestApi;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
@@ -939,6 +940,7 @@ public class ActivityOptions {
}
/** @hide */
+ @TestApi
public void setLaunchStackId(int launchStackId) {
mLaunchStackId = launchStackId;
}
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 6d805eda2b38..cf2ef4521291 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -2693,52 +2693,26 @@ public final class ActivityThread {
!r.activity.mFinished && !r.startsNotResumed, r.lastProcessedSeq, reason);
if (!r.activity.mFinished && r.startsNotResumed) {
- // The activity manager actually wants this one to start out
- // paused, because it needs to be visible but isn't in the
- // foreground. We accomplish this by going through the
- // normal startup (because activities expect to go through
- // onResume() the first time they run, before their window
- // is displayed), and then pausing it. However, in this case
- // we do -not- need to do the full pause cycle (of freezing
- // and such) because the activity manager assumes it can just
- // retain the current state it has.
- try {
- r.activity.mCalled = false;
- mInstrumentation.callActivityOnPause(r.activity);
- EventLog.writeEvent(LOG_AM_ON_PAUSE_CALLED, UserHandle.myUserId(),
- r.activity.getComponentName().getClassName(), reason);
- // We need to keep around the original state, in case
- // we need to be created again. But we only do this
- // for pre-Honeycomb apps, which always save their state
- // when pausing, so we can not have them save their state
- // when restarting from a paused state. For HC and later,
- // we want to (and can) let the state be saved as the normal
- // part of stopping the activity.
- if (r.isPreHoneycomb()) {
- r.state = oldState;
- }
- if (!r.activity.mCalled) {
- throw new SuperNotCalledException(
- "Activity " + r.intent.getComponent().toShortString() +
- " did not call through to super.onPause()");
- }
-
- } catch (SuperNotCalledException e) {
- throw e;
-
- } catch (Exception e) {
- if (!mInstrumentation.onException(r.activity, e)) {
- throw new RuntimeException(
- "Unable to pause activity "
- + r.intent.getComponent().toShortString()
- + ": " + e.toString(), e);
- }
+ // The activity manager actually wants this one to start out paused, because it
+ // needs to be visible but isn't in the foreground. We accomplish this by going
+ // through the normal startup (because activities expect to go through onResume()
+ // the first time they run, before their window is displayed), and then pausing it.
+ // However, in this case we do -not- need to do the full pause cycle (of freezing
+ // and such) because the activity manager assumes it can just retain the current
+ // state it has.
+ performPauseActivityIfNeeded(r, reason);
+
+ // We need to keep around the original state, in case we need to be created again.
+ // But we only do this for pre-Honeycomb apps, which always save their state when
+ // pausing, so we can not have them save their state when restarting from a paused
+ // state. For HC and later, we want to (and can) let the state be saved as the
+ // normal part of stopping the activity.
+ if (r.isPreHoneycomb()) {
+ r.state = oldState;
}
- r.paused = true;
}
} else {
- // If there was an error, for any reason, tell the activity
- // manager to stop us.
+ // If there was an error, for any reason, tell the activity manager to stop us.
try {
ActivityManagerNative.getDefault()
.finishActivity(r.token, Activity.RESULT_CANCELED, null,
@@ -3679,34 +3653,13 @@ public final class ActivityThread {
if (finished) {
r.activity.mFinished = true;
}
- try {
- // Next have the activity save its current state and managed dialogs...
- if (!r.activity.mFinished && saveState) {
- callCallActivityOnSaveInstanceState(r);
- }
- // Now we are idle.
- r.activity.mCalled = false;
- mInstrumentation.callActivityOnPause(r.activity);
- EventLog.writeEvent(LOG_AM_ON_PAUSE_CALLED, UserHandle.myUserId(),
- r.activity.getComponentName().getClassName(), reason);
- if (!r.activity.mCalled) {
- throw new SuperNotCalledException(
- "Activity " + r.intent.getComponent().toShortString() +
- " did not call through to super.onPause()");
- }
- } catch (SuperNotCalledException e) {
- throw e;
-
- } catch (Exception e) {
- if (!mInstrumentation.onException(r.activity, e)) {
- throw new RuntimeException(
- "Unable to pause activity "
- + r.intent.getComponent().toShortString()
- + ": " + e.toString(), e);
- }
+ // Next have the activity save its current state and managed dialogs...
+ if (!r.activity.mFinished && saveState) {
+ callCallActivityOnSaveInstanceState(r);
}
- r.paused = true;
+
+ performPauseActivityIfNeeded(r, reason);
// Notify any outstanding on paused listeners
ArrayList<OnActivityPausedListener> listeners;
@@ -3721,6 +3674,32 @@ public final class ActivityThread {
return !r.activity.mFinished && saveState ? r.state : null;
}
+ private void performPauseActivityIfNeeded(ActivityClientRecord r, String reason) {
+ if (r.paused) {
+ // You are already paused silly...
+ return;
+ }
+
+ try {
+ r.activity.mCalled = false;
+ mInstrumentation.callActivityOnPause(r.activity);
+ EventLog.writeEvent(LOG_AM_ON_PAUSE_CALLED, UserHandle.myUserId(),
+ r.activity.getComponentName().getClassName(), reason);
+ if (!r.activity.mCalled) {
+ throw new SuperNotCalledException("Activity " + safeToComponentShortString(r.intent)
+ + " did not call through to super.onPause()");
+ }
+ } catch (SuperNotCalledException e) {
+ throw e;
+ } catch (Exception e) {
+ if (!mInstrumentation.onException(r.activity, e)) {
+ throw new RuntimeException("Unable to pause activity "
+ + safeToComponentShortString(r.intent) + ": " + e.toString(), e);
+ }
+ }
+ r.paused = true;
+ }
+
final void performStopActivity(IBinder token, boolean saveState, String reason) {
ActivityClientRecord r = mActivities.get(token);
performStopActivityInner(r, null, false, saveState, reason);
@@ -3797,6 +3776,9 @@ public final class ActivityThread {
Slog.e(TAG, r.getStateString());
}
+ // One must first be paused before stopped...
+ performPauseActivityIfNeeded(r, reason);
+
if (info != null) {
try {
// First create a thumbnail for the activity...
@@ -3836,8 +3818,6 @@ public final class ActivityThread {
EventLog.writeEvent(LOG_AM_ON_STOP_CALLED, UserHandle.myUserId(),
r.activity.getComponentName().getClassName(), reason);
}
-
- r.paused = true;
}
}
@@ -4110,29 +4090,9 @@ public final class ActivityThread {
if (finishing) {
r.activity.mFinished = true;
}
- if (!r.paused) {
- try {
- r.activity.mCalled = false;
- mInstrumentation.callActivityOnPause(r.activity);
- EventLog.writeEvent(LOG_AM_ON_PAUSE_CALLED, UserHandle.myUserId(),
- r.activity.getComponentName().getClassName(), "destroy");
- if (!r.activity.mCalled) {
- throw new SuperNotCalledException(
- "Activity " + safeToComponentShortString(r.intent)
- + " did not call through to super.onPause()");
- }
- } catch (SuperNotCalledException e) {
- throw e;
- } catch (Exception e) {
- if (!mInstrumentation.onException(r.activity, e)) {
- throw new RuntimeException(
- "Unable to pause activity "
- + safeToComponentShortString(r.intent)
- + ": " + e.toString(), e);
- }
- }
- r.paused = true;
- }
+
+ performPauseActivityIfNeeded(r, "destroy");
+
if (!r.stopped) {
try {
r.activity.performStop(r.mPreserveWindow);
@@ -4208,7 +4168,7 @@ public final class ActivityThread {
}
IBinder wtoken = v.getWindowToken();
if (r.activity.mWindowAdded) {
- if (r.onlyLocalRequest || r.mPreserveWindow) {
+ if (r.mPreserveWindow) {
// Hold off on removing this until the new activity's
// window is being added.
r.mPendingRemoveWindow = r.window;
@@ -4443,15 +4403,20 @@ public final class ActivityThread {
// be replaced and defer requests to destroy or hide them. This way we can achieve
// visual continuity. It's important that we do this here prior to pause and destroy
// as that is when we may hide or remove the child views.
+ //
+ // There is another scenario, if we have decided locally to relaunch the app from a
+ // call to recreate, then none of the windows will be prepared for replacement or
+ // preserved by the server, so we want to notify it that we are preparing to replace
+ // everything
try {
- if (r.mPreserveWindow) {
- WindowManagerGlobal.getWindowSession().prepareToReplaceChildren(r.token);
+ if (r.mPreserveWindow || r.onlyLocalRequest) {
+ WindowManagerGlobal.getWindowSession().prepareToReplaceWindows(
+ r.token, !r.onlyLocalRequest);
}
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
-
// Need to ensure state is saved.
if (!r.paused) {
performPauseActivity(r.token, false, r.isPreHoneycomb(), "handleRelaunchActivity");
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java
index 783c37de1552..c62c1115fe81 100644
--- a/core/java/android/app/AppOpsManager.java
+++ b/core/java/android/app/AppOpsManager.java
@@ -105,7 +105,7 @@ public class AppOpsManager {
// when adding one of these:
// - increment _NUM_OP
- // - add rows to sOpToSwitch, sOpToString, sOpNames, sOpPerms, sOpDefaultMode
+ // - add rows to sOpToSwitch, sOpToString, sOpNames, sOpToPerms, sOpDefault
// - add descriptive strings to Settings/res/values/arrays.xml
// - add the op to the appropriate template in AppOpsState.OpsTemplate (settings app)
@@ -339,6 +339,43 @@ public class AppOpsManager {
public static final String OPSTR_GET_ACCOUNTS
= "android:get_accounts";
+ private static final int[] RUNTIME_PERMISSIONS_OPS = {
+ // Contacts
+ OP_READ_CONTACTS,
+ OP_WRITE_CONTACTS,
+ OP_GET_ACCOUNTS,
+ // Calendar
+ OP_READ_CALENDAR,
+ OP_WRITE_CALENDAR,
+ // SMS
+ OP_SEND_SMS,
+ OP_RECEIVE_SMS,
+ OP_READ_SMS,
+ OP_RECEIVE_WAP_PUSH,
+ OP_RECEIVE_MMS,
+ OP_READ_CELL_BROADCASTS,
+ // Storage
+ OP_READ_EXTERNAL_STORAGE,
+ OP_WRITE_EXTERNAL_STORAGE,
+ // Location
+ OP_COARSE_LOCATION,
+ OP_FINE_LOCATION,
+ // Phone
+ OP_READ_PHONE_STATE,
+ OP_CALL_PHONE,
+ OP_READ_CALL_LOG,
+ OP_WRITE_CALL_LOG,
+ OP_ADD_VOICEMAIL,
+ OP_USE_SIP,
+ OP_PROCESS_OUTGOING_CALLS,
+ // Microphone
+ OP_RECORD_AUDIO,
+ // Camera
+ OP_CAMERA,
+ // Body sensors
+ OP_BODY_SENSORS
+ };
+
/**
* This maps each operation to the operation that serves as the
* switch to determine whether it is allowed. Generally this is
@@ -922,7 +959,7 @@ public class AppOpsManager {
/**
* Mapping from a permission to the corresponding app op.
*/
- private static HashMap<String, Integer> sPermToOp = new HashMap<>();
+ private static HashMap<String, Integer> sRuntimePermToOp = new HashMap<>();
static {
if (sOpToSwitch.length != _NUM_OP) {
@@ -962,9 +999,9 @@ public class AppOpsManager {
sOpStrToOp.put(sOpToString[i], i);
}
}
- for (int i=0; i<_NUM_OP; i++) {
- if (sOpPerms[i] != null) {
- sPermToOp.put(sOpPerms[i], i);
+ for (int op : RUNTIME_PERMISSIONS_OPS) {
+ if (sOpPerms[op] != null) {
+ sRuntimePermToOp.put(sOpPerms[op], op);
}
}
}
@@ -1016,10 +1053,12 @@ public class AppOpsManager {
/**
* Retrieve the app op code for a permission, or null if there is not one.
+ * This API is intended to be used for mapping runtime permissions to the
+ * corresponding app op.
* @hide
*/
public static int permissionToOpCode(String permission) {
- Integer boxedOpCode = sPermToOp.get(permission);
+ Integer boxedOpCode = sRuntimePermToOp.get(permission);
return boxedOpCode != null ? boxedOpCode : OP_NONE;
}
@@ -1352,12 +1391,14 @@ public class AppOpsManager {
* Gets the app op name associated with a given permission.
* The app op name is one of the public constants defined
* in this class such as {@link #OPSTR_COARSE_LOCATION}.
+ * This API is intended to be used for mapping runtime
+ * permissions to the corresponding app op.
*
* @param permission The permission.
* @return The app op associated with the permission or null.
*/
public static String permissionToOp(String permission) {
- final Integer opCode = sPermToOp.get(permission);
+ final Integer opCode = sRuntimePermToOp.get(permission);
if (opCode == null) {
return null;
}
diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java
index 55ce6c2a9804..849fcec5a01a 100644
--- a/core/java/android/app/IActivityManager.java
+++ b/core/java/android/app/IActivityManager.java
@@ -331,7 +331,7 @@ public interface IActivityManager extends IInterface {
public void forceStopPackage(final String packageName, int userId) throws RemoteException;
// Note: probably don't want to allow applications access to these.
- public void setLockScreenShown(boolean shown) throws RemoteException;
+ public void setLockScreenShown(boolean showing, boolean occluded) throws RemoteException;
public void unhandledBack() throws RemoteException;
public ParcelFileDescriptor openContentUri(Uri uri) throws RemoteException;
@@ -546,6 +546,8 @@ public interface IActivityManager extends IInterface {
public void performIdleMaintenance() throws RemoteException;
+ public void sendIdleJobTrigger() throws RemoteException;
+
public IActivityContainer createVirtualActivityContainer(IBinder parentActivityToken,
IActivityContainerCallback callback) throws RemoteException;
@@ -1035,4 +1037,5 @@ public interface IActivityManager extends IInterface {
int SWAP_DOCKED_AND_FULLSCREEN_STACK = IBinder.FIRST_CALL_TRANSACTION + 372;
int NOTIFY_LOCKED_PROFILE = IBinder.FIRST_CALL_TRANSACTION + 373;
int START_CONFIRM_DEVICE_CREDENTIAL_INTENT = IBinder.FIRST_CALL_TRANSACTION + 374;
+ int SEND_IDLE_JOB_TRIGGER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 375;
}
diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java
index d8a3d4f3fa07..f41117858598 100644
--- a/core/java/android/app/ResourcesManager.java
+++ b/core/java/android/app/ResourcesManager.java
@@ -451,15 +451,8 @@ public class ResourcesManager {
}
synchronized (this) {
- final ActivityResources activityResources =
- getOrCreateActivityResourcesStructLocked(
- activityToken);
-
- if (overrideConfig != null) {
- activityResources.overrideConfig.setTo(overrideConfig);
- } else {
- activityResources.overrideConfig.setToDefaults();
- }
+ // Force the creation of an ActivityResourcesStruct.
+ getOrCreateActivityResourcesStructLocked(activityToken);
}
// Update any existing Activity Resources references.
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 0ca2e14ade47..451acf31447c 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -2998,6 +2998,19 @@ public class DevicePolicyManager {
/**
* Called by a device or profile owner to configure an always-on VPN connection through a
+ * specific application for the current user.
+ *
+ * @deprecated this version only exists for compability with previous developer preview builds.
+ * TODO: delete once there are no longer any live references.
+ * @hide
+ */
+ public void setAlwaysOnVpnPackage(@NonNull ComponentName admin, @Nullable String vpnPackage)
+ throws NameNotFoundException, UnsupportedOperationException {
+ setAlwaysOnVpnPackage(admin, vpnPackage, /* lockdownEnabled */ true);
+ }
+
+ /**
+ * Called by a device or profile owner to configure an always-on VPN connection through a
* specific application for the current user. This connection is automatically granted and
* persisted after a reboot.
* <p>
@@ -3006,7 +3019,10 @@ public class DevicePolicyManager {
* fail.
*
* @param vpnPackage The package name for an installed VPN app on the device, or {@code null} to
- * remove an existing always-on VPN configuration.
+ * remove an existing always-on VPN configuration.
+ * @param lockdownEnabled {@code true} to disallow networking when the VPN is not connected or
+ * {@code false} otherwise. This carries the risk that any failure of the VPN provider
+ * could break networking for all apps. This has no effect when clearing.
* @return {@code true} if the package is set as always-on VPN controller; {@code false}
* otherwise.
* @throws SecurityException if {@code admin} is not a device or a profile owner.
@@ -3014,12 +3030,13 @@ public class DevicePolicyManager {
* @throws UnsupportedOperationException if {@code vpnPackage} exists but does not support being
* set as always-on, or if always-on VPN is not available.
*/
- public void setAlwaysOnVpnPackage(@NonNull ComponentName admin, @Nullable String vpnPackage)
+ public void setAlwaysOnVpnPackage(@NonNull ComponentName admin, @Nullable String vpnPackage,
+ boolean lockdownEnabled)
throws NameNotFoundException, UnsupportedOperationException {
throwIfParentInstance("setAlwaysOnVpnPackage");
if (mService != null) {
try {
- if (!mService.setAlwaysOnVpnPackage(admin, vpnPackage)) {
+ if (!mService.setAlwaysOnVpnPackage(admin, vpnPackage, lockdownEnabled)) {
throw new NameNotFoundException(vpnPackage);
}
} catch (RemoteException e) {
@@ -6133,23 +6150,28 @@ public class DevicePolicyManager {
/**
* Called by device owners to retrieve device logs from before the device's last reboot.
* <p>
- * <strong> The device logs are retrieved from a RAM region which is not guaranteed to be
- * corruption-free during power cycles, due to hardware variations and limitations. As a result,
- * this API is provided as best-effort and the returned logs may be empty or contain corrupted
- * data. </strong>
+ * <strong> This API is not supported on all devices. Calling this API on unsupported devices
+ * will result in {@code null} being returned. The device logs are retrieved from a RAM region
+ * which is not guaranteed to be corruption-free during power cycles, as a result be cautious
+ * about data corruption when parsing. </strong>
* <p>
* There must be only one user on the device, managed by the device owner. Otherwise a
* {@link SecurityException} will be thrown.
*
* @param admin Which device owner this request is associated with.
- * @return Device logs from before the latest reboot of the system.
+ * @return Device logs from before the latest reboot of the system, or {@code null} if this API
+ * is not supported on the device.
* @throws SecurityException if {@code admin} is not a device owner.
*/
public List<SecurityEvent> retrievePreRebootSecurityLogs(@NonNull ComponentName admin) {
throwIfParentInstance("retrievePreRebootSecurityLogs");
try {
ParceledListSlice<SecurityEvent> list = mService.retrievePreRebootSecurityLogs(admin);
- return list.getList();
+ if (list != null) {
+ return list.getList();
+ } else {
+ return null;
+ }
} catch (RemoteException re) {
throw re.rethrowFromSystemServer();
}
diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl
index 989e61341363..447ee29bd967 100644
--- a/core/java/android/app/admin/IDevicePolicyManager.aidl
+++ b/core/java/android/app/admin/IDevicePolicyManager.aidl
@@ -157,7 +157,7 @@ interface IDevicePolicyManager {
void setCertInstallerPackage(in ComponentName who, String installerPackage);
String getCertInstallerPackage(in ComponentName who);
- boolean setAlwaysOnVpnPackage(in ComponentName who, String vpnPackage);
+ boolean setAlwaysOnVpnPackage(in ComponentName who, String vpnPackage, boolean lockdown);
String getAlwaysOnVpnPackage(in ComponentName who);
void addPersistentPreferredActivity(in ComponentName admin, in IntentFilter filter, in ComponentName activity);
diff --git a/core/java/android/app/backup/BackupAgent.java b/core/java/android/app/backup/BackupAgent.java
index 8e515e2b579c..bc8280681e4a 100644
--- a/core/java/android/app/backup/BackupAgent.java
+++ b/core/java/android/app/backup/BackupAgent.java
@@ -488,9 +488,11 @@ public abstract class BackupAgent extends ContextWrapper {
* to place it with the proper location and permissions on the device where the
* data is restored.
*
- * <p class="note">It is safe to explicitly back up files underneath your application's
- * {@link #getNoBackupFilesDir()} directory, and they will be restored to that
- * location correctly.
+ * <p class="note">Attempting to back up files in directories that are ignored by
+ * the backup system will have no effect. For example, if the app calls this method
+ * with a file inside the {@link #getNoBackupFilesDir()} directory, it will be ignored.
+ * See {@link #onFullBackup(FullBackupDataOutput) for details on what directories
+ * are excluded from backups.
*
* @param file The file to be backed up. The file must exist and be readable by
* the caller.
diff --git a/core/java/android/bluetooth/le/ScanFilter.java b/core/java/android/bluetooth/le/ScanFilter.java
index 92a38171a160..17a802d59f4f 100644
--- a/core/java/android/bluetooth/le/ScanFilter.java
+++ b/core/java/android/bluetooth/le/ScanFilter.java
@@ -385,9 +385,13 @@ public final class ScanFilter implements Parcelable {
@Override
public int hashCode() {
- return Objects.hash(mDeviceName, mDeviceAddress, mManufacturerId, mManufacturerData,
- mManufacturerDataMask, mServiceDataUuid, mServiceData, mServiceDataMask,
- mServiceUuid, mServiceUuidMask);
+ return Objects.hash(mDeviceName, mDeviceAddress, mManufacturerId,
+ Arrays.hashCode(mManufacturerData),
+ Arrays.hashCode(mManufacturerDataMask),
+ mServiceDataUuid,
+ Arrays.hashCode(mServiceData),
+ Arrays.hashCode(mServiceDataMask),
+ mServiceUuid, mServiceUuidMask);
}
@Override
@@ -401,10 +405,10 @@ public final class ScanFilter implements Parcelable {
ScanFilter other = (ScanFilter) obj;
return Objects.equals(mDeviceName, other.mDeviceName) &&
Objects.equals(mDeviceAddress, other.mDeviceAddress) &&
- mManufacturerId == other.mManufacturerId &&
+ mManufacturerId == other.mManufacturerId &&
Objects.deepEquals(mManufacturerData, other.mManufacturerData) &&
Objects.deepEquals(mManufacturerDataMask, other.mManufacturerDataMask) &&
- Objects.deepEquals(mServiceDataUuid, other.mServiceDataUuid) &&
+ Objects.equals(mServiceDataUuid, other.mServiceDataUuid) &&
Objects.deepEquals(mServiceData, other.mServiceData) &&
Objects.deepEquals(mServiceDataMask, other.mServiceDataMask) &&
Objects.equals(mServiceUuid, other.mServiceUuid) &&
diff --git a/core/java/android/content/ClipData.java b/core/java/android/content/ClipData.java
index f71cfe98c62c..c365e9ee9549 100644
--- a/core/java/android/content/ClipData.java
+++ b/core/java/android/content/ClipData.java
@@ -18,13 +18,11 @@ package android.content;
import static android.content.ContentProvider.maybeAddUserId;
-import android.content.pm.PackageManager;
import android.content.res.AssetFileDescriptor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
-import android.os.Process;
import android.os.StrictMode;
import android.text.Html;
import android.text.Spannable;
@@ -742,20 +740,15 @@ public class ClipData implements Parcelable {
if ("content".equals(uri.getScheme())) {
String realType = resolver.getType(uri);
mimeTypes = resolver.getStreamTypes(uri, "*/*");
- if (mimeTypes == null) {
- if (realType != null) {
- mimeTypes = new String[] { realType, ClipDescription.MIMETYPE_TEXT_URILIST };
- }
- } else {
- String[] tmp = new String[mimeTypes.length + (realType != null ? 2 : 1)];
- int i = 0;
- if (realType != null) {
+ if (realType != null) {
+ if (mimeTypes == null) {
+ mimeTypes = new String[] { realType };
+ } else {
+ String[] tmp = new String[mimeTypes.length + 1];
tmp[0] = realType;
- i++;
+ System.arraycopy(mimeTypes, 0, tmp, 1, mimeTypes.length);
+ mimeTypes = tmp;
}
- System.arraycopy(mimeTypes, 0, tmp, i, mimeTypes.length);
- tmp[i + mimeTypes.length] = ClipDescription.MIMETYPE_TEXT_URILIST;
- mimeTypes = tmp;
}
}
if (mimeTypes == null) {
@@ -787,9 +780,14 @@ public class ClipData implements Parcelable {
public ClipDescription getDescription() {
return mClipDescription;
}
-
+
/**
* Add a new Item to the overall ClipData container.
+ * <p> This method will <em>not</em> update the list of available MIME types in the
+ * {@link ClipDescription}. It should be used only when adding items which do not add new
+ * MIME types to this clip. If this is not the case, {@link #ClipData(CharSequence, String[],
+ * Item)} should be used with a complete list of MIME types.
+ * @param item Item to be added.
*/
public void addItem(Item item) {
if (item == null) {
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index a96da09cf67e..b06568ca0b2d 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -2180,22 +2180,37 @@ public abstract class PackageManager {
/**
* Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}:
- * The device implements a an optimized mode for virtual reality (VR) applications that handles
- * stereoscopic rendering of notifications, and may potentially also include optimizations to
- * reduce latency in the graphics, display, and sensor stacks.
+ * The device implements an optimized mode for virtual reality (VR) applications that handles
+ * stereoscopic rendering of notifications, and disables most monocular system UI components
+ * while a VR application has user focus.
+ * Devices declaring this feature must include an application implementing a
+ * {@link android.service.vr.VrListenerService} that can be targeted by VR applications via
+ * {@link android.app.Activity#setVrModeEnabled}.
*/
@SdkConstant(SdkConstantType.FEATURE)
public static final String FEATURE_VR_MODE = "android.software.vr.mode";
/**
* Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}:
- * The device implements {@link #FEATURE_VR_MODE} but additionally meets all CDD requirements
- * to be certified as a "VR Ready" device, which guarantees that the device is capable of
- * delivering consistent performance at a high framerate over an extended period of time for
- * typical VR application CPU/GPU workloads with a minimal number of frame drops, implements
- * {@link #FEATURE_HIFI_SENSORS} with a low sensor latency, implements an optimized render path
- * to minimize latency to draw to the device's main display, and includes optimizations to
- * lower display persistence to an acceptable level.
+ * The device implements {@link #FEATURE_VR_MODE} but additionally meets extra CDD requirements
+ * to provide a high-quality VR experience. In general, devices declaring this feature will
+ * additionally:
+ * <ul>
+ * <li>Deliver consistent performance at a high framerate over an extended period of time
+ * for typical VR application CPU/GPU workloads with a minimal number of frame drops for VR
+ * applications that have called
+ * {@link android.view.Window#setSustainedPerformanceMode}.</li>
+ * <li>Implement {@link #FEATURE_HIFI_SENSORS} and have a low sensor latency.</li>
+ * <li>Include optimizations to lower display persistence while running VR applications.</li>
+ * <li>Implement an optimized render path to minimize latency to draw to the device's main
+ * display.</li>
+ * <li>Include the following EGL extensions: EGL_ANDROID_create_native_client_buffer,
+ * EGL_ANDROID_front_buffer_auto_refresh, EGL_EXT_protected_content,
+ * EGL_KHR_mutable_render_buffer, EGL_KHR_reusable_sync, and EGL_KHR_wait_sync.</li>
+ * <li>Provide at least one CPU core that is reserved for use solely by the top, foreground
+ * VR application process for critical render threads while such an application is
+ * running.</li>
+ * </ul>
*/
@SdkConstant(SdkConstantType.FEATURE)
public static final String FEATURE_VR_MODE_HIGH_PERFORMANCE
diff --git a/core/java/android/hardware/soundtrigger/KeyphraseEnrollmentInfo.java b/core/java/android/hardware/soundtrigger/KeyphraseEnrollmentInfo.java
index 458c584084c9..f82c9e2b3f35 100644
--- a/core/java/android/hardware/soundtrigger/KeyphraseEnrollmentInfo.java
+++ b/core/java/android/hardware/soundtrigger/KeyphraseEnrollmentInfo.java
@@ -35,6 +35,7 @@ import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
+import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -105,7 +106,7 @@ public class KeyphraseEnrollmentInfo {
if (ris == null || ris.isEmpty()) {
// No application capable of enrolling for voice keyphrases is present.
mParseError = "No enrollment applications found";
- mKeyphrasePackageMap = null;
+ mKeyphrasePackageMap = Collections.<KeyphraseMetadata, String>emptyMap();
mKeyphrases = null;
return;
}
@@ -328,17 +329,15 @@ public class KeyphraseEnrollmentInfo {
* and locale, null otherwise.
*/
public KeyphraseMetadata getKeyphraseMetadata(String keyphrase, Locale locale) {
- if (mKeyphrases == null || mKeyphrases.length == 0) {
- Slog.w(TAG, "Enrollment application doesn't support keyphrases");
- return null;
- }
- for (KeyphraseMetadata keyphraseMetadata : mKeyphrases) {
- // Check if the given keyphrase is supported in the locale provided by
- // the enrollment application.
- if (keyphraseMetadata.supportsPhrase(keyphrase)
- && keyphraseMetadata.supportsLocale(locale)) {
- return keyphraseMetadata;
- }
+ if (mKeyphrases != null && mKeyphrases.length > 0) {
+ for (KeyphraseMetadata keyphraseMetadata : mKeyphrases) {
+ // Check if the given keyphrase is supported in the locale provided by
+ // the enrollment application.
+ if (keyphraseMetadata.supportsPhrase(keyphrase)
+ && keyphraseMetadata.supportsLocale(locale)) {
+ return keyphraseMetadata;
+ }
+ }
}
Slog.w(TAG, "No Enrollment application supports the given keyphrase/locale");
return null;
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 085b97cc0f6d..923be5e06582 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -1536,8 +1536,8 @@ public class InputMethodService extends AbstractInputMethodService {
// mode at this point.
return false;
}
- Configuration config = getResources().getConfiguration();
- if (config.keyboard != Configuration.KEYBOARD_NOKEYS) {
+ if (!mSettingsObserver.shouldShowImeWithHardKeyboard() &&
+ getResources().getConfiguration().keyboard != Configuration.KEYBOARD_NOKEYS) {
// And if the device has a hard keyboard, even if it is
// currently hidden, don't show the input method implicitly.
// These kinds of devices don't need it that much.
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index 933dddf4a948..43d9bf327a33 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -797,14 +797,16 @@ public class ConnectivityManager {
* @param userId The identifier of the user to set an always-on VPN for.
* @param vpnPackage The package name for an installed VPN app on the device, or {@code null}
* to remove an existing always-on VPN configuration.
-
+ * @param lockdownEnabled {@code true} to disallow networking when the VPN is not connected or
+ * {@code false} otherwise.
* @return {@code true} if the package is set as always-on VPN controller;
* {@code false} otherwise.
* @hide
*/
- public boolean setAlwaysOnVpnPackageForUser(int userId, @Nullable String vpnPackage) {
+ public boolean setAlwaysOnVpnPackageForUser(int userId, @Nullable String vpnPackage,
+ boolean lockdownEnabled) {
try {
- return mService.setAlwaysOnVpnPackage(userId, vpnPackage);
+ return mService.setAlwaysOnVpnPackage(userId, vpnPackage, lockdownEnabled);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/core/java/android/net/IConnectivityManager.aidl b/core/java/android/net/IConnectivityManager.aidl
index aec6b3ec23fe..0d518cc14049 100644
--- a/core/java/android/net/IConnectivityManager.aidl
+++ b/core/java/android/net/IConnectivityManager.aidl
@@ -122,7 +122,7 @@ interface IConnectivityManager
VpnInfo[] getAllVpnInfo();
boolean updateLockdownVpn();
- boolean setAlwaysOnVpnPackage(int userId, String packageName);
+ boolean setAlwaysOnVpnPackage(int userId, String packageName, boolean lockdown);
String getAlwaysOnVpnPackage(int userId);
int checkMobileProvisioning(int suggestedTimeOutMs);
diff --git a/core/java/android/net/INetworkPolicyListener.aidl b/core/java/android/net/INetworkPolicyListener.aidl
index 812f1fe5e563..6523192b735a 100644
--- a/core/java/android/net/INetworkPolicyListener.aidl
+++ b/core/java/android/net/INetworkPolicyListener.aidl
@@ -23,5 +23,6 @@ oneway interface INetworkPolicyListener {
void onMeteredIfacesChanged(in String[] meteredIfaces);
void onRestrictBackgroundChanged(boolean restrictBackground);
void onRestrictBackgroundWhitelistChanged(int uid, boolean whitelisted);
+ void onRestrictPowerChanged(boolean restrictPower);
}
diff --git a/core/java/android/net/INetworkPolicyManager.aidl b/core/java/android/net/INetworkPolicyManager.aidl
index 224ff5b395c7..fc9b8dd5f5bb 100644
--- a/core/java/android/net/INetworkPolicyManager.aidl
+++ b/core/java/android/net/INetworkPolicyManager.aidl
@@ -54,6 +54,7 @@ interface INetworkPolicyManager {
/** Control if background data is restricted system-wide. */
void setRestrictBackground(boolean restrictBackground);
boolean getRestrictBackground();
+ boolean getRestrictPower();
/** Callback used to change internal state on tethering */
void onTetheringChanged(String iface, boolean tethering);
diff --git a/core/java/android/net/NetworkPolicyManager.java b/core/java/android/net/NetworkPolicyManager.java
index e464a4a31497..51c45e056092 100644
--- a/core/java/android/net/NetworkPolicyManager.java
+++ b/core/java/android/net/NetworkPolicyManager.java
@@ -28,10 +28,10 @@ import android.content.pm.Signature;
import android.os.RemoteException;
import android.os.UserHandle;
import android.text.format.Time;
+import android.util.DebugUtils;
import com.google.android.collect.Sets;
-import java.io.PrintWriter;
import java.util.HashSet;
/**
@@ -49,18 +49,39 @@ public class NetworkPolicyManager {
/** Allow network use (metered or not) in the background in battery save mode. */
public static final int POLICY_ALLOW_BACKGROUND_BATTERY_SAVE = 0x2;
- /* RULE_* are not masks and they must be exclusive */
- public static final int RULE_UNKNOWN = -1;
- /** All network traffic should be allowed. */
- public static final int RULE_ALLOW_ALL = 0;
- /** Reject traffic on metered networks. */
- public static final int RULE_REJECT_METERED = 1;
- /** Reject traffic on all networks. */
- public static final int RULE_REJECT_ALL = 2;
+ /*
+ * Rules defining whether an uid has access to a network given its type (metered / non-metered).
+ *
+ * These rules are bits and can be used in bitmask operations; in particular:
+ * - rule & RULE_MASK_METERED: returns the metered-networks status.
+ * - rule & RULE_MASK_ALL: returns the all-networks status.
+ *
+ * The RULE_xxx_ALL rules applies to all networks (metered or non-metered), but on
+ * metered networks, the RULE_xxx_METERED rules should be checked first. For example,
+ * if the device is on Battery Saver Mode and Data Saver Mode simulatenously, and a uid
+ * is whitelisted for the former but not the latter, its status would be
+ * RULE_REJECT_METERED | RULE_ALLOW_ALL, meaning it could have access to non-metered
+ * networks but not to metered networks.
+ *
+ * See network-policy-restrictions.md for more info.
+ */
+ /** No specific rule was set */
+ public static final int RULE_NONE = 0;
/** Allow traffic on metered networks. */
- public static final int RULE_ALLOW_METERED = 3;
+ public static final int RULE_ALLOW_METERED = 1 << 0;
/** Temporarily allow traffic on metered networks because app is on foreground. */
- public static final int RULE_TEMPORARY_ALLOW_METERED = 4;
+ public static final int RULE_TEMPORARY_ALLOW_METERED = 1 << 1;
+ /** Reject traffic on metered networks. */
+ public static final int RULE_REJECT_METERED = 1 << 2;
+ /** Network traffic should be allowed on all networks (metered or non-metered), although
+ * metered-network restrictions could still apply. */
+ public static final int RULE_ALLOW_ALL = 1 << 5;
+ /** Reject traffic on all networks. */
+ public static final int RULE_REJECT_ALL = 1 << 6;
+ /** Mask used to get the {@code RULE_xxx_METERED} rules */
+ public static final int MASK_METERED_NETWORKS = 0b00001111;
+ /** Mask used to get the {@code RULE_xxx_ALL} rules */
+ public static final int MASK_ALL_NETWORKS = 0b11110000;
public static final int FIREWALL_RULE_DEFAULT = 0;
public static final int FIREWALL_RULE_ALLOW = 1;
@@ -341,4 +362,18 @@ public class NetworkPolicyManager {
// nothing found above; we can apply policy to UID
return true;
}
+
+ /*
+ * @hide
+ */
+ public static String uidRulesToString(int uidRules) {
+ final StringBuilder string = new StringBuilder().append(uidRules).append(" (");
+ if (uidRules == RULE_NONE) {
+ string.append("NONE");
+ } else {
+ string.append(DebugUtils.flagsToString(NetworkPolicyManager.class, "RULE_", uidRules));
+ }
+ string.append(")");
+ return string.toString();
+ }
}
diff --git a/core/java/android/net/network-policy-restrictions.md b/core/java/android/net/network-policy-restrictions.md
new file mode 100644
index 000000000000..fe13f7a5aab9
--- /dev/null
+++ b/core/java/android/net/network-policy-restrictions.md
@@ -0,0 +1,47 @@
+# Data Saver vs Battery Saver
+
+The tables below show whether an app has network access while on background depending on the status of Data Saver mode, Battery Saver mode, and the app's whitelist on those restricted modes.
+
+### How to read the tables
+
+The 2 topmost rows define the Battery Saver mode and whether the app is whitelisted or not for it.
+The 2 leftmost columns define the Data Saver mode and whether the app is whitelisted, not whitelisted, or blacklisted for it.
+The cells define the network status when the app is on background.
+
+More specifically:
+
+* **DS ON**: Data Saver Mode is on
+* **DS OFF**: Data Saver Mode is off
+* **BS ON**: Battery Saver Mode is on
+* **BS OFF**: Battery Saver Mode is off
+* **WL**: app is whitelisted
+* **!WL**: app is not whitelisted
+* **BL**: app is blacklisted
+* **ok**: network access granted while app on background (NetworkInfo's state/detailed state should be `CONNECTED` / `CONNECTED`)
+* **blk**: network access blocked while app on background (NetworkInfo's state/detailed state should be `DISCONNECTED` / `BLOCKED`)
+
+
+## On metered networks
+
+| | | BS | ON | BS | OFF |
+|:-------:|-------|------|-------|------|-------|
+| | | *WL* | *!WL* | *WL* | *!WL* |
+| **DS** | *WL* | ok | blk | ok | ok |
+| **ON** | *!WL* | blk | blk | blk | blk |
+| | *BL* | blk | blk | blk | blk |
+| **DS** | *WL* | blk | ok | ok | ok |
+| **OFF** | *!WL* | blk | ok | ok | ok |
+| | *BL* | blk | blk | blk | blk |
+
+
+## On non-metered networks
+
+| | | BS | ON | BS | OFF |
+|:-------:|-------|------|-------|------|-------|
+| | | *WL* | *!WL* | *WL* | *!WL* |
+| **DS** | *WL* | ok | blk | ok | ok |
+| **ON** | *!WL* | ok | blk | ok | ok |
+| | *BL* | ok | blk | ok | ok |
+| **DS** | *WL* | ok | blk | ok | ok |
+| **OFF** | *!WL* | ok | blk | ok | ok |
+| | *BL* | ok | blk | ok | ok |
diff --git a/core/java/android/os/BaseBundle.java b/core/java/android/os/BaseBundle.java
index 004b2ceab673..e83c756786e7 100644
--- a/core/java/android/os/BaseBundle.java
+++ b/core/java/android/os/BaseBundle.java
@@ -169,7 +169,7 @@ public class BaseBundle {
}
if (b.mMap != null) {
- mMap = new ArrayMap<String, Object>(b.mMap);
+ mMap = new ArrayMap<>(b.mMap);
} else {
mMap = null;
}
@@ -226,56 +226,62 @@ public class BaseBundle {
* using the currently assigned class loader.
*/
/* package */ synchronized void unparcel() {
- if (mParcelledData == null) {
- if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this))
- + ": no parcelled data");
- return;
- }
+ synchronized (this) {
+ final Parcel parcelledData = mParcelledData;
+ if (parcelledData == null) {
+ if (DEBUG) Log.d(TAG, "unparcel "
+ + Integer.toHexString(System.identityHashCode(this))
+ + ": no parcelled data");
+ return;
+ }
- if (LOG_DEFUSABLE && sShouldDefuse && (mFlags & FLAG_DEFUSABLE) == 0) {
- Slog.wtf(TAG, "Attempting to unparcel a Bundle while in transit; this may "
- + "clobber all data inside!", new Throwable());
- }
+ if (LOG_DEFUSABLE && sShouldDefuse && (mFlags & FLAG_DEFUSABLE) == 0) {
+ Slog.wtf(TAG, "Attempting to unparcel a Bundle while in transit; this may "
+ + "clobber all data inside!", new Throwable());
+ }
- if (isEmptyParcel()) {
- if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this))
- + ": empty");
- if (mMap == null) {
- mMap = new ArrayMap<String, Object>(1);
- } else {
- mMap.erase();
+ if (isEmptyParcel()) {
+ if (DEBUG) Log.d(TAG, "unparcel "
+ + Integer.toHexString(System.identityHashCode(this)) + ": empty");
+ if (mMap == null) {
+ mMap = new ArrayMap<>(1);
+ } else {
+ mMap.erase();
+ }
+ mParcelledData = null;
+ return;
}
- mParcelledData = null;
- return;
- }
- int N = mParcelledData.readInt();
- if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this))
- + ": reading " + N + " maps");
- if (N < 0) {
- return;
- }
- if (mMap == null) {
- mMap = new ArrayMap<String, Object>(N);
- } else {
- mMap.erase();
- mMap.ensureCapacity(N);
- }
- try {
- mParcelledData.readArrayMapInternal(mMap, N, mClassLoader);
- } catch (BadParcelableException e) {
- if (sShouldDefuse) {
- Log.w(TAG, "Failed to parse Bundle, but defusing quietly", e);
- mMap.erase();
+ int N = parcelledData.readInt();
+ if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this))
+ + ": reading " + N + " maps");
+ if (N < 0) {
+ return;
+ }
+ ArrayMap<String, Object> map = mMap;
+ if (map == null) {
+ map = new ArrayMap<>(N);
} else {
- throw e;
+ map.erase();
+ map.ensureCapacity(N);
}
- } finally {
- mParcelledData.recycle();
- mParcelledData = null;
+ try {
+ parcelledData.readArrayMapInternal(map, N, mClassLoader);
+ } catch (BadParcelableException e) {
+ if (sShouldDefuse) {
+ Log.w(TAG, "Failed to parse Bundle, but defusing quietly", e);
+ map.erase();
+ } else {
+ throw e;
+ }
+ } finally {
+ mMap = map;
+ parcelledData.recycle();
+ mParcelledData = null;
+ }
+ if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this))
+ + " final map: " + mMap);
}
- if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this))
- + " final map: " + mMap);
}
/**
@@ -1375,14 +1381,18 @@ public class BaseBundle {
void writeToParcelInner(Parcel parcel, int flags) {
// Keep implementation in sync with writeToParcel() in
// frameworks/native/libs/binder/PersistableBundle.cpp.
- if (mParcelledData != null) {
+ final Parcel parcelledData;
+ synchronized (this) {
+ parcelledData = mParcelledData;
+ }
+ if (parcelledData != null) {
if (isEmptyParcel()) {
parcel.writeInt(0);
} else {
- int length = mParcelledData.dataSize();
+ int length = parcelledData.dataSize();
parcel.writeInt(length);
parcel.writeInt(BUNDLE_MAGIC);
- parcel.appendFrom(mParcelledData, 0, length);
+ parcel.appendFrom(parcelledData, 0, length);
}
} else {
// Special case for empty bundles.
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index a4bd8eb32dc4..ea5ae32e8244 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -189,6 +189,7 @@ public abstract class BatteryStats implements Parcelable {
private static final String VERSION_DATA = "vers";
private static final String UID_DATA = "uid";
+ private static final String WAKEUP_ALARM_DATA = "wua";
private static final String APK_DATA = "apk";
private static final String PROCESS_DATA = "pr";
private static final String CPU_DATA = "cpu";
@@ -3251,7 +3252,10 @@ public abstract class BatteryStats implements Parcelable {
int wakeups = 0;
final ArrayMap<String, ? extends Counter> alarms = ps.getWakeupAlarmStats();
for (int iwa=alarms.size()-1; iwa>=0; iwa--) {
- wakeups += alarms.valueAt(iwa).getCountLocked(which);
+ int count = alarms.valueAt(iwa).getCountLocked(which);
+ wakeups += count;
+ String name = alarms.keyAt(iwa).replace(',', '_');
+ dumpLine(pw, uid, category, WAKEUP_ALARM_DATA, name, count);
}
final ArrayMap<String, ? extends Uid.Pkg.Serv> serviceStats = ps.getServiceStats();
for (int isvc=serviceStats.size()-1; isvc>=0; isvc--) {
diff --git a/core/java/android/provider/BlockedNumberContract.java b/core/java/android/provider/BlockedNumberContract.java
index e90dc9cf2e08..92a22d101193 100644
--- a/core/java/android/provider/BlockedNumberContract.java
+++ b/core/java/android/provider/BlockedNumberContract.java
@@ -136,9 +136,9 @@ import android.os.Bundle;
* <p>
* Apps must use the method {@link #canCurrentUserBlockNumbers(Context)} before performing any
* operation on the blocked number provider. If {@link #canCurrentUserBlockNumbers(Context)} returns
- * {@code false}, all operations on the provider will fail with an
- * {@link UnsupportedOperationException}. The platform will block calls, and messages from numbers
- * in the provider independent of the current user.
+ * {@code false}, all operations on the provider will fail with a {@link SecurityException}. The
+ * platform will block calls, and messages from numbers in the provider independent of the current
+ * user.
* </p>
*/
public class BlockedNumberContract {
@@ -236,7 +236,7 @@ public class BlockedNumberContract {
* {@code phoneNumber} with the {@link BlockedNumbers#COLUMN_E164_NUMBER} column.
*
* <p> Note that if the {@link #canCurrentUserBlockNumbers} is {@code false} for the user
- * context {@code context}, this method will throw an {@link UnsupportedOperationException}.
+ * context {@code context}, this method will throw a {@link SecurityException}.
*/
@WorkerThread
public static boolean isBlocked(Context context, String phoneNumber) {
@@ -260,7 +260,7 @@ public class BlockedNumberContract {
* {@link BlockedNumbers#CONTENT_URI} URI.
*
* <p> Note that if the {@link #canCurrentUserBlockNumbers} is {@code false} for the user
- * context {@code context}, this method will throw an {@link UnsupportedOperationException}.
+ * context {@code context}, this method will throw a {@link SecurityException}.
*/
@WorkerThread
public static int unblock(Context context, String phoneNumber) {
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index 3658df9a8443..c70304e140cf 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -607,7 +607,7 @@ public final class ContactsContract {
/**
* Return TRUE if it is a remote stored directory.
*/
- public static boolean isRemoteDirectory(long directoryId) {
+ public static boolean isRemoteDirectoryId(long directoryId) {
return directoryId != Directory.DEFAULT
&& directoryId != Directory.LOCAL_INVISIBLE
&& directoryId != Directory.ENTERPRISE_DEFAULT
@@ -615,6 +615,16 @@ public final class ContactsContract {
}
/**
+ * Return TRUE if it is a remote stored directory. TODO: Remove this method once all
+ * internal apps are not using this API.
+ *
+ * @hide
+ */
+ public static boolean isRemoteDirectory(long directoryId) {
+ return isRemoteDirectoryId(directoryId);
+ }
+
+ /**
* Return TRUE if a directory ID is from the contacts provider on the enterprise profile.
*
*/
@@ -1659,7 +1669,7 @@ public final class ContactsContract {
/**
* It supports the similar semantics as {@link #CONTENT_FILTER_URI} and returns the same
* columns. This URI requires {@link ContactsContract#DIRECTORY_PARAM_KEY} in parameters,
- * otherwise it will throw UnsupportedOperationException.
+ * otherwise it will throw IllegalArgumentException.
*/
public static final Uri ENTERPRISE_CONTENT_FILTER_URI = Uri.withAppendedPath(
CONTENT_URI, "filter_enterprise");
@@ -5962,7 +5972,7 @@ public final class ContactsContract {
/**
* It supports the similar semantics as {@link #CONTENT_FILTER_URI} and returns the same
* columns. This URI requires {@link ContactsContract#DIRECTORY_PARAM_KEY} in
- * parameters, otherwise it will throw UnsupportedOperationException.
+ * parameters, otherwise it will throw IllegalArgumentException.
*/
public static final Uri ENTERPRISE_CONTENT_FILTER_URI = Uri.withAppendedPath(
CONTENT_URI, "filter_enterprise");
@@ -6242,7 +6252,7 @@ public final class ContactsContract {
/**
* It supports the similar semantics as {@link #CONTENT_FILTER_URI} and returns the same
* columns. This URI requires {@link ContactsContract#DIRECTORY_PARAM_KEY} in
- * parameters, otherwise it will throw UnsupportedOperationException.
+ * parameters, otherwise it will throw IllegalArgumentException.
*/
public static final Uri ENTERPRISE_CONTENT_FILTER_URI = Uri.withAppendedPath(
CONTENT_URI, "filter_enterprise");
@@ -7464,7 +7474,7 @@ public final class ContactsContract {
/**
* Similar to {@link Phone#ENTERPRISE_CONTENT_FILTER_URI}, but allows users to filter
* callable data. This URI requires {@link ContactsContract#DIRECTORY_PARAM_KEY} in
- * parameters, otherwise it will throw UnsupportedOperationException.
+ * parameters, otherwise it will throw IllegalArgumentException.
*/
public static final Uri ENTERPRISE_CONTENT_FILTER_URI = Uri.withAppendedPath(
CONTENT_URI, "filter_enterprise");
@@ -8759,21 +8769,34 @@ public final class ContactsContract {
* android.service.voice.VoiceInteractionSession#startVoiceActivity}.
* <p>
* When the action was not initiated by Voice Assistant or when the receiving activity does
- * not support {@link android.content.Intent#CATEGORY_VOICE}, the activity should confirm
+ * not support {@link android.content.Intent#CATEGORY_VOICE}, the activity must confirm
* with the user before sending the message (because in this case it is unknown which app
* sent the intent, it could be malicious).
* <p>
* To allow the Voice Assistant to help users with contacts disambiguation, the messaging
- * app may choose to integrate with the Contacts Provider. The following convention should
- * be met when creating Data table for such integration:
+ * app may choose to integrate with the Contacts Provider. You will need to specify a new
+ * MIME type in order to store your app’s unique contact IDs and optional human readable
+ * labels in the Data table. The Voice Assistant needs to know this MIME type and {@link
+ * RawContacts#ACCOUNT_TYPE} that you are using in order to provide the smooth contact
+ * disambiguation user experience. The following convention should be met when performing
+ * such integration:
* <ul>
- * <li>Column {@link DataColumns#DATA1} should store the unique contact ID as understood by
- * the app. This value will be used in the {@link #EXTRA_RECIPIENT_CONTACT_CHAT_ID}.</li>
- * <li>Optionally, column {@link DataColumns#DATA3} could store a human readable label for
- * the ID. For example it could be phone number or human readable username/user_id like
- * "a_super_cool_user_name". This label may be shown below the Contact Name by the Voice
- * Assistant as the user completes the voice action. If DATA3 is empty, the ID in DATA1 may
- * be shown instead.</li>
+ * <li>This activity should have a string meta-data field associated with it, {@link
+ * #METADATA_ACCOUNT_TYPE}, which defines {@link RawContacts#ACCOUNT_TYPE} for your Contacts
+ * Provider implementation. The account type should be globally unique, for example you can
+ * use your app package name as the account type.</li>
+ * <li>This activity should have a string meta-data field associated with it, {@link
+ * #METADATA_MIMETYPE}, which defines {@link DataColumns#MIMETYPE} for your Contacts
+ * Provider implementation. For example, you can use
+ * "vnd.android.cursor.item/vnd.{$app_package_name}.profile" as MIME type.</li>
+ * <li>When filling Data table row for METADATA_MIMETYPE, column {@link DataColumns#DATA1}
+ * should store the unique contact ID as understood by the app. This value will be used in
+ * the {@link #EXTRA_RECIPIENT_CONTACT_CHAT_ID}.</li>
+ * <li>Optionally, when filling Data table row for METADATA_MIMETYPE, column {@link
+ * DataColumns#DATA3} could store a human readable label for the ID. For example it could be
+ * phone number or human readable username/user_id like "a_super_cool_user_name". This label
+ * may be shown below the Contact Name by the Voice Assistant as the user completes the
+ * voice action. If DATA3 is empty, the ID in DATA1 may be shown instead.</li>
* <li><em>Note: Do not use DATA3 to store the Contact Name. The Voice Assistant will
* already get the Contact Name from the RawContact’s display_name.</em></li>
* <li><em>Note: Some apps may choose to use phone number as the unique contact ID in DATA1.
@@ -8789,6 +8812,9 @@ public final class ContactsContract {
* Doing this will allow Voice Assistant to bias speech recognition to contacts frequently
* contacted, this is particularly useful for contact names that are hard to pronounce.</li>
* </ul>
+ * If the app chooses not to integrate with the Contacts Provider (in particular, when
+ * either METADATA_ACCOUNT_TYPE or METADATA_MIMETYPE field is missing), Voice Assistant
+ * will use existing phone number entries as contact ID's for such app.
* <p>
* Input: {@link android.content.Intent#getType} is the MIME type of the data being sent.
* The intent sender will always put the concrete mime type in the intent type, like
@@ -8814,6 +8840,8 @@ public final class ContactsContract {
* @see #EXTRA_RECIPIENT_CONTACT_URI
* @see #EXTRA_RECIPIENT_CONTACT_CHAT_ID
* @see #EXTRA_RECIPIENT_CONTACT_NAME
+ * @see #METADATA_ACCOUNT_TYPE
+ * @see #METADATA_MIMETYPE
*/
public static final String ACTION_VOICE_SEND_MESSAGE_TO_CONTACTS =
"android.provider.action.VOICE_SEND_MESSAGE_TO_CONTACTS";
@@ -8845,8 +8873,10 @@ public final class ContactsContract {
* recipient is absent, it will be set to null.
* <p>
* The value of the elements comes from the {@link DataColumns#DATA1} column in Contacts
- * Provider, and should be the unambiguous contact endpoint. This value is app-specific, it
- * could be a phone number or some proprietary ID.
+ * Provider with {@link DataColumns#MIMETYPE} from {@link #METADATA_MIMETYPE} (if both
+ * {@link #METADATA_ACCOUNT_TYPE} and {@link #METADATA_MIMETYPE} are specified by the app;
+ * otherwise, the value will be a phone number), and should be the unambiguous contact
+ * endpoint. This value is app-specific, it could be some proprietary ID or a phone number.
*/
public static final String EXTRA_RECIPIENT_CONTACT_CHAT_ID =
"android.provider.extra.RECIPIENT_CONTACT_CHAT_ID";
@@ -8867,6 +8897,20 @@ public final class ContactsContract {
"android.provider.extra.RECIPIENT_CONTACT_NAME";
/**
+ * A string associated with an {@link #ACTION_VOICE_SEND_MESSAGE_TO_CONTACTS} activity
+ * describing {@link RawContacts#ACCOUNT_TYPE} for the corresponding Contacts Provider
+ * implementation.
+ */
+ public static final String METADATA_ACCOUNT_TYPE = "android.provider.account_type";
+
+ /**
+ * A string associated with an {@link #ACTION_VOICE_SEND_MESSAGE_TO_CONTACTS} activity
+ * describing {@link DataColumns#MIMETYPE} for the corresponding Contacts Provider
+ * implementation.
+ */
+ public static final String METADATA_MIMETYPE = "android.provider.mimetype";
+
+ /**
* Starts an Activity that lets the user select the multiple phones from a
* list of phone numbers which come from the contacts or
* {@link #EXTRA_PHONE_URIS}.
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 700c2d28b3dd..370cd5722347 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -1267,6 +1267,16 @@ public final class Settings {
public static final String ACTION_VR_LISTENER_SETTINGS
= "android.settings.VR_LISTENER_SETTINGS";
+ /**
+ * Activity Action: Allows user to select current webview implementation.
+ * <p>
+ * Input: Nothing.
+ * <p>
+ * Output: Nothing.
+ */
+ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+ public static final String ACTION_WEBVIEW_SETTINGS = "android.settings.WEBVIEW_SETTINGS";
+
// End of Intent actions for Settings
/**
@@ -6152,6 +6162,14 @@ public final class Settings {
public static final int VR_DISPLAY_MODE_OFF = 1;
/**
+ * Whether parent user can access remote contact in managed profile.
+ *
+ * @hide
+ */
+ public static final String MANAGED_PROFILE_CONTACT_REMOTE_SEARCH =
+ "managed_profile_contact_remote_search";
+
+ /**
* This are the settings to be backed up.
*
* NOTE: Settings are backed up and restored in the order they appear
diff --git a/core/java/android/service/vr/VrListenerService.java b/core/java/android/service/vr/VrListenerService.java
index 9a5e95d7a4bd..c76d7934a0cf 100644
--- a/core/java/android/service/vr/VrListenerService.java
+++ b/core/java/android/service/vr/VrListenerService.java
@@ -44,11 +44,17 @@ import android.os.Message;
* &lt;/service>
* </pre>
*
- * <p>
- * This service is bound when the system enters VR mode and is unbound when the system leaves VR
- * mode.
- * {@see android.app.Activity#setVrMode(boolean)}
- * </p>
+ * <p>This service is bound when the system enters VR mode and is unbound when the system leaves VR
+ * mode.</p>
+ * <p>The system will enter VR mode when an application that has previously called
+ * {@link android.app.Activity#setVrModeEnabled} gains user focus. The system will only start this
+ * service if the VR application has specifically targeted this service by specifying
+ * its {@link ComponentName} in the call to {@link android.app.Activity#setVrModeEnabled} and if
+ * this service is installed and enabled in the current user's settings.</p>
+ *
+ * @see android.provider.Settings#ACTION_VR_LISTENER_SETTINGS
+ * @see android.app.Activity#setVrModeEnabled
+ * @see android.R.attr#enableVrMode
*/
public abstract class VrListenerService extends Service {
@@ -94,25 +100,40 @@ public abstract class VrListenerService extends Service {
}
/**
- * Called when the current activity using VR mode is changed.
- * <p/>
- * This will be called immediately when this service is initially bound, but is
- * not guaranteed to be called before onUnbind.
+ * Called when the current activity using VR mode has changed.
+ *
+ * <p>This will be called when this service is initially bound, but is not
+ * guaranteed to be called before onUnbind. In general, this is intended to be used to
+ * determine when user focus has transitioned between two VR activities. If both activities
+ * have declared {@link android.R.attr#enableVrMode} with this service (and this
+ * service is present and enabled), this service will not be unbound during the activity
+ * transition.</p>
+ *
+ * @param component the {@link ComponentName} of the VR activity that the system has
+ * switched to.
*
- * @param component the {@link ComponentName} of the new current VR activity.
+ * @see android.app.Activity#setVrModeEnabled
+ * @see android.R.attr#enableVrMode
*/
public void onCurrentVrActivityChanged(ComponentName component) {
// Override to implement
}
/**
- * Check if the given package is available to be enabled/disabled in VR mode settings.
+ * Checks if the given component is enabled in user settings.
+ *
+ * <p>If this component is not enabled in the user's settings, it will not be started when
+ * the system enters VR mode. The user interface for enabling VrListenerService components
+ * can be started by sending the {@link android.provider.Settings#ACTION_VR_LISTENER_SETTINGS}
+ * intent.</p>
*
* @param context the {@link Context} to use for looking up the requested component.
* @param requestedComponent the name of the component that implements
* {@link android.service.vr.VrListenerService} to check.
*
- * @return {@code true} if this package is enabled in settings.
+ * @return {@code true} if this component is enabled in settings.
+ *
+ * @see android.provider.Settings#ACTION_VR_LISTENER_SETTINGS
*/
public static final boolean isVrModePackageEnabled(@NonNull Context context,
@NonNull ComponentName requestedComponent) {
diff --git a/core/java/android/view/IWindowSession.aidl b/core/java/android/view/IWindowSession.aidl
index 8e1609c587a3..1facc106d645 100644
--- a/core/java/android/view/IWindowSession.aidl
+++ b/core/java/android/view/IWindowSession.aidl
@@ -125,11 +125,13 @@ interface IWindowSession {
/*
* Notify the window manager that an application is relaunching and
- * child windows should be prepared for replacement.
+ * windows should be prepared for replacement.
*
* @param appToken The application
+ * @param childrenOnly Whether to only prepare child windows for replacement
+ * (for example when main windows are being reused via preservation).
*/
- void prepareToReplaceChildren(IBinder appToken);
+ void prepareToReplaceWindows(IBinder appToken, boolean childrenOnly);
/**
* If a call to relayout() asked to have the surface destroy deferred,
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 6cf8cd16f187..0222d376b44e 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -1718,11 +1718,13 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
if (isTransformedTouchPointInView(x, y, child, point)) {
final PointerIcon pointerIcon = child.getPointerIcon(event, point.x, point.y);
if (pointerIcon != null) {
+ if (preorderedList != null) preorderedList.clear();
return pointerIcon;
}
break;
}
}
+ if (preorderedList != null) preorderedList.clear();
}
// The pointer is not a child or the child has no preferences, returning the default
@@ -3028,6 +3030,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
final ViewStructure cstructure = structure.newChild(i);
child.dispatchProvideStructure(cstructure);
}
+ if (preorderedList != null) preorderedList.clear();
}
}
}
@@ -3619,6 +3622,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
if (mPreSortedChildren == null) {
mPreSortedChildren = new ArrayList<>(childrenCount);
} else {
+ // callers should clear, so clear shouldn't be necessary, but for safety...
+ mPreSortedChildren.clear();
mPreSortedChildren.ensureCapacity(childrenCount);
}
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index edf05ba5fc33..8cabf42dadf8 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -562,6 +562,11 @@ public final class ViewRootImpl implements ViewParent,
}
attrs = mWindowAttributes;
setTag();
+
+ if ((mClientWindowLayoutFlags&WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) != 0
+ && (attrs.flags&WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) == 0) {
+ Slog.d(mTag, "setView: FLAG_KEEP_SCREEN_ON changed from true to false!!!");
+ }
// Keep track of the actual window flags supplied by the client.
mClientWindowLayoutFlags = attrs.flags;
@@ -889,6 +894,10 @@ public final class ViewRootImpl implements ViewParent,
final int oldInsetBottom = mWindowAttributes.surfaceInsets.bottom;
final int oldSoftInputMode = mWindowAttributes.softInputMode;
final boolean oldHasManualSurfaceInsets = mWindowAttributes.hasManualSurfaceInsets;
+ if ((mClientWindowLayoutFlags&WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) != 0
+ && (attrs.flags&WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) == 0) {
+ Slog.d(mTag, "setLayoutParams: FLAG_KEEP_SCREEN_ON from true to false!!!");
+ }
// Keep track of the actual window flags supplied by the client.
mClientWindowLayoutFlags = attrs.flags;
@@ -1679,6 +1688,7 @@ public final class ViewRootImpl implements ViewParent,
boolean insetsPending = false;
int relayoutResult = 0;
+ boolean updatedConfiguration = false;
final int surfaceGenerationId = mSurface.getGenerationId();
@@ -1741,6 +1751,7 @@ public final class ViewRootImpl implements ViewParent,
+ mPendingConfiguration);
updateConfiguration(new Configuration(mPendingConfiguration), !mFirst);
mPendingConfiguration.seq = 0;
+ updatedConfiguration = true;
}
final boolean overscanInsetsChanged = !mPendingOverscanInsets.equals(
@@ -1978,7 +1989,8 @@ public final class ViewRootImpl implements ViewParent,
boolean focusChangedDueToTouchMode = ensureTouchModeLocally(
(relayoutResult&WindowManagerGlobal.RELAYOUT_RES_IN_TOUCH_MODE) != 0);
if (focusChangedDueToTouchMode || mWidth != host.getMeasuredWidth()
- || mHeight != host.getMeasuredHeight() || contentInsetsChanged) {
+ || mHeight != host.getMeasuredHeight() || contentInsetsChanged ||
+ updatedConfiguration) {
int childWidthMeasureSpec = getRootMeasureSpec(mWidth, lp.width);
int childHeightMeasureSpec = getRootMeasureSpec(mHeight, lp.height);
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index 1ce804342c43..5a9a212538b6 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -39,6 +39,7 @@ import android.os.RemoteException;
import android.os.ResultReceiver;
import android.os.ServiceManager;
import android.os.Trace;
+import android.text.TextUtils;
import android.text.style.SuggestionSpan;
import android.util.Log;
import android.util.Pools.Pool;
@@ -553,8 +554,9 @@ public final class InputMethodManager {
}
@Override
- protected void onReportFullscreenMode(boolean enabled) {
- mParentInputMethodManager.setFullscreenMode(enabled);
+ protected void onReportFullscreenMode(boolean enabled, boolean calledInBackground) {
+ mParentInputMethodManager.onReportFullscreenMode(enabled, calledInBackground,
+ getInputMethodId());
}
@Override
@@ -563,6 +565,7 @@ public final class InputMethodManager {
+ "connection=" + getInputConnection()
+ " finished=" + isFinished()
+ " mParentInputMethodManager.mActive=" + mParentInputMethodManager.mActive
+ + " mInputMethodId=" + getInputMethodId()
+ "}";
}
}
@@ -718,8 +721,13 @@ public final class InputMethodManager {
}
/** @hide */
- public void setFullscreenMode(boolean fullScreen) {
- mFullscreenMode = fullScreen;
+ public void onReportFullscreenMode(boolean fullScreen, boolean calledInBackground,
+ String inputMethodId) {
+ synchronized (mH) {
+ if (!calledInBackground || TextUtils.equals(mCurId, inputMethodId)) {
+ mFullscreenMode = fullScreen;
+ }
+ }
}
/** @hide */
@@ -746,9 +754,11 @@ public final class InputMethodManager {
* your UI, else returns false.
*/
public boolean isFullscreenMode() {
- return mFullscreenMode;
+ synchronized (mH) {
+ return mFullscreenMode;
+ }
}
-
+
/**
* Return true if the given view is the currently active view for the
* input method.
@@ -1254,6 +1264,9 @@ public final class InputMethodManager {
mCurId = res.id;
mNextUserActionNotificationSequenceNumber =
res.userActionNotificationSequenceNumber;
+ if (mServedInputConnectionWrapper != null) {
+ mServedInputConnectionWrapper.setInputMethodId(mCurId);
+ }
} else {
if (res.channel != null && res.channel != mCurChannel) {
res.channel.dispose();
diff --git a/core/java/android/webkit/ServiceWorkerClient.java b/core/java/android/webkit/ServiceWorkerClient.java
index 85de698678d9..23340550def3 100644
--- a/core/java/android/webkit/ServiceWorkerClient.java
+++ b/core/java/android/webkit/ServiceWorkerClient.java
@@ -16,7 +16,10 @@
package android.webkit;
-
+/**
+ * Base class for clients to capture Service Worker related callbacks,
+ * see {@link ServiceWorkerController} for usage example.
+ */
public class ServiceWorkerClient {
/**
@@ -32,7 +35,7 @@ public class ServiceWorkerClient {
* @return A {@link android.webkit.WebResourceResponse} containing the
* response information or null if the WebView should load the
* resource itself.
- * @see {@link WebViewClient#shouldInterceptRequest()}
+ * @see WebViewClient#shouldInterceptRequest(WebView, WebResourceRequest)
*/
public WebResourceResponse shouldInterceptRequest(WebResourceRequest request) {
return null;
diff --git a/core/java/android/webkit/ServiceWorkerController.java b/core/java/android/webkit/ServiceWorkerController.java
index 91155584a19d..571d45e22d3b 100644
--- a/core/java/android/webkit/ServiceWorkerController.java
+++ b/core/java/android/webkit/ServiceWorkerController.java
@@ -21,6 +21,19 @@ import android.annotation.Nullable;
/**
* Manages Service Workers used by WebView.
+ *
+ * <p>Example usage:
+ * <pre class="prettyprint">
+ * ServiceWorkerController swController = ServiceWorkerController.getInstance();
+ * swController.setServiceWorkerClient(new ServiceWorkerClient() {
+ * {@literal @}Override
+ * public WebResourceResponse shouldInterceptRequest(WebResourceRequest request) {
+ * // Capture request here and generate response or allow pass-through
+ * // by returning null.
+ * return null;
+ * }
+ * });
+ * </pre></p>
*/
public abstract class ServiceWorkerController {
@@ -29,7 +42,7 @@ public abstract class ServiceWorkerController {
* only one ServiceWorkerController instance for all WebView instances,
* however this restriction may be relaxed in the future.
*
- * @return The default ServiceWorkerController instance.
+ * @return the default ServiceWorkerController instance
*/
@NonNull
public static ServiceWorkerController getInstance() {
@@ -39,13 +52,17 @@ public abstract class ServiceWorkerController {
/**
* Gets the settings for all service workers.
*
- * @return The current ServiceWorkerWebSettings
+ * @return the current ServiceWorkerWebSettings
*/
@NonNull
public abstract ServiceWorkerWebSettings getServiceWorkerWebSettings();
/**
* Sets the client to capture service worker related callbacks.
+ *
+ * A {@link ServiceWorkerClient} should be set before any service workers are
+ * active, e.g. a safe place is before any WebView instances are created or
+ * pages loaded.
*/
public abstract void setServiceWorkerClient(@Nullable ServiceWorkerClient client);
}
diff --git a/core/java/android/webkit/ServiceWorkerWebSettings.java b/core/java/android/webkit/ServiceWorkerWebSettings.java
index 8b104d1c7e3b..92e9fbe29b55 100644
--- a/core/java/android/webkit/ServiceWorkerWebSettings.java
+++ b/core/java/android/webkit/ServiceWorkerWebSettings.java
@@ -30,9 +30,12 @@ public abstract class ServiceWorkerWebSettings {
/**
* Overrides the way the cache is used, see {@link WebSettings#setCacheMode}.
*
- * @param mode the mode to use
+ * @param mode the mode to use. One of {@link WebSettings#LOAD_DEFAULT},
+ * {@link WebSettings#LOAD_CACHE_ELSE_NETWORK}, {@link WebSettings#LOAD_NO_CACHE}
+ * or {@link WebSettings#LOAD_CACHE_ONLY}. The default value is
+ * {@link WebSettings#LOAD_DEFAULT}.
*/
- public abstract void setCacheMode(int mode);
+ public abstract void setCacheMode(@WebSettings.CacheMode int mode);
/**
* Gets the current setting for overriding the cache mode.
@@ -40,6 +43,7 @@ public abstract class ServiceWorkerWebSettings {
* @return the current setting for overriding the cache mode
* @see #setCacheMode
*/
+ @WebSettings.CacheMode
public abstract int getCacheMode();
/**
@@ -69,11 +73,10 @@ public abstract class ServiceWorkerWebSettings {
public abstract boolean getAllowFileAccess();
/**
- * Sets whether the Service Workers should not load resources from the network,
+ * Sets whether Service Workers should not load resources from the network,
* see {@link WebSettings#setBlockNetworkLoads}.
*
- * @param flag whether the Service Workers should not load any resources from the
- * network
+ * @param flag true means block network loads by the Service Workers
*/
public abstract void setBlockNetworkLoads(boolean flag);
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java
index 49effe47aa55..5c473970a4de 100644
--- a/core/java/android/webkit/WebSettings.java
+++ b/core/java/android/webkit/WebSettings.java
@@ -119,6 +119,11 @@ public abstract class WebSettings {
int value;
}
+ /** @hide */
+ @IntDef({LOAD_DEFAULT, LOAD_NORMAL, LOAD_CACHE_ELSE_NETWORK, LOAD_NO_CACHE, LOAD_CACHE_ONLY})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface CacheMode {}
+
/**
* Default cache usage mode. If the navigation type doesn't impose any
* specific behavior, use cached resources when they are available
@@ -876,8 +881,7 @@ public abstract class WebSettings {
* {@link android.Manifest.permission#INTERNET} permission, otherwise it is
* true.
*
- * @param flag whether the WebView should not load any resources from the
- * network
+ * @param flag true means block network loads by the WebView
* @see android.webkit.WebView#reload
*/
public abstract void setBlockNetworkLoads(boolean flag);
@@ -1275,7 +1279,7 @@ public abstract class WebSettings {
*
* @param mode the mode to use
*/
- public abstract void setCacheMode(int mode);
+ public abstract void setCacheMode(@CacheMode int mode);
/**
* Gets the current setting for overriding the cache mode.
@@ -1283,6 +1287,7 @@ public abstract class WebSettings {
* @return the current setting for overriding the cache mode
* @see #setCacheMode
*/
+ @CacheMode
public abstract int getCacheMode();
/**
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java
index 682d6857dd15..2813f0c889da 100644
--- a/core/java/android/widget/Editor.java
+++ b/core/java/android/widget/Editor.java
@@ -1465,6 +1465,16 @@ public class Editor {
// sendUpdateSelection knows to avoid sending if the selection did
// not actually change.
sendUpdateSelection();
+
+ // Show drag handles if they were blocked by batch edit mode.
+ if (mTextActionMode != null) {
+ final CursorController cursorController = mTextView.hasSelection() ?
+ getSelectionController() : getInsertionController();
+ if (cursorController != null && !cursorController.isActive()
+ && !cursorController.isCursorBeingModified()) {
+ cursorController.show();
+ }
+ }
}
static final int EXTRACT_NOTHING = -2;
diff --git a/core/java/com/android/internal/policy/DecorView.java b/core/java/com/android/internal/policy/DecorView.java
index 68a1378b9381..bd6f3a9040c1 100644
--- a/core/java/com/android/internal/policy/DecorView.java
+++ b/core/java/com/android/internal/policy/DecorView.java
@@ -43,6 +43,7 @@ import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Rect;
+import android.graphics.Region;
import android.graphics.Shader;
import android.graphics.drawable.Drawable;
import android.os.RemoteException;
@@ -259,6 +260,26 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
}
@Override
+ public boolean gatherTransparentRegion(Region region) {
+ boolean statusOpaque = gatherTransparentRegion(mStatusColorViewState, region);
+ boolean navOpaque = gatherTransparentRegion(mNavigationColorViewState, region);
+ boolean decorOpaque = super.gatherTransparentRegion(region);
+
+ // combine bools after computation, so each method above always executes
+ return statusOpaque || navOpaque || decorOpaque;
+ }
+
+ boolean gatherTransparentRegion(ColorViewState colorViewState, Region region) {
+ if (colorViewState.view != null && colorViewState.visible && isResizing()) {
+ // If a visible ColorViewState is in a resizing host DecorView, forcibly register its
+ // opaque area, since it's drawn by a different root RenderNode. It would otherwise be
+ // rejected by ViewGroup#gatherTransparentRegion() for the view not being VISIBLE.
+ return colorViewState.view.gatherTransparentRegion(region);
+ }
+ return false; // no opaque area added
+ }
+
+ @Override
public void onDraw(Canvas c) {
super.onDraw(c);
mBackgroundFallback.draw(mContentRoot, c, mWindow.mContentParent);
diff --git a/core/java/com/android/internal/util/RingBufferIndices.java b/core/java/com/android/internal/util/RingBufferIndices.java
new file mode 100644
index 000000000000..fe751f4efa09
--- /dev/null
+++ b/core/java/com/android/internal/util/RingBufferIndices.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.internal.util;
+
+/**
+ * Helper class for implementing a ring buffer. This supplies the indices, you supply
+ * the array(s).
+ */
+public class RingBufferIndices {
+ private final int mCapacity;
+
+ // The first valid element and the next open slot.
+ private int mStart;
+ private int mSize;
+
+ /**
+ * Create ring buffer of the given capacity.
+ */
+ public RingBufferIndices(int capacity) {
+ mCapacity = capacity;
+ }
+
+ /**
+ * Add a new item to the ring buffer. If the ring buffer is full, this
+ * replaces the oldest item.
+ * @return Returns the index at which the new item appears, for placing in your array.
+ */
+ public int add() {
+ if (mSize < mCapacity) {
+ final int pos = mSize;
+ mSize++;
+ return pos;
+ }
+ int pos = mStart;
+ mStart++;
+ if (mStart == mCapacity) {
+ mStart = 0;
+ }
+ return pos;
+ }
+
+ /**
+ * Clear the ring buffer.
+ */
+ public void clear() {
+ mStart = 0;
+ mSize = 0;
+ }
+
+ /**
+ * Return the current size of the ring buffer.
+ */
+ public int size() {
+ return mSize;
+ }
+
+ /**
+ * Convert a position in the ring buffer that is [0..size()] to an offset
+ * in the array(s) containing the ring buffer items.
+ */
+ public int indexOf(int pos) {
+ int index = mStart + pos;
+ if (index >= mCapacity) {
+ index -= mCapacity;
+ }
+ return index;
+ }
+}
diff --git a/core/java/com/android/internal/view/IInputConnectionWrapper.java b/core/java/com/android/internal/view/IInputConnectionWrapper.java
index 3a4afad3f367..59b4b35fa24e 100644
--- a/core/java/com/android/internal/view/IInputConnectionWrapper.java
+++ b/core/java/com/android/internal/view/IInputConnectionWrapper.java
@@ -71,6 +71,8 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub {
private Object mLock = new Object();
@GuardedBy("mLock")
private boolean mFinished = false;
+ @GuardedBy("mLock")
+ private String mInputMethodId;
static class SomeArgs {
Object arg1;
@@ -109,6 +111,18 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub {
}
}
+ public String getInputMethodId() {
+ synchronized (mLock) {
+ return mInputMethodId;
+ }
+ }
+
+ public void setInputMethodId(final String inputMethodId) {
+ synchronized (mLock) {
+ mInputMethodId = inputMethodId;
+ }
+ }
+
abstract protected boolean isActive();
/**
@@ -119,9 +133,11 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub {
/**
* Called when the input method started or stopped full-screen mode.
- *
+ * @param enabled {@code true} if the input method starts full-screen mode.
+ * @param calledInBackground {@code true} if this input connection is in a state when incoming
+ * events are usually ignored.
*/
- abstract protected void onReportFullscreenMode(boolean enabled);
+ abstract protected void onReportFullscreenMode(boolean enabled, boolean calledInBackground);
public void getTextAfterCursor(int length, int flags, int seq, IInputContextCallback callback) {
dispatchMessage(obtainMessageIISC(DO_GET_TEXT_AFTER_CURSOR, length, flags, seq, callback));
@@ -464,13 +480,19 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub {
}
case DO_REPORT_FULLSCREEN_MODE: {
InputConnection ic = getInputConnection();
- if (ic == null) {
+ boolean isBackground = false;
+ if (ic == null || !isActive()) {
Log.w(TAG, "reportFullscreenMode on inexistent InputConnection");
- return;
+ isBackground = true;
}
final boolean enabled = msg.arg1 == 1;
- ic.reportFullscreenMode(enabled);
- onReportFullscreenMode(enabled);
+ if (!isBackground) {
+ ic.reportFullscreenMode(enabled);
+ }
+ // Due to the nature of asynchronous event handling, currently InputMethodService
+ // has relied on the fact that #reportFullscreenMode() can be handled even when the
+ // InputConnection is inactive. We have to notify this event to InputMethodManager.
+ onReportFullscreenMode(enabled, isBackground);
return;
}
case DO_PERFORM_PRIVATE_COMMAND: {
diff --git a/core/jni/android_auditing_SecurityLog.cpp b/core/jni/android_auditing_SecurityLog.cpp
deleted file mode 100644
index 78f04cd2ed41..000000000000
--- a/core/jni/android_auditing_SecurityLog.cpp
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <fcntl.h>
-
-#include "JNIHelp.h"
-#include "core_jni_helpers.h"
-#include "jni.h"
-#include "log/logger.h"
-
-// The size of the tag number comes out of the payload size.
-#define MAX_EVENT_PAYLOAD (LOGGER_ENTRY_MAX_PAYLOAD - sizeof(int32_t))
-
-namespace android {
-
-static jclass gCollectionClass;
-static jmethodID gCollectionAddID;
-
-static jclass gEventClass;
-static jmethodID gEventInitID;
-
-static jclass gIntegerClass;
-static jfieldID gIntegerValueID;
-
-static jclass gLongClass;
-static jfieldID gLongValueID;
-
-static jclass gFloatClass;
-static jfieldID gFloatValueID;
-
-static jclass gStringClass;
-
-
-static jboolean android_auditing_SecurityLog_isLoggingEnabled(JNIEnv* env,
- jobject /* clazz */) {
- return (bool)__android_log_security();
-}
-
-static jint android_auditing_SecurityLog_writeEvent_String(JNIEnv* env,
- jobject /* clazz */,
- jint tag, jstring value) {
- uint8_t buf[MAX_EVENT_PAYLOAD];
-
- // Don't throw NPE -- I feel like it's sort of mean for a logging function
- // to be all crashy if you pass in NULL -- but make the NULL value explicit.
- const char *str = value != NULL ? env->GetStringUTFChars(value, NULL) : "NULL";
- uint32_t len = strlen(str);
- size_t max = sizeof(buf) - sizeof(len) - 2; // Type byte, final newline
- if (len > max) len = max;
-
- buf[0] = EVENT_TYPE_STRING;
- memcpy(&buf[1], &len, sizeof(len));
- memcpy(&buf[1 + sizeof(len)], str, len);
- buf[1 + sizeof(len) + len] = '\n';
-
- if (value != NULL) env->ReleaseStringUTFChars(value, str);
- return __android_log_security_bwrite(tag, buf, 2 + sizeof(len) + len);
-}
-
-static jint android_auditing_SecurityLog_writeEvent_Array(JNIEnv* env, jobject clazz,
- jint tag, jobjectArray value) {
- if (value == NULL) {
- return android_auditing_SecurityLog_writeEvent_String(env, clazz, tag, NULL);
- }
-
- uint8_t buf[MAX_EVENT_PAYLOAD];
- const size_t max = sizeof(buf) - 1; // leave room for final newline
- size_t pos = 2; // Save room for type tag & array count
-
- jsize copied = 0, num = env->GetArrayLength(value);
- for (; copied < num && copied < 255; ++copied) {
- jobject item = env->GetObjectArrayElement(value, copied);
- if (item == NULL || env->IsInstanceOf(item, gStringClass)) {
- if (pos + 1 + sizeof(jint) > max) break;
- const char *str = item != NULL ? env->GetStringUTFChars((jstring) item, NULL) : "NULL";
- jint len = strlen(str);
- if (pos + 1 + sizeof(len) + len > max) len = max - pos - 1 - sizeof(len);
- buf[pos++] = EVENT_TYPE_STRING;
- memcpy(&buf[pos], &len, sizeof(len));
- memcpy(&buf[pos + sizeof(len)], str, len);
- pos += sizeof(len) + len;
- if (item != NULL) env->ReleaseStringUTFChars((jstring) item, str);
- } else if (env->IsInstanceOf(item, gIntegerClass)) {
- jint intVal = env->GetIntField(item, gIntegerValueID);
- if (pos + 1 + sizeof(intVal) > max) break;
- buf[pos++] = EVENT_TYPE_INT;
- memcpy(&buf[pos], &intVal, sizeof(intVal));
- pos += sizeof(intVal);
- } else if (env->IsInstanceOf(item, gLongClass)) {
- jlong longVal = env->GetLongField(item, gLongValueID);
- if (pos + 1 + sizeof(longVal) > max) break;
- buf[pos++] = EVENT_TYPE_LONG;
- memcpy(&buf[pos], &longVal, sizeof(longVal));
- pos += sizeof(longVal);
- } else if (env->IsInstanceOf(item, gFloatClass)) {
- jfloat floatVal = env->GetFloatField(item, gFloatValueID);
- if (pos + 1 + sizeof(floatVal) > max) break;
- buf[pos++] = EVENT_TYPE_FLOAT;
- memcpy(&buf[pos], &floatVal, sizeof(floatVal));
- pos += sizeof(floatVal);
- } else {
- jniThrowException(env,
- "java/lang/IllegalArgumentException",
- "Invalid payload item type");
- return -1;
- }
- env->DeleteLocalRef(item);
- }
-
- buf[0] = EVENT_TYPE_LIST;
- buf[1] = copied;
- buf[pos++] = '\n';
- return __android_log_security_bwrite(tag, buf, pos);
-}
-
-static void readEvents(JNIEnv* env, int loggerMode, jlong startTime, jobject out) {
- struct logger_list *logger_list;
- if (startTime) {
- logger_list = android_logger_list_alloc_time(loggerMode,
- log_time(startTime / NS_PER_SEC, startTime % NS_PER_SEC), 0);
- } else {
- logger_list = android_logger_list_alloc(loggerMode, 0, 0);
- }
- if (!logger_list) {
- jniThrowIOException(env, errno);
- return;
- }
-
- if (!android_logger_open(logger_list, LOG_ID_SECURITY)) {
- jniThrowIOException(env, errno);
- android_logger_list_free(logger_list);
- return;
- }
-
- while (1) {
- log_msg log_msg;
- int ret = android_logger_list_read(logger_list, &log_msg);
-
- if (ret == 0) {
- break;
- }
- if (ret < 0) {
- if (ret == -EINTR) {
- continue;
- }
- if (ret == -EINVAL) {
- jniThrowException(env, "java/io/IOException", "Event too short");
- } else if (ret != -EAGAIN) {
- jniThrowIOException(env, -ret); // Will throw on return
- }
- break;
- }
-
- if (log_msg.id() != LOG_ID_SECURITY) {
- continue;
- }
-
- jsize len = ret;
- jbyteArray array = env->NewByteArray(len);
- if (array == NULL) {
- break;
- }
-
- jbyte *bytes = env->GetByteArrayElements(array, NULL);
- memcpy(bytes, log_msg.buf, len);
- env->ReleaseByteArrayElements(array, bytes, 0);
-
- jobject event = env->NewObject(gEventClass, gEventInitID, array);
- if (event == NULL) {
- break;
- }
-
- env->CallBooleanMethod(out, gCollectionAddID, event);
- env->DeleteLocalRef(event);
- env->DeleteLocalRef(array);
- }
-
- android_logger_list_close(logger_list);
-}
-
-static void android_auditing_SecurityLog_readEvents(JNIEnv* env, jobject /* clazz */,
- jobject out) {
-
- if (out == NULL) {
- jniThrowNullPointerException(env, NULL);
- return;
- }
- readEvents(env, ANDROID_LOG_RDONLY | ANDROID_LOG_NONBLOCK, 0, out);
-}
-
-static void android_auditing_SecurityLog_readEventsSince(JNIEnv* env, jobject /* clazz */,
- jlong timestamp,
- jobject out) {
-
- if (out == NULL) {
- jniThrowNullPointerException(env, NULL);
- return;
- }
- readEvents(env, ANDROID_LOG_RDONLY | ANDROID_LOG_NONBLOCK, timestamp, out);
-}
-
-static void android_auditing_SecurityLog_readPreviousEvents(JNIEnv* env, jobject /* clazz */,
- jobject out) {
-
- if (out == NULL) {
- jniThrowNullPointerException(env, NULL);
- return;
- }
- readEvents(env, ANDROID_LOG_RDONLY | ANDROID_LOG_NONBLOCK | ANDROID_LOG_PSTORE, 0, out);
-}
-
-static void android_auditing_SecurityLog_readEventsOnWrapping(JNIEnv* env, jobject /* clazz */,
- jlong timestamp,
- jobject out) {
- if (out == NULL) {
- jniThrowNullPointerException(env, NULL);
- return;
- }
- readEvents(env, ANDROID_LOG_RDONLY | ANDROID_LOG_NONBLOCK | ANDROID_LOG_WRAP, timestamp, out);
-}
-
-/*
- * JNI registration.
- */
-static const JNINativeMethod gRegisterMethods[] = {
- /* name, signature, funcPtr */
- { "isLoggingEnabled",
- "()Z",
- (void*) android_auditing_SecurityLog_isLoggingEnabled
- },
- { "writeEvent",
- "(ILjava/lang/String;)I",
- (void*) android_auditing_SecurityLog_writeEvent_String
- },
- { "writeEvent",
- "(I[Ljava/lang/Object;)I",
- (void*) android_auditing_SecurityLog_writeEvent_Array
- },
- { "readEvents",
- "(Ljava/util/Collection;)V",
- (void*) android_auditing_SecurityLog_readEvents
- },
- { "readEventsSince",
- "(JLjava/util/Collection;)V",
- (void*) android_auditing_SecurityLog_readEventsSince
- },
- { "readPreviousEvents",
- "(Ljava/util/Collection;)V",
- (void*) android_auditing_SecurityLog_readPreviousEvents
- },
- { "readEventsOnWrapping",
- "(JLjava/util/Collection;)V",
- (void*) android_auditing_SecurityLog_readEventsOnWrapping
- },
-};
-
-static struct { const char *name; jclass *clazz; } gClasses[] = {
- { "android/auditing/SecurityLog$SecurityEvent", &gEventClass },
- { "java/lang/Integer", &gIntegerClass },
- { "java/lang/Long", &gLongClass },
- { "java/lang/Float", &gFloatClass },
- { "java/lang/String", &gStringClass },
- { "java/util/Collection", &gCollectionClass },
-};
-
-static struct { jclass *c; const char *name, *ft; jfieldID *id; } gFields[] = {
- { &gIntegerClass, "value", "I", &gIntegerValueID },
- { &gLongClass, "value", "J", &gLongValueID },
- { &gFloatClass, "value", "F", &gFloatValueID },
-};
-
-static struct { jclass *c; const char *name, *mt; jmethodID *id; } gMethods[] = {
- { &gEventClass, "<init>", "([B)V", &gEventInitID },
- { &gCollectionClass, "add", "(Ljava/lang/Object;)Z", &gCollectionAddID },
-};
-
-int register_android_auditing_SecurityLog(JNIEnv* env) {
- for (int i = 0; i < NELEM(gClasses); ++i) {
- jclass clazz = FindClassOrDie(env, gClasses[i].name);
- *gClasses[i].clazz = MakeGlobalRefOrDie(env, clazz);
- }
-
- for (int i = 0; i < NELEM(gFields); ++i) {
- *gFields[i].id = GetFieldIDOrDie(env,
- *gFields[i].c, gFields[i].name, gFields[i].ft);
- }
-
- for (int i = 0; i < NELEM(gMethods); ++i) {
- *gMethods[i].id = GetMethodIDOrDie(env,
- *gMethods[i].c, gMethods[i].name, gMethods[i].mt);
- }
-
- return RegisterMethodsOrDie(
- env,
- "android/auditing/SecurityLog",
- gRegisterMethods, NELEM(gRegisterMethods));
-}
-
-}; // namespace android
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index d7bc54d3ee48..e68d8a68e7c2 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -192,6 +192,7 @@
<protected-broadcast android:name="android.btopp.intent.action.RETRY" />
<protected-broadcast android:name="android.btopp.intent.action.OPEN" />
<protected-broadcast android:name="android.btopp.intent.action.OPEN_INBOUND" />
+ <protected-broadcast android:name="android.btopp.intent.action.TRANSFER_COMPLETE" />
<protected-broadcast android:name="com.android.bluetooth.pbap.authchall" />
<protected-broadcast android:name="com.android.bluetooth.pbap.userconfirmtimeout" />
<protected-broadcast android:name="com.android.bluetooth.pbap.authresponse" />
@@ -306,7 +307,7 @@
<protected-broadcast android:name="android.intent.action.ACTION_IDLE_MAINTENANCE_START" />
<protected-broadcast android:name="android.intent.action.ACTION_IDLE_MAINTENANCE_END" />
- <protected-broadcast android:name="com.android.server.task.controllers.IdleController.ACTION_TRIGGER_IDLE" />
+ <protected-broadcast android:name="com.android.server.ACTION_TRIGGER_IDLE" />
<protected-broadcast android:name="android.intent.action.HDMI_PLUGGED" />
@@ -1023,7 +1024,8 @@
android:protectionLevel="signature|privileged" />
<!-- @SystemApi Allows an application to send SMS to premium shortcodes without user permission.
- <p>Not for use by third-party applications. -->
+ <p>Not for use by third-party applications.
+ @hide -->
<permission android:name="android.permission.SEND_SMS_NO_CONFIRMATION"
android:protectionLevel="signature|privileged" />
@@ -1034,7 +1036,8 @@
<!-- @SystemApi Allows an application to receive emergency cell broadcast messages,
to record or display them to the user.
- <p>Not for use by third-party applications. -->
+ <p>Not for use by third-party applications.
+ @hide -->
<permission android:name="android.permission.RECEIVE_EMERGENCY_BROADCAST"
android:protectionLevel="signature|privileged" />
@@ -3090,6 +3093,7 @@
android:excludeFromRecents="true"
android:documentLaunchMode="never"
android:relinquishTaskIdentity="true"
+ android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboard|keyboardHidden"
android:process=":ui">
<intent-filter>
<action android:name="android.intent.action.CHOOSER" />
diff --git a/core/res/res/layout/global_actions_item.xml b/core/res/res/layout/global_actions_item.xml
index b3a5aa23b11f..e5a9854d50c7 100644
--- a/core/res/res/layout/global_actions_item.xml
+++ b/core/res/res/layout/global_actions_item.xml
@@ -21,8 +21,8 @@
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="horizontal"
-
android:paddingStart="8dip"
+ android:paddingEnd="16dip"
android:paddingTop="6dip"
android:paddingBottom="6dip"
>
@@ -38,21 +38,20 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
+ android:layout_marginEnd="8dip"
>
<TextView android:id="@+id/message"
- android:layout_width="match_parent"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="top"
-
- android:gravity="center_vertical"
+ android:layout_gravity="top|start"
+ android:gravity="center_vertical|start"
android:textAppearance="?android:attr/textAppearanceLarge"
/>
<TextView android:id="@+id/status"
- android:layout_width="match_parent"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="bottom"
+ android:layout_gravity="bottom|start"
android:minHeight="26dp"
-
android:textAppearance="?android:attr/textAppearanceSmall"
/>
</LinearLayout>
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 64aa609fd857..d4d20734049f 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Haal venster-inhoud op"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Ondersoek die inhoud van \'n venster waarmee jy interaksie het."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Skakel Verken deur raak aan"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Items waarop getik word, sal hardop gesê word en die skerm kan met behulp van gebare verken word."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Skakel verbeterde webtoeganklikheid aan"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skripte kan geïnstalleer word om program-inhoud meer toeganklik te maak."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Neem teks wat jy tik waar"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Voer PUK en nuwe PIN-kode in"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-kode"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nuwe PIN-kode"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Tik om wagwoord in te tik"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Voer wagwoord in om te ontsluit"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Voer PIN in om te ontsluit"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Verkeerde PIN-kode."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Sommige stelselfunksies werk moontlik nie"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Nie genoeg berging vir die stelsel nie. Maak seker jy het 250 MB spasie beskikbaar en herbegin."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> loop tans"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Tik vir meer inligting of om die program te stop."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Kanselleer"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Begin programme."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Voltooi herlaai."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> loop"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Tik om na program te wissel"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Wissel programme?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"\'n Ander program loop reeds wat gestop moet word voor jy \'n nuwe een kan begin."</string>
<string name="old_app_action" msgid="493129172238566282">"Keer terug na <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Begin <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Stop die ou program sonder om te stoor."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> het berginglimiet oorskry"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Hoopstorting is ingesamel; tik om te deel"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Deel hoopstorting?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Die proses <xliff:g id="PROC">%1$s</xliff:g> het sy prosesberginglimiet van <xliff:g id="SIZE">%2$s</xliff:g> oorskry. \'n Hoopstorting is beskikbaar wat jy met sy ontwikkelaar kan deel. Pas op: Hierdie hoopstorting kan enige van jou persoonlike inligting bevat waartoe die program toegang het."</string>
<string name="sendText" msgid="5209874571959469142">"Kies \'n handeling vir teks"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi het geen internettoegang nie"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Tik vir opsies"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Kon nie aan Wi-Fikoppel nie"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" het \'n swak internetverbinding."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Laat verbinding toe?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Begin Wi-Fi Direct. Dit sal die Wi-Fi-kliënt/warmkol afskakel."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Kon nie Wi-Fi Direct begin nie."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direk is aan"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Tik vir instellings"</string>
<string name="accept" msgid="1645267259272829559">"Aanvaar"</string>
<string name="decline" msgid="2112225451706137894">"Weier"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Uitnodiging gestuur"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB vir foto-oordrag"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB vir MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Gekoppel aan \'n USB-toebehoorsel"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Tik vir meer opsies."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-ontfouter gekoppel"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Tik om USB-ontfouting te deaktiveer."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Neem tans foutverslag …"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Deel foutverslag?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Deel tans foutverslag …"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Nuwe <xliff:g id="NAME">%s</xliff:g> bespeur"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Om foto\'s en media oor te dra"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Gekorrupteerde <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> is korrup. Tik om reg te maak."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Niegesteunde <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Hierdie toestel steun nie hierdie <xliff:g id="NAME">%s</xliff:g> nie. Tik om in \'n gesteunde formaat op te stel."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> is onverwags verwyder"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Demonteer <xliff:g id="NAME">%s</xliff:g> voordat dit verwyder word om dataverlies te voorkom"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Het <xliff:g id="NAME">%s</xliff:g> verwyder"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Altydaan-VPN koppel tans..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Altydaan-VPN gekoppel"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Altydaan-VPN-fout"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Tik om op te stel"</string>
<string name="upload_file" msgid="2897957172366730416">"Kies lêer"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Geen lêer gekies nie"</string>
<string name="reset" msgid="2448168080964209908">"Stel terug"</string>
<string name="submit" msgid="1602335572089911941">"Dien in"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Motormodus geaktiveer"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Tik om motormodus te verlaat."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Verbinding of Wi-Fi-warmkol aktief"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tik om op te stel."</string>
<string name="back_button_label" msgid="2300470004503343439">"Terug"</string>
<string name="next_button_label" msgid="1080555104677992408">"Volgende"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Slaan oor"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Voeg rekening by"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Vermeerder"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Verminder"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> raak en hou."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Gly op om te vermeeder en af om te verminder."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Vermeerder minuut"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Verminder minute"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-berging"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Redigeer"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Dataverbruik-waarskuwing"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Tik om gebruik en instellings te bekyk."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G-datalimiet bereik"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G-datalimiet bereik"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Sellulêredata-limiet bereik"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi se datalimiet oorskry"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> oor gespesifiseerde limiet."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Agtergronddata is beperk"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Tik om beperking te verwyder."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Sekuriteitsertifikaat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Die sertifikaat is geldig."</string>
<string name="issued_to" msgid="454239480274921032">"Uitgereik aan:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Kies jaar"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> uitgevee"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Werk-<xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Raak en hou Terug om hierdie skerm te ontspeld."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Raak en hou Oorsig om hierdie skerm te ontspeld."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Program is vasgespeld: Dit mag nie op hierdie toestel ontspeld word nie."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Skerm vasgespeld"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Skerm ontspeld"</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index d88315ad8686..c69f4cc0c74b 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"የመስኮት ይዘት ሰርስረው ያውጡ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"መስተጋበር የሚፈጥሩት የመስኮት ይዘት ይመርምሩ።"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"በመንካት ያስሱን ያብሩ"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"መታ የተደረጉ ንጥሎች ጮክ ተብለው ይነገሩና የጣት ምልክቶችን በመጠቀም ማያ ገጹ ሊታሰስ ይችላል።"</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"የተሻሻለ የድር ተደራሽነት ያብሩ"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"የመተግበሪያ ይዘት ይበልጥ የሚገኙ ለማድረግ ስክሪፕቶች ሊጫኑ ይችላሉ።"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"የሚተይቡት ጽሑፍ ይመልከቱ"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK እና አዲስ ፒን ተይብ"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"የPUK ኮድ"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"አዲስ Pin ኮድ"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"የይለፍ ቃል ለመተየብ መታ ያድርጉ"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"ለመክፈት የይለፍ ቃል ተይብ"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"ለመክፈት ፒን ተይብ"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"ትክክል ያልሆነ ፒን ኮድ።"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"አንዳንድ የስርዓት ተግባራት ላይሰሩ ይችላሉ"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"ለስርዓቱ የሚሆን በቂ ቦታ የለም። 250 ሜባ ነጻ ቦታ እንዳለዎት ያረጋግጡና ዳግም ያስጀምሩ።"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> እያሄደ ነው"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"ተጨማሪ መረጃ ለማግኘት ወይም መተግበሪያውን ለማቆም መታ ያድርጉ።"</string>
<string name="ok" msgid="5970060430562524910">"እሺ"</string>
<string name="cancel" msgid="6442560571259935130">"ይቅር"</string>
<string name="yes" msgid="5362982303337969312">"እሺ"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"መተግበሪያዎችን በማስጀመር ላይ፡፡"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"አጨራረስ ማስነሻ፡፡"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> አሂድ"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"ወደ መተግበሪያ ለመቀየር መታ ያድርጉ"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"መተግበሪያዎችን ለውጥ?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"አዲስ ከመጀመርህ በፊት መቆም ያለበት ሌላ መተግበሪያ እየሄደ ነው።"</string>
<string name="old_app_action" msgid="493129172238566282">"ወደ <xliff:g id="OLD_APP">%1$s</xliff:g> ተመለስ"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"ጀምር <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"የድሮውን ትግበራ ሳታስቀምጥ አቁም።"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> የማህደረ ትውስታ ገደብን አልፏል"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"የቆሻሻ ቁልል ተሰብስቧል፤ ለማጋራት መታ ያድርጉ"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"የቆሻሻ ቁልል ይጋራ?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"የ<xliff:g id="PROC">%1$s</xliff:g> ሂደት የማህደረ ትውስታ ሂደት <xliff:g id="SIZE">%2$s</xliff:g> ገደቡን አልፏል። የቆሻሻ ቁልል ከገንቢው ጋር እንዲያጋሩ ለእርስዎ ሊገኝ ይችላል። ጥንቃቄ ያድርጉ፦ ይህ የቆሻሻ ቁልል መተግበሪያው መዳረሻ ያለው የሆነ የእርስዎ የግል መረጃን ሊይዝ ይችላል።"</string>
<string name="sendText" msgid="5209874571959469142">"ለፅሁፍ ድርጊት ምረጥ"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi በይነመረብ መዳረሻ የለውም"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"ለአማራጮች መታ ያድርጉ"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"ወደ Wi-Fi ለማያያዝ አልተቻለም"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ደካማ የበይነመረብ ግንኙነት ኣለው።"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"ግንኙነት ይፈቀድ?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"የWi-Fi በቀጥታ ጀምር።ይህ የWi-Fi ደንበኛ /ድረስ ነጥብ ያጠፋል።"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"በቀጥታ Wi-Fi ማስጀመር አልተቻለም።"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"የWi-Fi ቀጥታ በርቷል"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"ለቅንብሮች መታ ያድርጉ"</string>
<string name="accept" msgid="1645267259272829559">"ተቀበል"</string>
<string name="decline" msgid="2112225451706137894">"ውድቅ አድርግ"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ግብዣ ተልኳል"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ዩኤስቢ ለፎቶ ሽግግር"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"ዩኤስቢ ለMIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"ለUSB ተቀጥላ ተያይዟል"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"ለተጨማሪ አማራጮች መታ ያድርጉ።"</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB አድስ ተያይዟል"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"የዩኤስቢ ማረሚያን ለማሰናከል መታ ያድርጉ።"</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"የሳንካ ሪፖርትን በመውሰድ ላይ…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"የሳንካ ሪፖርት ይጋራ?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"የሳንካ ሪፖርትን በማጋራት ላይ…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"አዲስ <xliff:g id="NAME">%s</xliff:g> ተገኝቷል"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ፎቶዎችን እና ማህደረመረጃን ለማስተላለፍ"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"ተበላሽቷል <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> ተበላሽቷል። ለማስተካከል መታ ያድርጉ።"</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"ያልተደገፈ <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"ይህ መሣሪያ ይህን <xliff:g id="NAME">%s</xliff:g> አይደግፍም። በሚደገፍ ቅርጸት ለማዘጋጀት መታ ያድርጉ።"</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ሳይታሰብ ተወግዷል"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ውሂብ እንዳይጠፋ ለመከላከል ከማስወገድዎ በፊት <xliff:g id="NAME">%s</xliff:g>ን ያላቅቁት"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"«<xliff:g id="NAME">%s</xliff:g>» ተወግዷል"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"ሁልጊዜ የበራ VPN በመገናኘት ላይ…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"ሁልጊዜ የበራ VPN ተገናኝቷል"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"ሁልጊዜ የበራ VPN ስህተት"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"ለማዋቀር መታ ያድርጉ"</string>
<string name="upload_file" msgid="2897957172366730416">"ፋይል ምረጥ"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ምንም ፋይል አልተመረጠም"</string>
<string name="reset" msgid="2448168080964209908">"ዳግም አስጀምር"</string>
<string name="submit" msgid="1602335572089911941">"አስረክብ"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"የመኪና ሁነታ ነቅቷል"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"ከመኪና ሁነታ ለመውጣት መታ ያድርጉ።"</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"መሰካት ወይም ገባሪ ድረስ ነጥብ"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"ለማዋቀር መታ ያድርጉ።"</string>
<string name="back_button_label" msgid="2300470004503343439">"ተመለስ"</string>
<string name="next_button_label" msgid="1080555104677992408">"ቀጥሎ"</string>
<string name="skip_button_label" msgid="1275362299471631819">"ዝለል"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"መለያ አክል"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"ጨምር"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"ቀንስ"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> መታ አድርገው ይያዙ።"</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"ለመጨመር ወደ ላይ እና ለመቀነስ ወደ ታች አንሸራትት።"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"ደቂቃ ጨምር"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"ደቂቃ ቀንስ"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"የUSB ማከማቻ"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"አርትዕ"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"የውሂብ አጠቃቀም ማስጠንቀቂየ"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"አጠቃቀምን እና ቅንብሮችን ለማየት መታ ያድርጉ።"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"የ2ጂ-3ጂ ውሂብ ገደብ ላይ ተደርሷል"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"የ4ጂ ውሂብ ገደብ ላይ ተደርሷል"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"የተንቀሳቃሽ ስልክ ውሂብ ገደብ ላይ ተደርሷል"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi ውሂብ ገደብ ታልፏል"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> ከተወሰነለት በላይ።"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"ዳራ ውሂብ የተገደበ ነው"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"ገደብን ለማስወገድ መታ ያድርጉ።"</string>
<string name="ssl_certificate" msgid="6510040486049237639">"የደህንነት ዕውቅና ማረጋገጫ"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ይህ የዐዕውቅና ማረጋገጫ ትክክል ነው።"</string>
<string name="issued_to" msgid="454239480274921032">"ለ፡ ተዘጋጀ"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"ዓመት ይምረጡ"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ተሰርዟል"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"ስራ <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"ይህን ማያ ገጽ ለመንቀል ተመለስን ይንኩትና ያዙት።"</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"ይህን ማያ ገጽ ለመንቀል አጠቃላይ እይታን ይንኩትና ይያዙት።"</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"መተግበሪያ ተሰክቷል፦ በዚህ መሣሪያ ላይ ማላቀቅ አይፈቀድም።"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"ማያ ገጽ ተሰክቷል"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"ማያ ገጽ ተነቅሏል"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 97ba732af494..69b5badc25be 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -275,8 +275,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"استرداد محتوى النافذة"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"فحص محتوى نافذة يتم التفاعل معها."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"تشغيل الاستكشاف باللمس"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"سيتم نطق العناصر التي تم النقر عليها بصوت عال ويمكن استكشاف الشاشة باستخدام الإيماءات."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"تشغيل إمكانية الدخول المحسّن عبر الويب"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"قد يتم تثبيت النصوص البرمجية لتسهيل الدخول إلى المحتوى."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"ملاحظة النص الذي تكتبه"</string>
@@ -675,8 +674,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"‏اكتب رمز PUK ورمز رمز PIN الجديد"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"‏رمز PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"‏رمز رمز PIN الجديد"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"انقر لكتابة كلمة المرور"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"اكتب كلمة المرور لإلغاء التأمين"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"‏اكتب رمز PIN لإلغاء التأمين"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"‏رمز PIN غير صحيح."</string>
@@ -984,8 +982,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"قد لا تعمل بعض وظائف النظام"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"ليست هناك سعة تخزينية كافية للنظام. تأكد من أنه لديك مساحة خالية تبلغ ۲۵۰ ميغابايت وأعد التشغيل."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> قيد التشغيل"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"انقر للحصول على مزيد من المعلومات أو لإيقاف التطبيق."</string>
<string name="ok" msgid="5970060430562524910">"موافق"</string>
<string name="cancel" msgid="6442560571259935130">"إلغاء"</string>
<string name="yes" msgid="5362982303337969312">"موافق"</string>
@@ -1059,8 +1056,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"بدء التطبيقات."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"جارٍ إعادة التشغيل."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> يعمل"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"انقر للتبديل إلى التطبيق"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"تبديل التطبيقات؟"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"يوجد تطبيق آخر قيد التشغيل فعلاً ويجب إيقافه حتى تتمكن من بدء تطبيق جديد."</string>
<string name="old_app_action" msgid="493129172238566282">"عودة إلى <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1068,8 +1064,7 @@
<string name="new_app_action" msgid="5472756926945440706">"بدء <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"إيقاف التطبيق القديم بدون الحفظ."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"لقد تجاوزت <xliff:g id="PROC">%1$s</xliff:g> حد الذاكرة."</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"تم نسخ الذاكرة، انقر للمشاركة."</string>
<string name="dump_heap_title" msgid="5864292264307651673">"هل تريد مشاركة نَسْخ الذاكرة؟"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"تجاوزت عملية <xliff:g id="PROC">%1$s</xliff:g> حد الذاكرة المخصص لها وقدره <xliff:g id="SIZE">%2$s</xliff:g>، ويتوفر نَسْخ للذاكرة لمشاركته مع مطور برامج العملية ولكن توخ الحذر حيث قد يحتوي نَسْخ الذاكرة هذا على معلومات شخصية يملك التطبيق حق الوصول إليها."</string>
<string name="sendText" msgid="5209874571959469142">"اختيار إجراء للنص"</string>
@@ -1113,8 +1108,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"‏شبكة Wi-Fi غير متصلة بالإنترنت"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"انقر للحصول على الخيارات."</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"‏تعذر الاتصال بـ Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" لديها اتصال إنترنت رديء."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"هل تريد السماح بالاتصال؟"</string>
@@ -1124,8 +1118,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"‏ابدأ Wi-Fi Direct. يؤدي هذا إلى إيقاف عميل/نقطة اتصال Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"‏تعذر بدء Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"‏تم تشغيل اتصال Wi-Fi المباشر"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"انقر للحصول على الإعدادات."</string>
<string name="accept" msgid="1645267259272829559">"قبول"</string>
<string name="decline" msgid="2112225451706137894">"رفض"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"تم إرسال الدعوة"</string>
@@ -1177,11 +1170,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"‏USB لنقل الصور"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"‏USB لـ MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"‏الاتصال بجهاز USB ملحق"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"انقر للحصول على المزيد من الخيارات."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"‏تم توصيل تصحيح أخطاء USB"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"‏انقر لتعطيل تصحيح أخطاء USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"جارٍ الحصول على تقرير الخطأ…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"هل تريد مشاركة تقرير الخطأ؟"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"جارٍ مشاركة تقرير الخطأ…"</string>
@@ -1201,11 +1192,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"تم اكتشاف <xliff:g id="NAME">%s</xliff:g> جديدة"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"لنقل الصور والوسائط"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"أصاب <xliff:g id="NAME">%s</xliff:g> التلف"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> تالف. انقر لإصلاحه."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> غير متوافق"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"هذا الجهاز غير متوافق مع <xliff:g id="NAME">%s</xliff:g> هذا. انقر للإعداد بتنسيق متوافق."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"تمت إزالة <xliff:g id="NAME">%s</xliff:g> بشكل غير متوقع"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"إلغاء تحميل <xliff:g id="NAME">%s</xliff:g> قبل الإزالة لتجنب فقد البيانات"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"تمت إزالة <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1277,18 +1266,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"‏جارٍ الاتصال بشبكة ظاهرية خاصة (VPN) دائمة التشغيل..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"‏تم الاتصال بشبكة ظاهرية خاصة (VPN) دائمة التشغيل"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"‏خطأ بشبكة ظاهرية خاصة (VPN) دائمة التشغيل"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"انقر للتهيئة."</string>
<string name="upload_file" msgid="2897957172366730416">"اختيار ملف"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"لم يتم اختيار أي ملف"</string>
<string name="reset" msgid="2448168080964209908">"إعادة تعيين"</string>
<string name="submit" msgid="1602335572089911941">"إرسال"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"تم تمكين وضع السيارة"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"انقر للخروج من وضع السيارة."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"النطاق أو نقطة الاتصال نشطة"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"انقر للإعداد."</string>
<string name="back_button_label" msgid="2300470004503343439">"رجوع"</string>
<string name="next_button_label" msgid="1080555104677992408">"التالي"</string>
<string name="skip_button_label" msgid="1275362299471631819">"تخطٍ"</string>
@@ -1325,8 +1311,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"إضافة حساب"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"زيادة"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"تقليل"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> المس مع الاستمرار."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"مرر لأعلى للزيادة ولأسفل للتقليل."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"زيادة الدقائق"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"تقليل الدقائق"</string>
@@ -1370,8 +1355,7 @@
<string name="storage_usb" msgid="3017954059538517278">"‏وحدة تخزين USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"تعديل"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"تحذير استخدام البيانات"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"انقر لعرض الاستخدام والإعدادات."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"‏تم بلوغ حد بيانات اتصال 2G-3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"‏تم بلوغ حد بيانات اتصال 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"تم بلوغ حد بيانات الجوّال"</string>
@@ -1383,8 +1367,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"‏تم تجاوز حد بيانات شبكة Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> فوق الحد المعين."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"تم تقييد بيانات الخلفية"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"انقر لإزالة القيد."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"شهادة الأمان"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"هذه الشهادة صالحة."</string>
<string name="issued_to" msgid="454239480274921032">"إصدار لـ:"</string>
@@ -1604,10 +1587,8 @@
<string name="select_year" msgid="7952052866994196170">"تحديد العام"</string>
<string name="deleted_key" msgid="7659477886625566590">"تم حذف <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> المخصص للعمل"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"لإزالة تثبيت هذه الشاشة، يمكنك لمس زر الرجوع مع الاستمرار."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"لإزالة تثبيت هذه الشاشة، يمكنك لمس زر \"نظرة عامة\" مع الاستمرار."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"التطبيق مقيد: ولا يسمح بإلغاء التقييد على هذا الجهاز."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"تم تثبيت الشاشة"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"تم إلغاء تثبيت الشاشة"</string>
diff --git a/core/res/res/values-az-rAZ/strings.xml b/core/res/res/values-az-rAZ/strings.xml
index effdc45d1cbb..3facda722223 100644
--- a/core/res/res/values-az-rAZ/strings.xml
+++ b/core/res/res/values-az-rAZ/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pəncərənin məzmununu əldə edin"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Əlaqədə olduğunuz pəncərənin məzmununu nəzərdən keçirin."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Toxunaraq Kəşf et funksiyasını yandırın"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Tıklanan hissələr səsləndiriləcək və ekran jestlərlə idarə oluna biləcək."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"İnkişaf etmiş veb əlçatımlılığı yandırın"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skriptlər tətbiq məzmununun daha əlçatımlı olması üçün quraşdırıla bilər."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Yazdığınız mətni izləyin"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK və yeni PİN kod daxil edin"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kod"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Yeni PIN kodu"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Şifrə daxil etmək üçün tıklayın"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Kilidi açmaq üçün parol yazın"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Kilidi açmaq üçün PIN daxil edin"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Yanlış PIN kodu."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Bəzi sistem funksiyaları işləməyə bilər"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Sistem üçün yetərincə yaddaş ehtiyatı yoxdur. 250 MB yaddaş ehtiyatının olmasına əmin olun və yenidən başladın."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> işlənir"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Daha çox məlumat üçün və ya tətbiqi dayandırmaq üçün tıklayın."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Ləğv et"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Tətbiqlər başladılır."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Yükləmə başa çatır."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> çalışır"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Tətbiqə keçmək üçün tıklayın"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Tətbiqlərə keçilsin?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Bir tətbiq artıq işləyir. Digərini başlatmaq üçün onu dayandırmalısınız."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> bölməsinə qayıdın"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> tətbiqini başladın"</string>
<string name="new_app_description" msgid="1932143598371537340">"Köhnə tətbiqi yadda saxlamadan dayandırın."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> yaddaş limitini keçdi"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Yığın toplanıb; paylaşmaq üçün tıklayın"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Yığın paylaşılsın?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> prosesi <xliff:g id="SIZE">%2$s</xliff:g> ölçüsünün yaddaş limitini prosesini keçib. Yığın tərtibatçısı ilə paylaşmaq üçün sizə istifadəsi mümkündür. Ehtiyatlı olun: bu yığında proqramın giriş icazəsi olduğu şəxsi məlumatlarınız ola bilər."</string>
<string name="sendText" msgid="5209874571959469142">"Mətn üçün əməliyyat seçin"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi-ın İnternetə girişi yoxdur"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Seçimlər üçün tıklayın"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi\'a qoşulmaq alınmadı"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" internet bağlantısı keyfiyyətsizdir."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Bağlantıya icazə verilsin?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Direct əməliyyatını başlat. Bu Wi-Fi müştəri/hotspotu bağlayacaq."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct başladıla bilmədi."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct aktivdir"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Ayarlar üçün tıklayın"</string>
<string name="accept" msgid="1645267259272829559">"Qəbul edin"</string>
<string name="decline" msgid="2112225451706137894">"İmtina edin"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Dəvətnamə göndərildi"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Foto transfer üçün USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI üçün USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB aksesuara qoşuldu"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Əlavə seçimlər üçün tıklayın."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB sazlama qoşuludur"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB debaqı deaktivasiya etmək üçün tıklayın."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Baq hesabatı verilir..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Baq hesabatı paylaşılsın?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Baq hesabatı paylaşılır..."</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Yeni <xliff:g id="NAME">%s</xliff:g> aşkarlandı"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Fotoların və medianın köçürülməsi üçün"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Zədələnmiş <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> zədələnib. Düzəltmək üçün tıklayın."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Dəstəklənməyən <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"<xliff:g id="NAME">%s</xliff:g> bu cihaz tərəfindən dəstəklənmir. Dəstəklənən formatda ayarlamaq üçün tıklayın."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> gözlənilmədən çıxarıldı"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Data itkisinin qarşısını almaq üçün <xliff:g id="NAME">%s</xliff:g> kartını çıxarın"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> çıxarıldı"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Həmişə aktiv VPN bağlanır..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN bağlantısı həmişə aktiv"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Həmişə aktiv VPN xətası"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Konfiqurasiya üçün tıklayın"</string>
<string name="upload_file" msgid="2897957172366730416">"Fayl seçin"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Heç bir fayl seçilməyib"</string>
<string name="reset" msgid="2448168080964209908">"Sıfırlayın"</string>
<string name="submit" msgid="1602335572089911941">"Göndər"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Avtomobil rejimi aktivdir"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Avtomobil rejimindən çıxmaq üçün tıklayın."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Tezerinq və ya hotspot aktivdir"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Quraşdırmaq üçün tıklayın."</string>
<string name="back_button_label" msgid="2300470004503343439">"Geri"</string>
<string name="next_button_label" msgid="1080555104677992408">"Növbəti"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Keç"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Hesab əlavə edin"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Artır"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Azaldın"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> basıb saxlayın."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Artırmaq üçün yuxarı, azaltmaq üçün aşağı sürüşdürün."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Dəqiqə artırın"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Dəqiqəni azalt"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB yaddaş"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Düzəliş edin"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Data istifadə xəbərdarlığı"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"İstifadə və ayarları görmək üçün tıklayın."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G data limitinə çatdı"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G data limitinə çatdı"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Şəbəkə data limitinə çatdı"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi data limiti keçildi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> müəyyən edilmiş limit aşır."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Arxaplan datası məhdudlaşdırıldı"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Məhdudiyyəti aradan qaldırmaq üçün tıklayın."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Təhlükəsizlik sertifikatı"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Bu sertifikat etibarlıdır."</string>
<string name="issued_to" msgid="454239480274921032">"Verilib:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"İl seçin"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> silindi"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"İş <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Sancağı götürmək üçün Geri düyməsinə toxunun və saxlayın."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Sancağı götürmək üçün İcmala toxunun və saxlayın."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Tətbiq sancılıb: Açmağa bu cihazda icazə verilmir."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Screen pinned"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Screen unpinned"</string>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index abf6609e15e3..091d02a8e78e 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -266,8 +266,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Preuzima sadržaj prozora"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Proverava sadržaj prozora sa kojim ostvarujete interakciju."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Uključi Istraživanja dodirom"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Stavke koje dodirnete će biti izgovorene naglas, a možete da se krećete po ekranu pokretima."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Uključi poboljšanu pristupačnost veba"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Mogu da se instaliraju skripte da bi sadržaj aplikacija bio pristupačniji."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Prati tekst koji unosite"</string>
@@ -666,8 +665,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Unesite PUK i novi PIN kôd"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kôd"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novi PIN kôd"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Dodirnite za unos lozinke"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Otkucajte lozinku da biste otključali"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Unesite PIN za otključavanje"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN kôd je netačan."</string>
@@ -939,8 +937,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Neke sistemske funkcije možda ne funkcionišu"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Nema dovoljno memorijskog prostora za sistem. Uverite se da imate 250 MB slobodnog prostora i ponovo pokrenite."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> je pokrenuta"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Dodirnite za više informacija ili zaustavljanje aplikacije."</string>
<string name="ok" msgid="5970060430562524910">"Potvrdi"</string>
<string name="cancel" msgid="6442560571259935130">"Otkaži"</string>
<string name="yes" msgid="5362982303337969312">"Potvrdi"</string>
@@ -1014,8 +1011,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Pokretanje aplikacija."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Završavanje pokretanja."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> je pokrenuta"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Dodirnite da biste prešli na aplikaciju"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Želite li da pređete na drugu aplikaciju?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Već je pokrenuta druga aplikacija koja mora da bude zaustavljena da biste mogli da pokrenete novu."</string>
<string name="old_app_action" msgid="493129172238566282">"Vrati se u <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1023,8 +1019,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Pokreni <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Zaustavlja staru aplikaciju bez čuvanja."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> premašuje ograničenje memorije"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Snimak dinamičkog dela memorije je napravljen; dodirnite za deljenje"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Želite li da delite snimak dinamičkog dela memorije?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proces <xliff:g id="PROC">%1$s</xliff:g> je premašio ograničenje memorije za proces od <xliff:g id="SIZE">%2$s</xliff:g>. Snimak dinamičkog dela memorije je dostupan i možete da ga delite sa programerom. Budite oprezni: ovaj snimak dinamičkog dela memorije može da sadrži neke lične podatke kojima aplikacija može da pristupa."</string>
<string name="sendText" msgid="5209874571959469142">"Izaberite radnju za tekst"</string>
@@ -1062,8 +1057,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi nema pristup internetu"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Dodirnite za opcije"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nije moguće povezati sa Wi-Fi mrežom"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ima lošu internet vezu."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Želite li da dozvolite povezivanje?"</string>
@@ -1073,8 +1067,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Pokrenite Wi-Fi Direct. Time ćete isključiti klijenta/hotspot za Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Nije moguće pokrenuti Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct je uključen"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Dodirnite za podešavanja"</string>
<string name="accept" msgid="1645267259272829559">"Prihvati"</string>
<string name="decline" msgid="2112225451706137894">"Odbij"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Pozivnica je poslata"</string>
@@ -1126,11 +1119,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB za prenos slika"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB za MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Povezano sa USB dodatkom"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Dodirnite za još opcija."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Otklanjanje grešaka sa USB-a je uspostavljeno"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Dodirnite da biste onemogućili otklanjanje grešaka sa USB-a."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Izveštaj o grešci se generiše…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Želite li da podelite izveštaj o grešci?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Deli se izveštaj o grešci…"</string>
@@ -1150,11 +1141,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Novi uređaj <xliff:g id="NAME">%s</xliff:g> je otkriven"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Za prenos slika i medija"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Uređaj <xliff:g id="NAME">%s</xliff:g> je oštećen"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"Uređaj <xliff:g id="NAME">%s</xliff:g> je oštećen. Dodirnite da biste ga popravili."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Uređaj <xliff:g id="NAME">%s</xliff:g> nije podržan"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Ovaj uređaj ne podržava ovaj uređaj <xliff:g id="NAME">%s</xliff:g>. Dodirnite da biste podesili podržani format."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Uređaj <xliff:g id="NAME">%s</xliff:g> je neočekivano uklonjen"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Isključite uređaj <xliff:g id="NAME">%s</xliff:g> pre uklanjanja da ne biste izgubili podatke"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Uređaj <xliff:g id="NAME">%s</xliff:g> je uklonjen"</string>
@@ -1226,18 +1215,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Povezivanje stalno uključenog VPN-a..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Stalno uključeni VPN je povezan"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Greška stalno uključenog VPN-a"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Dodirnite da biste konfigurisali"</string>
<string name="upload_file" msgid="2897957172366730416">"Odaberi datoteku"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nije izabrana nijedna datoteka"</string>
<string name="reset" msgid="2448168080964209908">"Ponovo postavi"</string>
<string name="submit" msgid="1602335572089911941">"Pošalji"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Režim rada u automobilu je omogućen"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Dodirnite da biste izašli iz režima rada u automobilu."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Aktivno povezivanje sa internetom preko mobilnog uređaja ili hotspot"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Dodirnite da biste podesili."</string>
<string name="back_button_label" msgid="2300470004503343439">"Nazad"</string>
<string name="next_button_label" msgid="1080555104677992408">"Next"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Preskoči"</string>
@@ -1271,8 +1257,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Dodaj nalog"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Povećavanje"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Smanjivanje"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> dodirnite i zadržite."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Prevucite nagore da biste povećali, a nadole da biste smanjili."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Povećavanje minuta"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Smanjivanje minuta"</string>
@@ -1316,8 +1301,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB memorija"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Izmeni"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Upozorenje o potrošnji podataka"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Dodirnite za potrošnju i podešavanja."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Nema više 2G-3G podataka"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Nema više 4G podataka"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Nema više podataka za mobilne"</string>
@@ -1329,8 +1313,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Prekoračenje prenosa Wi-Fi podat."</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> preko navedenog ograničenja."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Pozadinski podaci su ograničeni"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Dodirnite za uklanjanje ograničenja."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Bezbednosni sertifikat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Ovaj sertifikat je važeći."</string>
<string name="issued_to" msgid="454239480274921032">"Izdato za:"</string>
@@ -1547,10 +1530,8 @@
<string name="select_year" msgid="7952052866994196170">"Izaberite godinu"</string>
<string name="deleted_key" msgid="7659477886625566590">"Izbrisali ste <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> na poslu"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Da biste otkačili ovaj ekran, dodirnite i zadržite Nazad."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Da biste otkačili ovaj ekran, dodirnite i zadržite Pregled."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikacija je zakačena: otkačinjanje nije dozvoljeno na ovom uređaju."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekran je zakačen"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekran je otkačen"</string>
diff --git a/core/res/res/values-be-rBY/strings.xml b/core/res/res/values-be-rBY/strings.xml
index 072b83aeb439..7fa9f16f9968 100644
--- a/core/res/res/values-be-rBY/strings.xml
+++ b/core/res/res/values-be-rBY/strings.xml
@@ -269,8 +269,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Атрымайце змесцiва акна"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Вывучыце змесцiва акна, з якiм вы працуеце."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Уключыце Explore by Touch"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Элементы, да якiх дакранулiся, будуць агучаны, а з экранам можна будзе ўзаемадзейнічаць пры дапамозе жэстаў."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Уключыце паляпшэнне вэб-даступнасці"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Сцэнарыi могуць быць усталяваны, каб зрабіць змесцiва прыкладання больш даступным."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Глядзiце, што набiраеце"</string>
@@ -669,8 +668,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Увядзіце PUK-код і новы PIN-код"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Новы PIN-код"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Дакраніцеся, каб увесці пароль"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Увядзіце пароль для разблакавання"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Каб разблакаваць, увядзіце PIN-код"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Няправільны PIN-код."</string>
@@ -894,10 +892,10 @@
<item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> дня</item>
</plurals>
<plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
- <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> гг.</item>
- <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> гг.</item>
- <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> гг.</item>
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> гг.</item>
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> г.</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> г.</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> г.</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> г.</item>
</plurals>
<plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
<item quantity="one">праз <xliff:g id="COUNT_1">%d</xliff:g> хв</item>
@@ -918,10 +916,10 @@
<item quantity="other">праз <xliff:g id="COUNT_1">%d</xliff:g> дня</item>
</plurals>
<plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
- <item quantity="one">праз <xliff:g id="COUNT_1">%d</xliff:g> гг.</item>
- <item quantity="few">праз <xliff:g id="COUNT_1">%d</xliff:g> гг.</item>
- <item quantity="many">праз <xliff:g id="COUNT_1">%d</xliff:g> гг.</item>
- <item quantity="other">праз <xliff:g id="COUNT_1">%d</xliff:g> гг.</item>
+ <item quantity="one">праз <xliff:g id="COUNT_1">%d</xliff:g> г.</item>
+ <item quantity="few">праз <xliff:g id="COUNT_1">%d</xliff:g> г.</item>
+ <item quantity="many">праз <xliff:g id="COUNT_1">%d</xliff:g> г.</item>
+ <item quantity="other">праз <xliff:g id="COUNT_1">%d</xliff:g> г.</item>
</plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Праблема з відэа"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Відэа не падыходзіць для патокавай перадачы на ​​гэту прыладу."</string>
@@ -954,8 +952,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Некаторыя сістэмныя функцыі могуць не працаваць"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Не хапае сховішча для сістэмы. Пераканайцеся, што ў вас ёсць 250 МБ свабоднага месца, і перазапусціце."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Прыкладанне <xliff:g id="APP_NAME">%1$s</xliff:g> працуе"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Дакраніцеся, каб атрымаць дадатковую інфармацыю або спыніць праграму."</string>
<string name="ok" msgid="5970060430562524910">"ОК"</string>
<string name="cancel" msgid="6442560571259935130">"Адмяніць"</string>
<string name="yes" msgid="5362982303337969312">"ОК"</string>
@@ -1029,8 +1026,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Запуск прыкладанняў."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Завяршэнне загрузкі."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Прыкладанне \"<xliff:g id="APP">%1$s</xliff:g>\" запушчанае"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Дакраніцеся, каб пераключыцца на праграму"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Пераключыць прыкладанні?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Ужо запушчана іншае прыкладанне, якое павінна быць спынена перад запускам новага."</string>
<string name="old_app_action" msgid="493129172238566282">"Вярнуцца да <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1038,8 +1034,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Запусціць <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Спыніць старыя прыкладанні без захавання."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Працэс <xliff:g id="PROC">%1$s</xliff:g> перавысіў ліміт памяці"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Быў сабраны дамп кучы; дакраніцеся, каб абагуліць"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Абагуліць дамп дынамічнай вобласці?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Працэс <xliff:g id="PROC">%1$s</xliff:g> перавысіў ліміт памяці працэсу <xliff:g id="SIZE">%2$s</xliff:g>. Дамп дынамічнай вобласці даступны для вас, вы можаце абагуліць яго з распрацоўшчыкам. Будзьце асцярожныя: гэты дамп дынамічнай вобласці можа ўтрымліваць асабістую інфармацыю, да якой маюць доступ праграмы."</string>
<string name="sendText" msgid="5209874571959469142">"Выберыце дзеянне для тэкста"</string>
@@ -1079,8 +1074,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"У Wi-Fi няма доступу да Інтэрнэту"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Дакраніцеся, каб убачыць параметры"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Немагчыма падключыцца да Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" дрэннае падключэнне да Інтэрнэту."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Дазволіць падключэнне?"</string>
@@ -1090,8 +1084,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Пачаць работу Wi-Fi Direct. Гэта адключыць кліента або кропку доступу Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Немагчыма запусціць Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct уключаны"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Дакраніцеся, каб убачыць налады"</string>
<string name="accept" msgid="1645267259272829559">"Прыняць"</string>
<string name="decline" msgid="2112225451706137894">"Адхіліць"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Запрашэнне адпраўлена"</string>
@@ -1143,11 +1136,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB для перадачы фота"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB для MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Падключаны да USB-прылады"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Дакраніцеся, каб атрымаць больш параметраў."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Прылада адладкі USB падключана"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Дакраніцеся, каб адключыць адладку USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Стварэнне справаздачы пра памылку…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Падзяліцца справаздачай пра памылку?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Перадача справаздачы пра памылку..."</string>
@@ -1167,11 +1158,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Выяўлены новы носьбіт <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Для перадачы фатаграфій і медыяфайлаў"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Пашкоджаны носьбіт <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"Носьбіт <xliff:g id="NAME">%s</xliff:g> пашкоджаны. Дакраніцеся, каб выправіць."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> не падтрымліваецца"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Гэта прылада не падтрымлівае носьбіт <xliff:g id="NAME">%s</xliff:g>. Дакраніцеся, каб наладзіць яго ў фармаце, які падтрымліваецца."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Носьбіт <xliff:g id="NAME">%s</xliff:g> нечакана выняты"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Адключыце носьбіт <xliff:g id="NAME">%s</xliff:g>, перш чым вымаць яго, каб пазбегнуць страты даных."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Носьбіт <xliff:g id="NAME">%s</xliff:g> выдалены"</string>
@@ -1243,18 +1232,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Падключэнне заўсёды ўключанага VPN..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Заўсёды ўключаны i падключаны VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Памылка заўсёды ўключанага VPN"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Дакраніцеся, каб змяніць канфігурацыю"</string>
<string name="upload_file" msgid="2897957172366730416">"Выберыце файл"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Файл не выбраны"</string>
<string name="reset" msgid="2448168080964209908">"Скінуць"</string>
<string name="submit" msgid="1602335572089911941">"Перадаць"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Рэжым \"У машыне\" ўключаны"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Дакраніцеся, каб выйсці з рэжыму \"Ў аўтамабілі\"."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"USB-мадэм або кропка доступу Wi-Fi актыўныя"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Дакраніцеся, каб наладзіць."</string>
<string name="back_button_label" msgid="2300470004503343439">"Назад"</string>
<string name="next_button_label" msgid="1080555104677992408">"Далей"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Прапусціць"</string>
@@ -1289,8 +1275,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Дадаць уліковы запіс"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Павялічыць"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Паменшыць"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"Націсніце і ўтрымлівайце <xliff:g id="VALUE">%s</xliff:g>."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Правядзіце пальцам уверх, каб павялічыць, або ўніз, каб паменшыць."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Павялічыць лічбу хвілін."</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Паменшыць лічбу хвілін."</string>
@@ -1334,8 +1319,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-назапашвальнік"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Рэдагаваць"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Папярэджанне выкарыстання дадзеных"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Кран. для прагл. выкар. і налад."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Дасягнуты ліміт трафіку 2G-3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Дасягнуты ліміт трафіку 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Дасягн. ліміт маб.перадачы даных"</string>
@@ -1347,8 +1331,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Перав. ліміт па дадзеным Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Аб\'ём <xliff:g id="SIZE">%s</xliff:g> перавышае устаноўл. мяжу."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Зыходныя дадзеныя абмежаваныя"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Дакраніцеся, каб зняць абмежав."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Сертыфікат бяспекі"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Гэты сертыфікат сапраўдны."</string>
<string name="issued_to" msgid="454239480274921032">"Выдадзены:"</string>
@@ -1566,10 +1549,8 @@
<string name="select_year" msgid="7952052866994196170">"Выберыце год"</string>
<string name="deleted_key" msgid="7659477886625566590">"Выдалена: <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (праца)"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Каб адмацаваць гэты экран, краніце і ўтрымлівайце кнопку \"Назад\"."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Каб адмацаваць гэты экран, краніце і ўтрымлівайце кнопку \"Агляд\"."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Праграма замацавана: адмацаванне на гэтай прыладзе не дапускаецца."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Экран замацаваны"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Экран адмацаваны"</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index b1fa65df4fce..1dc6fb2fbd56 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -255,7 +255,7 @@
<string name="permgrouplab_microphone" msgid="171539900250043464">"Микрофон"</string>
<string name="permgroupdesc_microphone" msgid="4988812113943554584">"запис на звук"</string>
<string name="permgrouplab_camera" msgid="4820372495894586615">"Камера"</string>
- <string name="permgroupdesc_camera" msgid="3250611594678347720">"правене на снимки и запис на видеоклипове"</string>
+ <string name="permgroupdesc_camera" msgid="3250611594678347720">"прави снимки и записва видеоклипове"</string>
<string name="permgrouplab_phone" msgid="5229115638567440675">"Телефон"</string>
<string name="permgroupdesc_phone" msgid="6234224354060641055">"извършва телефонни обаждания и да ги управлява"</string>
<string name="permgrouplab_sensors" msgid="416037179223226722">"Телесни сензори"</string>
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Извличане на съдържанието от прозореца"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Инспектиране на съдържанието на прозорец, с който взаимодействате."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Включване на изследването чрез докосване"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Докосваните елементи ще бъдат изговаряни на глас и екранът може да бъде изследван посредством жестове."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Включване на подобрената достъпност в мрежата"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Скриптовете може да бъдат инсталирани, за да направят съдържанието от приложенията по-достъпно."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Наблюдение на въвеждания от вас текст"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Въведете PUK и новия ПИН код"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK код"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Нов ПИН код"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Докоснете и въведете парола"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Въведете парола, за да отключите"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Въведете ПИН, за да отключите"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Неправилен ПИН код."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Възможно е някои функции на системата да не работят"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"За системата няма достатъчно място в хранилището. Уверете се, че имате свободни 250 МБ, и рестартирайте."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> се изпълнява"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Докоснете за още информация или за да спрете приложението."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Отказ"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Приложенията се стартират."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Зареждането завършва."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> се изпълнява"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Докоснете за превключване към приложението"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Да се превключат ли приложенията?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Вече се изпълнява друго приложение, което трябва да бъде спряно, преди да можете да стартирате ново."</string>
<string name="old_app_action" msgid="493129172238566282">"Назад към <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Стартиране на <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Спиране на старото приложение без запазване."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> надхвърли ограничението за памет"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Извлечена е моментна снимка на паметта. Докоснете, за да я споделите"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Да се сподели ли моментната снимка на паметта?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Процесът <xliff:g id="PROC">%1$s</xliff:g> надхвърли ограничението си от <xliff:g id="SIZE">%2$s</xliff:g>. Налице е моментна снимка на паметта, която да споделите със съответния програмист. Бъдете внимателни, защото тя може да съдържа ваши лични данни, до които приложението има достъп."</string>
<string name="sendText" msgid="5209874571959469142">"Избиране на действие за текст"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi мрежата няма достъп до интернет"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Докоснете за опции"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Не можа да се свърже с Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" има лоша връзка с интернет."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Да се разреши ли връзката?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Стартиране на Wi-Fi Direct. Това ще изключи клиентската програма/точката за достъп до Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct не можа да се стартира."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct е включено"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Докоснете за настройки"</string>
<string name="accept" msgid="1645267259272829559">"Приемам"</string>
<string name="decline" msgid="2112225451706137894">"Отхвърлям"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Поканата е изпратена"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB за прехвърляне на снимки"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB за MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Установена е връзка с аксесоар за USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Докоснете за още опции."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Отстраняване на грешки през USB"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Докоснете, за да деактивирате отстраняването на грешки през USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Сигналът за програмна грешка се извлича…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Да се сподели ли сигналът за програмна грешка?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Сигналът за програмна грешка се споделя…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Открито е ново хранилище (<xliff:g id="NAME">%s</xliff:g>)"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"За прехвърляне на снимки и мултимедия"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g>: Има повреда"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"Носителят (<xliff:g id="NAME">%s</xliff:g>) е повреден. Докоснете, за да отстраните проблема."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g>: Не се поддържа"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Устройството не поддържа този носител (<xliff:g id="NAME">%s</xliff:g>). Докоснете, за да настроите в поддържан формат."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g>: Неочаквано премахване"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Спрете хранилището (<xliff:g id="NAME">%s</xliff:g>), преди да го извадите, за да не загубите данни"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Премахнахте <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Установява се връзка с винаги включената виртуална частна мрежа (VPN)…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Установена е връзка с винаги включената виртуална частна мрежа (VPN)"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Грешка във винаги включената виртуална частна мрежа (VPN)"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Докоснете, за да конфигурирате"</string>
<string name="upload_file" msgid="2897957172366730416">"Избор на файл"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Няма избран файл"</string>
<string name="reset" msgid="2448168080964209908">"Повторно задаване"</string>
<string name="submit" msgid="1602335572089911941">"Изпращане"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Мото режимът е активиран"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Докоснете, за да излезете от моторежима."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Има активна споделена връзка или безжична точка за достъп"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Докоснете, за да настроите."</string>
<string name="back_button_label" msgid="2300470004503343439">"Назад"</string>
<string name="next_button_label" msgid="1080555104677992408">"Напред"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Пропускане"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Добавяне на профил"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Увеличаване"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Намаляване"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"Докоснете <xliff:g id="VALUE">%s</xliff:g> път/и и задръжте."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Плъзнете нагоре за увеличаване и надолу за намаляване."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Увеличаване на минутите"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Намаляване на минутите"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB хранилище"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Редактиране"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Предупрежд. за ползване на данни"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Пренос и настройки: Докоснете за преглед."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Достигнат лимит за 2G/3G данните"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Достигнат лимит за 4G данните"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Достигнат лимит за мобилни данни"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Превишен лимит на Wi-Fi данните"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> над определения лимит."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Ограничени данни на заден план"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Докоснете и премахнете огранич."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Сертификат за сигурност"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Този сертификат е валиден."</string>
<string name="issued_to" msgid="454239480274921032">"Издаден на:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Избиране на година"</string>
<string name="deleted_key" msgid="7659477886625566590">"Изтрихте <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> за работа"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"За да освободите този екран, докоснете и задръжте бутона за връщане назад."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"За да освободите този екран, докоснете и задръжте бутона за общ преглед."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Приложението е фиксирано. Освобождаването му не е разрешено на това устройство."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Екранът е фиксиран"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Екранът е освободен"</string>
diff --git a/core/res/res/values-bn-rBD/strings.xml b/core/res/res/values-bn-rBD/strings.xml
index bcec3284d743..8c92e6bc311f 100644
--- a/core/res/res/values-bn-rBD/strings.xml
+++ b/core/res/res/values-bn-rBD/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"উইন্ডোর সামগ্রী পুনরুদ্ধার করে"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"আপনি ইন্টারঅ্যাক্ট করছেন এমন একটি উইন্ডোর সামগ্রীকে সযত্নে নিরীক্ষণ করে৷"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"স্পর্শের মাধ্যমে অন্বেষণ করা চালু করুন"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"যে আইটেমগুলিতে আলতো চেপেছেন সেগুলি সশব্দে বলবে এবং ইঙ্গিতগুলি ব্যবহার করে স্ক্রীন অন্বেষণ করা যাবে৷"</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"উন্নত ওয়েব অ্যাক্সেসযোগ্যতা চালু করুন"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"অ্যাপ্লিকেশানের সামগ্রীকে আরো অ্যাক্সেসযোগ্য করতে স্ক্রিপ্টগুলি ইনস্টল করা হতে পারে৷"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"আপনার লেখা পাঠ্যকে নিরীক্ষণ করে"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK এবং নতুন পিন কোড লিখুন"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK কোড"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"নতুন পিন কোড"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"পাসওয়ার্ড লিখতে আলতো চাপুন"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"আনলক করতে পাসওয়ার্ড লিখুন"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"আনলক করতে পিন লিখুন"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"ভুল পিন কোড৷"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"কিছু কিছু সিস্টেম ক্রিয়াকলাপ কাজ নাও করতে পারে"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"সিস্টেমের জন্য যথেষ্ট সঞ্চয়স্থান নেই৷ আপনার কাছে ২৫০MB ফাঁকা স্থান রয়েছে কিনা সে বিষয়ে নিশ্চিত হওয়ার পর পুনরায় চালু করুন৷"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> চলছে"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"আরো তথ্যের জন্য বা অ্যাপ্লিকেশানটি বন্ধ করতে আলতো চাপুন।"</string>
<string name="ok" msgid="5970060430562524910">"ঠিক আছে"</string>
<string name="cancel" msgid="6442560571259935130">"বাতিল করুন"</string>
<string name="yes" msgid="5362982303337969312">"ঠিক আছে"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"অ্যাপ্লিকেশানগুলি শুরু করা হচ্ছে৷"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"চালু করা সম্পূর্ণ হচ্ছে৷"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> চলছে"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"অ্যাপ্লিকেশান পাল্টাতে আলতো চাপুন"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"একটি থেকে অন্য অ্যাপ্লিকেশানগুলিতে পরিবর্তন করবেন?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"অন্য একটি অ্যাপ্লিকেশান ইতিমধ্যেই চলছে, নতুন একটি চালু করতে আপনাকে অবশ্যই সেটি বন্ধ করতে হবে৷"</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> এ ফিরুন"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> শুরু করুন"</string>
<string name="new_app_description" msgid="1932143598371537340">"সংরক্ষণ না করেই পুরোনো অ্যাপ্লিকেশানটি বন্ধ করুন৷"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> মেমরি সীমা অতিক্রম করেছে"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"অনেক ডাটা সংগ্রহ করা হয়েছে; শেয়ার করার জন্য আলতো চাপুন"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"হিপ ডাম্প শেয়ার করবেন?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> প্রক্রিয়াটি তার <xliff:g id="SIZE">%2$s</xliff:g> এর মেমরি সীমা অতিক্রম করেছে৷ তার বিকাশকারীর সাথে শেয়ার করার জন্য একটি হিপ ডাম্প উপলব্ধ৷ সতর্কতা অবলম্বন করুন: এই হিপ ডাম্পে অ্যাপ্লিকেশানটির অ্যাক্সেস আছে এমন আপনার যেকোন ব্যক্তিগত তথ্য থাকতে পারে৷"</string>
<string name="sendText" msgid="5209874571959469142">"পাঠ্যের জন্য একটি কাজ বেছে নিন"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi -তে কোনো ইন্টারনেট অ্যাক্সেস নেই"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"বিকল্পগুলির জন্য আলতো চাপুন"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi এর সাথে সংযোগ করা যায়নি"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" একটি দুর্বল ইন্টারনেট সংযোগ রয়েছে৷"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"সংযোগের মঞ্জুরি দেবেন?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi ডাইরেক্ট আরম্ভ করুন৷ এটি Wi-Fi client/hotspot কে বন্ধ করবে৷"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi ডাইরেক্ট শুরু করা যায়নি৷"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi ডাইরেক্ট চালু রয়েছে"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"সেটিংসের জন্য আলতো চাপুন"</string>
<string name="accept" msgid="1645267259272829559">"গ্রহণ করুন"</string>
<string name="decline" msgid="2112225451706137894">"অস্বীকার করুন"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"আমন্ত্রণ পাঠানো হয়েছে"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ফটো স্থানান্তরের জন্য USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI এর জন্য USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"একটি USB যন্ত্রাংশতে সংযুক্ত হয়েছে"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"আরো বিকল্পের জন্য আলতো চাপুন৷"</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB ডিবাগিং সংযুক্ত হয়েছে"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB ডিবাগিং অক্ষম করতে আলতো চাপুন৷"</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"ত্রুটির প্রতিবেদন নেওয়া হচ্ছে..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"ত্রুটির প্রতিবেদন শেয়ার করবেন?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"ত্রুটির প্রতিবেদন শেয়ার করা হচ্ছে..."</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"নতুন <xliff:g id="NAME">%s</xliff:g> সনাক্ত করা হয়েছে"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ফটো এবং মিডিয়া ট্রান্সফার"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> ত্রুটিপূর্ণ"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> ত্রুটিপূর্ণ৷ ঠিক করতে আলতো চাপুন৷"</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> অসমর্থিত"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"এই ডিভাইসটি <xliff:g id="NAME">%s</xliff:g> সমর্থন করে না। কোনো সমর্থিত ফর্ম্যাটে সেট আপ করতে আলতো চাপুন।"</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> অপ্রত্যাশিতভাবে মুছে ফেলা হয়েছে"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ডেটা যাতে হারিয়ে না যায় তার জন্য সরানোর আগে <xliff:g id="NAME">%s</xliff:g> আনমাউন্ট করুন"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> সরানো হয়েছে"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"সর্বদা-চালু VPN সংযুক্ত হচ্ছে..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"সর্বদা-চালু VPN সংযুক্ত হয়েছে"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"সর্বদা-চালু VPN ত্রুটি"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"কনফিগার করতে আলতো চাপুন"</string>
<string name="upload_file" msgid="2897957172366730416">"ফাইল চয়ন করুন"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"কোনো ফাইল নির্বাচন করা হয়নি"</string>
<string name="reset" msgid="2448168080964209908">"পুনরায় সেট করুন"</string>
<string name="submit" msgid="1602335572089911941">"জমা দিন"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"গাড়ি মোড সক্ষম করা হয়েছে"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"গাড়ি মোড থেকে প্রস্থান করতে আলতো চাপুন৷"</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"টিথারিং বা হটস্পট সক্রিয় আছে"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"সেট আপ করার জন্য আলতো চাপুন৷"</string>
<string name="back_button_label" msgid="2300470004503343439">"ফিরুন"</string>
<string name="next_button_label" msgid="1080555104677992408">"পরবর্তী"</string>
<string name="skip_button_label" msgid="1275362299471631819">"এড়িয়ে যান"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"অ্যাকাউন্ট যোগ করুন"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"বাড়ান"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"কমান"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g>VALUE স্পর্শ করুন ও ধরে রাখুন৷"</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"বাড়ানোর জন্য উপরের দিকে এবং কমানোর জন্য নীচের দিকে স্লাইড করুন৷"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"মিনিট বাড়ান"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"মিনিট কমান"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB সঞ্চয়স্থান"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"সম্পাদনা করুন"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ডেটা ব্যবহারের সতর্কতা"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"ব্যবহার এবং সেটিংস দেখতে আলতো চাপুন৷"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G ডেটা সীমা ছাড়িয়েছে"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G ডেটা সীমা ছাড়িয়েছে"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"সেলুলার ডেটা সীমা ছাড়িয়েছে"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi ডেটার সীমা ছাড়িয়ে গেছে"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"নির্দিষ্ট সীমার থেকে <xliff:g id="SIZE">%s</xliff:g> বেশি৷"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"পটভূমি ডেটা সীমিত করা আছে"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"সীমাবদ্ধতা সরাতে আলতো চাপুন৷"</string>
<string name="ssl_certificate" msgid="6510040486049237639">"নিরাপত্তার শংসাপত্র"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"শংসাপত্রটি বৈধ৷"</string>
<string name="issued_to" msgid="454239480274921032">"এর জন্য ইস্যু করা হয়েছে:"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"বছর নির্বাচন করুন"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> মুছে ফেলা হয়েছে"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"কর্মক্ষেত্র <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"এই স্ক্রীনটিকে আনপিন করতে, \'ফিরুন\' স্পর্শ করুন এবং ধরে রাখুন৷"</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"এই স্ক্রীনটিকে আনপিন করতে, \'ওভারভিউ\' স্পর্শ করুন এবং ধরে রাখুন৷"</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"অ্যাপ্লিকেশান পিন করা আছে: এই ডিভাইস এটিকে পিনমুক্ত করা মঞ্জুরিপ্রাপ্ত নয়৷"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"স্ক্রীন পিন করা হয়েছে"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"পিন না করা স্ক্রীন"</string>
diff --git a/core/res/res/values-bs-rBA/strings.xml b/core/res/res/values-bs-rBA/strings.xml
index 8021435d2dc0..c88de8c8cc58 100644
--- a/core/res/res/values-bs-rBA/strings.xml
+++ b/core/res/res/values-bs-rBA/strings.xml
@@ -266,8 +266,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Ponovo prikaži sadržaj prozora"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Istražite sadržaj prozora koji trenutno koristite."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Uključite Istraživanje dodirom"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Stavke koje dodirnete bit će izgovorene naglas, a ekran možete istraživati koristeći pokrete."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Uključite poboljšanu web pristupačnost"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Možda će biti instalirana skripta kako bi sadržaj aplikacije bio dostupniji."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Obratite pažnju na tekst koji tipkate"</string>
@@ -666,8 +665,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Unesite PUK i novi PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novi PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Dodirnite za unos lozinke"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Unesite lozinku za otključavanje tipkovnice"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Unesite PIN za otključavanje tipkovnice"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Pogrešan PIN."</string>
@@ -939,8 +937,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Neke funkcije sistema možda neće raditi"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Nema dovoljno prostora za sistem. Obezbijedite 250MB slobodnog prostora i ponovo pokrenite uređaj."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> je pokrenuta"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Dodirnite za više informacija ili da biste zaustavili aplikaciju."</string>
<string name="ok" msgid="5970060430562524910">"Uredu"</string>
<string name="cancel" msgid="6442560571259935130">"Prekini"</string>
<string name="yes" msgid="5362982303337969312">"Uredu"</string>
@@ -1016,8 +1013,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Pokretanje aplikacija."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Pokretanje pri kraju."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Pokrenuta je aplikacija <xliff:g id="APP">%1$s</xliff:g>"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Dodirnite da biste se prebacili na aplikaciju"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Želite se prebaciti na drugu aplikaciju?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Već je pokrenuta jedna aplikacija koju morate zaustaviti prije pokretanja nove."</string>
<string name="old_app_action" msgid="493129172238566282">"Vrati se na aplikaciju <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1025,8 +1021,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Pokreni <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Zaustaviti staru aplikaciju bez spašavanja podataka."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> premašuje ograničenje memorije"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Snimak dinamičkog stanja memorije je napravljen; dodirnite da biste dijelili"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Želite li dijeliti snimak dinamičkog dijela memorije?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proces <xliff:g id="PROC">%1$s</xliff:g> je premašio ograničenje procesne memorije od <xliff:g id="SIZE">%2$s</xliff:g>. Snimak dinamičkog dijela memorije vam je dostupan i možete ga dijeliti sa njegovim programerom. Budite oprezni: ovaj snimak dinamičkog dijela memorije može sadržavati vaše lične podatke kojima aplikacija ima pristup."</string>
<string name="sendText" msgid="5209874571959469142">"Biranje akcije za tekst"</string>
@@ -1064,8 +1059,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi nema pristup Internetu"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Dodirnite za opcije"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Problem prilikom spajanja na Wi-Fi mrežu"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ima lošu internet vezu."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Želite li dozvoliti povezivanje?"</string>
@@ -1075,8 +1069,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Pokreni Wi-Fi Direct. To će isključiti Wi-Fi klijenta/pristupnu tačku."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Greška u pokretanju opcije Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct je uključen"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Dodirnite za postavke"</string>
<string name="accept" msgid="1645267259272829559">"Prihvati"</string>
<string name="decline" msgid="2112225451706137894">"Odbijte"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Pozivnica poslana"</string>
@@ -1128,11 +1121,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB za prijenos slika"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB za MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Uspostavljena veza sa USB pohranom"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Dodirnite za više opcija."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Uređaj za USB otklanjanje grešaka povezan"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Dodirnite da biste onemogućili otklanjanje grešaka preko USB veze."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Prijem izvještaja o grešci..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Podijeliti izvještaj o grešci?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Dijeljenje izvještaja o grešci..."</string>
@@ -1152,11 +1143,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Novi uređaj <xliff:g id="NAME">%s</xliff:g> je otkriven"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Za prebacivanje slika i medijskih fajlova"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Uređaj <xliff:g id="NAME">%s</xliff:g> je oštećen"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"Uređaj <xliff:g id="NAME">%s</xliff:g> je oštećen. Dodirnite da biste popravili."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Uređaj <xliff:g id="NAME">%s</xliff:g> nije podržan"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Ovaj uređaj ne podržava uređaj <xliff:g id="NAME">%s</xliff:g>. Dodirnite da biste ga postavili u podržanom formatu."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Neočekivano uklonjen uređaj <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Isključite uređaj <xliff:g id="NAME">%s</xliff:g> prije uklanjanja da izbjegnete gubitak podataka"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Uređaj <xliff:g id="NAME">%s</xliff:g> je uklonjen"</string>
@@ -1231,18 +1220,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Povezivanje na uvijek aktivni VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Povezan na uvijek aktivni VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Greška u povezivanju na uvijek aktivni VPN"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Dodirnite za konfiguriranje"</string>
<string name="upload_file" msgid="2897957172366730416">"Odabir fajla"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nije izabran nijedan fajl"</string>
<string name="reset" msgid="2448168080964209908">"Ponovno pokretanje"</string>
<string name="submit" msgid="1602335572089911941">"Potvrdi"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Način rada u autu omogućen"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Dodirnite za izlaz iz načina rada u automobilu"</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Uređaj dijeli vezu ili djeluje kao pristupna tačka"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Dodirnite za postavke"</string>
<string name="back_button_label" msgid="2300470004503343439">"Nazad"</string>
<string name="next_button_label" msgid="1080555104677992408">"Naprijed"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Preskoči"</string>
@@ -1276,8 +1262,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Dodajte račun"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Povećaj"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Smanji"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> dodirnite i držite."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Kliznite gore da povećate i dolje da smanjite."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Povećaj minute"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Smanji minute"</string>
@@ -1321,8 +1306,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB pohrana"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Uredi"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Upozorenje za prijenos podataka"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Dodirnite za prikaz upotrebe i postavki."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Dostignut limit za 2G-3G podatke"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Dostignut limit za 4G podatke"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Dostignut limit mob. podataka"</string>
@@ -1334,8 +1318,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Premašeno Wi-Fi ograničenje"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> preko navedenog ograničenja."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Pozadinski podaci su ograničeni"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Dodirnite da biste uklonili ograničenja."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Sigurnosni certifikat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Ovaj certifikat je važeći."</string>
<string name="issued_to" msgid="454239480274921032">"Primalac:"</string>
@@ -1552,10 +1535,8 @@
<string name="select_year" msgid="7952052866994196170">"Odaberite godinu"</string>
<string name="deleted_key" msgid="7659477886625566590">"Broj <xliff:g id="KEY">%1$s</xliff:g> je izbrisan"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Poslovni <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Da biste otkačili ovaj ekran, dodirnite i držite dugme Nazad."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Da biste otkačili ovaj ekran, dodirnite i držite dugme Pregled."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikacija je prikačena. Na ovom uređaju nije dozvoljeno otkačivanje."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekran je zakačen"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekran je otkačen"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 5e6828ece79d..22dd26bb1f20 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar el contingut de la finestra"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona el contingut d\'una finestra amb què estàs interaccionant."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar Exploració tàctil"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Els elements que toquis es diran en veu alta, i podràs explorar la pantalla amb gestos."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activar l\'accessibilitat web millorada"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"És possible que s\'instal·lin scripts perquè el contingut de les aplicacions sigui més accessible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observar el text que escrius"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Introdueix el codi PUK i el codi PIN nou"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Codi PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Codi PIN nou"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Toca per escriure la contrasenya"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Introdueix la contrasenya per desbloquejar"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Introdueix la contrasenya per desbloquejar"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Codi PIN incorrecte."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"És possible que algunes funcions del sistema no funcionin"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"No hi ha prou espai d\'emmagatzematge per al sistema. Comprova que tinguis 250 MB d\'espai lliure i reinicia."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> s\'està executant"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Toca per obtenir més informació o aturar l\'aplicació."</string>
<string name="ok" msgid="5970060430562524910">"D\'acord"</string>
<string name="cancel" msgid="6442560571259935130">"Cancel·la"</string>
<string name="yes" msgid="5362982303337969312">"D\'acord"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"S\'estan iniciant les aplicacions."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"S\'està finalitzant l\'actualització."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> s\'està executant"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Toca per anar a l\'aplicació"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Vols canviar aplicacions?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Ja s\'està executant una altra aplicació que s\'ha d\'aturar abans de poder iniciar-ne una de nova."</string>
<string name="old_app_action" msgid="493129172238566282">"Torna a <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Inicia <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Atura l\'aplicació antiga sense desar."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ha superat el límit de memòria"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"S\'ha recopilat un procés \"heap dump\"; toca per compartir-lo"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Vols compartir el \"heap dump\"?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"El procés <xliff:g id="PROC">%1$s</xliff:g> ha superat el límit de <xliff:g id="SIZE">%2$s</xliff:g> de memòria del procés. Hi ha un procés \"heap dump\" disponible perquè el comparteixis amb el desenvolupador. Vés amb compte: aquest \"heap dump\" pot contenir les dades personals a les quals l\'aplicació tingui accés."</string>
<string name="sendText" msgid="5209874571959469142">"Tria una acció per al text"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"La Wi-Fi no té accés a Internet"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Toca per veure les opcions"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"No s\'ha pogut connectar a la Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" té una mala connexió a Internet."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Vols permetre la connexió?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Inicia Wi-Fi Direct. Això desactivarà el client/la zona Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"No s\'ha pogut iniciar Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct està activat"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Toca per veure la configuració"</string>
<string name="accept" msgid="1645267259272829559">"Accepta"</string>
<string name="decline" msgid="2112225451706137894">"Rebutja"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"S\'ha enviat la invitació"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB per transferir fotos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB per a MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connectat a un accessori USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Toca per veure més opcions."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depuració USB activada"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Toca per desactivar la depuració USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"S\'està creant l\'informe d\'errors…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Vols compartir l\'informe d\'errors?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"S\'està compartint l\'informe d\'errors…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"S\'ha detectat <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Per transferir fotos i fitxers multimèdia"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"S\'ha malmès <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"La unitat <xliff:g id="NAME">%s</xliff:g> està malmesa. Toca per solucionar-ho."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> no és compatible"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"El dispositiu no admet la unitat <xliff:g id="NAME">%s</xliff:g>. Toca per configurar-la amb un format compatible."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"S\'ha extret <xliff:g id="NAME">%s</xliff:g> de manera inesperada"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Desactiva <xliff:g id="NAME">%s</xliff:g> abans d\'extraure\'l per evitar perdre dades"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"S\'ha extret <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"T\'estàs connectant a la VPN sempre activada…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Estàs connectat a la VPN sempre activada"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Error de la VPN sempre activada"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Toca per configurar"</string>
<string name="upload_file" msgid="2897957172366730416">"Trieu un fitxer"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"No s\'ha escollit cap fitxer"</string>
<string name="reset" msgid="2448168080964209908">"Reinicia"</string>
<string name="submit" msgid="1602335572089911941">"Envia"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mode de cotxe activat"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Toca per sortir del mode de cotxe."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Ancoratge a la xarxa o zona Wi-Fi activat"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Toca per configurar."</string>
<string name="back_button_label" msgid="2300470004503343439">"Enrere"</string>
<string name="next_button_label" msgid="1080555104677992408">"Següent"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Omet"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Afegeix un compte"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Incrementa"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Redueix"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"Toca i mantén premut el número <xliff:g id="VALUE">%s</xliff:g>."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Llisca cap amunt per augmentar i cap avall per disminuir."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Fes augmentar el minut"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Fes disminuir el minut"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Emmagatzematge USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Edita"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Advertiment d\'ús de dades"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Toca per veure ús i configuració."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Límit de dades 2G-3G assolit"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Límit de dades 4G assolit"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Límit de dades mòbils assolit"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"S\'ha superat el límit de dades Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> per sobre del límit especif."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Dades en segon pla restringides"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Toca per suprimir la restricció."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Certificat de seguretat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Aquest certificat és vàlid."</string>
<string name="issued_to" msgid="454239480274921032">"Emès per a:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Selecciona un any"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> suprimit"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> de la feina"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Toca i mantén premuda l\'opció Enrere per deixar de fixar aquesta pantalla."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Toca i mantén premuda l\'opció Visió general per deixar de fixar aquesta pantalla."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"S\'ha fixat l\'aplicació. En aquest dispositiu no es permet anul·lar-ne la fixació."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Pantalla fixada"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Fixació de la pantalla anul·lada"</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 7ef7523da7d7..4db961bce4f4 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -269,8 +269,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Načítat obsah oken"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Může prozkoumávat obsah oken, se kterými pracujete."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Zapnout funkci Prozkoumání dotykem"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Položky, na které klepnete, budou přečteny nahlas a obrazovku bude možné procházet pomocí gest."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Zapnout vylepšené usnadnění přístupu k webu"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Za účelem usnadnění přístupu k obsahu aplikací mohou být nainstalovány skripty."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Sledovat zadávaný text"</string>
@@ -669,8 +668,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Zadejte kód PUK a nový kód PIN."</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kód PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nový kód PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Klepnutím zadáte heslo"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Zadejte heslo pro odemknutí"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Zadejte kód PIN pro odemknutí"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Nesprávný kód PIN."</string>
@@ -954,8 +952,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Některé systémové funkce nemusí fungovat"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Pro systém není dostatek místa v úložišti. Uvolněte alespoň 250 MB místa a restartujte zařízení."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> je spuštěna"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Klepnutím zobrazíte další informace nebo ukončíte aplikaci."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Zrušit"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -1029,8 +1026,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Spouštění aplikací."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Dokončování inicializace."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Běží aplikace <xliff:g id="APP">%1$s</xliff:g>"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Klepnutím přepnete do aplikace"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Přepnout aplikace?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Než spustíte novou aplikaci, je třeba zastavit jinou spuštěnou aplikaci."</string>
<string name="old_app_action" msgid="493129172238566282">"Návrat do aplikace <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1038,8 +1034,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Spustit aplikaci <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Zastavit starou aplikaci bez uložení."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Proces <xliff:g id="PROC">%1$s</xliff:g> překročil limit paměti"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Byl shromážděn výpis haldy, klepnutím jej můžete sdílet"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Sdílet výpis haldy?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proces <xliff:g id="PROC">%1$s</xliff:g> překročil limit paměti procesu <xliff:g id="SIZE">%2$s</xliff:g>. Je k dispozici výpis haldy, který můžete sdílet s vývojářem. Buďte opatrní, výpis haldy může obsahovat osobní údaje, ke kterým má aplikace přístup."</string>
<string name="sendText" msgid="5209874571959469142">"Vyberte akci pro text"</string>
@@ -1079,8 +1074,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi nemá přístup k internetu"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Klepnutím zobrazíte možnosti"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Připojení k síti Wi-Fi se nezdařilo"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" má pomalé připojení k internetu."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Povolit připojení?"</string>
@@ -1090,8 +1084,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Spustit Wi-Fi Direct. Tato možnost vypne provoz sítě Wi-Fi v režimu klient/hotspot."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct se nepodařilo spustit."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct je zapnuto"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Klepnutím přejdete do nastavení"</string>
<string name="accept" msgid="1645267259272829559">"Přijmout"</string>
<string name="decline" msgid="2112225451706137894">"Odmítnout"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Pozvánka odeslána."</string>
@@ -1143,11 +1136,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB na přenos fotek"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB v režimu MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Připojeno k perifernímu zařízení USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Klepnutím zobrazíte další možnosti."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Ladění přes USB připojeno"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Klepnutím zakážete ladění USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Vytváření zprávy o chybě…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Sdílet zprávu o chybě?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Sdílení zprávy o chybě…"</string>
@@ -1167,11 +1158,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Zjištěno nové úložiště <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"K přenosu fotek a médií"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Úložiště <xliff:g id="NAME">%s</xliff:g> je poškozeno"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"Úložiště <xliff:g id="NAME">%s</xliff:g> je poškozeno. Klepnutím zahájíte opravu."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Úložiště <xliff:g id="NAME">%s</xliff:g> není podporováno"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Úložiště <xliff:g id="NAME">%s</xliff:g> není v tomto zařízení podporováno. Klepnutím zahájíte nastavení v podporovaném formátu."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Úložiště <xliff:g id="NAME">%s</xliff:g> neočekávaně odpojeno"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Před odebráním úložiště <xliff:g id="NAME">%s</xliff:g> jej nejprve odpojte. Zabráníte tak ztrátě dat."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Úložiště <xliff:g id="NAME">%s</xliff:g> bylo odpojeno."</string>
@@ -1243,18 +1232,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Připojování k trvalé síti VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Je připojena trvalá síť VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Chyba trvalé sítě VPN"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Klepnutím zahájíte konfiguraci"</string>
<string name="upload_file" msgid="2897957172366730416">"Zvolit soubor"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Není vybrán žádný soubor"</string>
<string name="reset" msgid="2448168080964209908">"Resetovat"</string>
<string name="submit" msgid="1602335572089911941">"Odeslat"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Aktivován režim V autě"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Klepnutím ukončíte režim V autě."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Sdílené připojení nebo hotspot je aktivní."</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Klepnutím zahájíte nastavení."</string>
<string name="back_button_label" msgid="2300470004503343439">"Zpět"</string>
<string name="next_button_label" msgid="1080555104677992408">"Další"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Přeskočit"</string>
@@ -1289,8 +1275,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Přidat účet"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Zvýšit"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Snížit"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g>krát klepněte a podržte."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Chcete-li hodnotu zvýšit, přijeďte prstem nahoru, chcete-li hodnotu snížit, přejeďte prstem dolů."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Přidat minutu"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Ubrat minutu"</string>
@@ -1334,8 +1319,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Úložiště USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Upravit"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Upozornění na využití dat"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Klepnutím zobrazíte nastavení."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Dosáhli jste limitu dat 2G–3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Dosáhli jste limitu dat 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Dosáhli jste limitu mobilních dat"</string>
@@ -1347,8 +1331,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Datový limit Wi-Fi byl překročen"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> nad stanoveným limitem."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Data na pozadí jsou omezena"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Klepnutím odstraníte omezení."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Certifikát zabezpečení"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Tento certifikát je platný."</string>
<string name="issued_to" msgid="454239480274921032">"Vydáno pro:"</string>
@@ -1566,10 +1549,8 @@
<string name="select_year" msgid="7952052866994196170">"Vyberte rok"</string>
<string name="deleted_key" msgid="7659477886625566590">"Číslice <xliff:g id="KEY">%1$s</xliff:g> byla smazána"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Pracovní <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Chcete-li tuto obrazovku uvolnit, klepněte na tlačítko Zpět a podržte jej."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Chcete-li tuto obrazovku uvolnit, klepněte na tlačítko Přehled a podržte jej."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikace je připnutá: Odepnutí v tomto zařízení není povoleno."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Obrazovka připnuta"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Obrazovka uvolněna"</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index e89914936d1b..1937f0cdaf55 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"hente indholdet i vinduet"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"undersøge indholdet i et vindue, du interagerer med."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"aktivere Udforsk ved berøring"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"De elementer, der trykkes på, læses højt, og skærmen kan udforskes ved hjælp af bevægelser."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Aktivér udvidede webhjælpefunktioner"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Der installeres muligvis scripts for at gøre appindhold mere tilgængeligt."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"observere tekst, du skriver"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Indtast PUK- og pinkode"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-kode"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Ny pinkode"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Tryk for at skrive adgangskode"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Indtast adgangskoden for at låse op"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Indtast pinkode for at låse op"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Forkert pinkode."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Nogle systemfunktioner virker måske ikke"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Der er ikke nok ledig lagerplads til systemet. Sørg for, at du har 250 MB ledig plads, og genstart."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> kører"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Tryk for at få flere oplysninger eller for at stoppe appen."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Annuller"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Åbner dine apps."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Gennemfører start."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> er i gang"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Tryk for at skifte til appen"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Vil du skifte apps?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Der kører allerede en anden app, der skal stoppes, før du kan starte en ny."</string>
<string name="old_app_action" msgid="493129172238566282">"Tilbage til <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Start <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Stop den gamle app uden at gemme."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> har overskredet sin hukommelsesgrænse"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"En heap dump er blevet indsamlet. Tryk for at dele"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Vil du dele en heap dump?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Processen <xliff:g id="PROC">%1$s</xliff:g> har overskredet sin proceshukommelsesgrænse på <xliff:g id="SIZE">%2$s</xliff:g>. En heap dump er tilgængelig og kan deles med udvikleren. Vær forsigtig: Denne heap dump kan indeholde dine personlige oplysninger, som appen har adgang til."</string>
<string name="sendText" msgid="5209874571959469142">"Vælg en handling for teksten"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi har ingen internetadgang"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Tryk for at se valgmuligheder"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Kunne ikke oprette forbindelse til Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" har en dårlig internetforbindelse."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Vil du tillade denne forbindelse?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Start Wi-Fi Direct. Dette slår Wi-Fi-klient/hotspot fra."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct kunne ikke startes."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct er slået til"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Tryk for at se indstillinger"</string>
<string name="accept" msgid="1645267259272829559">"Accepter"</string>
<string name="decline" msgid="2112225451706137894">"Afvis"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitationen er sendt"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB til billedoverførsel"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB til MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Tilsluttet et USB-ekstraudstyr"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Tryk for at se flere muligheder."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-fejlretning er tilsluttet"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Tryk for at deaktivere fejlretning via USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Opretter fejlrapport…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Vil du dele fejlrapporten?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Deler fejlrapport…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Der blev registreret et nyt <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Til overførsel af billeder og medier"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> er beskadiget"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> er beskadiget. Tryk for at rette problemet."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> understøttes ikke"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Denne enhed understøtter ikke dette <xliff:g id="NAME">%s</xliff:g>. Tryk for at konfigurere det til et understøttet format."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> blev fjernet uventet"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"For at undgå datatab skal <xliff:g id="NAME">%s</xliff:g> demonteres inden fjernelse"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> blev fjernet"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Opretter forbindelse til altid aktiveret VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Always-on VPN er forbundet"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Fejl i altid aktiveret VPN"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Tryk for at konfigurere"</string>
<string name="upload_file" msgid="2897957172366730416">"Vælg fil"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ingen fil er valgt"</string>
<string name="reset" msgid="2448168080964209908">"Nulstil"</string>
<string name="submit" msgid="1602335572089911941">"Send"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Biltilstand er aktiveret"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Tryk for at afslutte biltilstand."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Netdeling eller hotspot er aktivt"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tryk for at konfigurere"</string>
<string name="back_button_label" msgid="2300470004503343439">"Tilbage"</string>
<string name="next_button_label" msgid="1080555104677992408">"Næste"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Spring over"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Tilføj konto"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Højere"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Lavere"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"Tryk og hold <xliff:g id="VALUE">%s</xliff:g> nede."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Glid op for at øge og ned for at mindske."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Forøg minuttal"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Sænk minuttal"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-lager"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Rediger"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Advarsel om dataforbrug"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Tryk for at se forbrug og indstillinger."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Grænsen for 2G-3G-data er nået"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Grænsen for 4G-data er nået"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Grænsen for mobildata er nået"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Grænsen for Wi-Fi-data er overskredet"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> over den angivne grænse."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Baggrundsdata er begrænsede"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Tryk for at fjerne begrænsning."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Sikkerhedscertifikat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Dette certifikat er gyldigt."</string>
<string name="issued_to" msgid="454239480274921032">"Udstedt til:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Vælg år"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> er slettet"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> – arbejde"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Hvis du vil frigøre dette skærmbillede, skal du trykke på Tilbage og holde fingeren nede."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Hvis du vil frigøre dette skærmbillede, skal du trykke på Oversigt og holde fingeren nede."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Appen er fastgjort: Det er ikke tilladt at frigøre den på denne enhed."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Skærmen blev fastgjort"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Skærmen blev frigjort"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 8addd41b64c5..b7403861a283 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Fensterinhalte abrufen"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Die Inhalte eines Fensters, mit dem du interagierst, werden abgerufen."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"\"Tippen &amp; Entdecken\" aktivieren"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Berührte Elemente werden laut vorgelesen und der Bildschirm kann über Gesten erkundet werden."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Verbesserte Web-Bedienung aktivieren"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skripts können installiert werden, um den Zugriff auf App-Inhalte zu erleichtern."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Text bei der Eingabe beobachten"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK und neuen PIN-Code eingeben"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-Code"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Neuer PIN-Code"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Zur Passworteingabe tippen"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Passwort zum Entsperren eingeben"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"PIN zum Entsperren eingeben"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Falscher PIN-Code"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Einige Systemfunktionen funktionieren möglicherweise nicht."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Der Speicherplatz reicht nicht für das System aus. Stelle sicher, dass 250 MB freier Speicherplatz vorhanden sind, und starte das Gerät dann neu."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> wird ausgeführt"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Für weitere Informationen oder zum Beenden der App tippen."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Abbrechen"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Apps werden gestartet..."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Start wird abgeschlossen..."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> läuft"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Zum Wechseln der App tippen"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Apps wechseln?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Es wird bereits eine andere App ausgeführt, die vor dem Start einer neuen beendet werden muss."</string>
<string name="old_app_action" msgid="493129172238566282">"Zu <xliff:g id="OLD_APP">%1$s</xliff:g> zurückkehren"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> starten"</string>
<string name="new_app_description" msgid="1932143598371537340">"Alte App beenden, ohne zu speichern"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Speicherlimit für \"<xliff:g id="PROC">%1$s</xliff:g>\" überschritten"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Heap-Dump wurde erfasst. Zum Teilen tippen"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Heap-Dump teilen?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Für den Prozess \"<xliff:g id="PROC">%1$s</xliff:g>\" wurde das Prozessspeicherlimit von <xliff:g id="SIZE">%2$s</xliff:g> überschritten. Es steht ein Heap-Dump zur Verfügung, den du mit dem Entwickler teilen kannst. Beachte jedoch unbedingt, dass der Heap-Dump personenbezogene Daten von dir enthalten kann, auf die die App zugreifen kann."</string>
<string name="sendText" msgid="5209874571959469142">"Aktion für Text auswählen"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"WLAN hat keinen Internetzugriff"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Für Optionen tippen"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Es konnte keine WLAN-Verbindung hergestellt werden."</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" hat eine schlechte Internetverbindung."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Verbindung zulassen?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Direct-Betrieb starten. Hierdurch wird der WLAN-Client-/-Hotspot-Betrieb deaktiviert."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Starten von Wi-Fi Direct nicht möglich"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct ist aktiviert."</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Für Einstellungen tippen"</string>
<string name="accept" msgid="1645267259272829559">"Akzeptieren"</string>
<string name="decline" msgid="2112225451706137894">"Ablehnen"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Einladung gesendet"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB für die Fotoübertragung"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB für MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Mit USB-Zubehör verbunden"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Für weitere Optionen tippen."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-Debugging"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Zum Deaktivieren von USB-Debugging tippen."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Fehlerbericht wird abgerufen…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Fehlerbericht teilen?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Fehlerbericht wird geteilt…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Neue <xliff:g id="NAME">%s</xliff:g> entdeckt"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Zum Übertragen von Fotos und Medien"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> beschädigt"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> ist beschädigt. Zum Reparieren tippen."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> nicht unterstützt"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"<xliff:g id="NAME">%s</xliff:g> wird von diesem Gerät nicht unterstützt. Zum Einrichten in einem unterstützten Format tippen."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> wurde unerwartet entfernt"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Trenne die <xliff:g id="NAME">%s</xliff:g> vor dem Entfernen, um Datenverluste zu vermeiden."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> wurde entfernt"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Verbindung zu durchgehend aktivem VPN wird hergestellt…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Mit durchgehend aktivem VPN verbunden"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Durchgehend aktives VPN – Verbindungsfehler"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Zum Konfigurieren tippen"</string>
<string name="upload_file" msgid="2897957172366730416">"Datei auswählen"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Keine ausgewählt"</string>
<string name="reset" msgid="2448168080964209908">"Zurücksetzen"</string>
<string name="submit" msgid="1602335572089911941">"Senden"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Automodus aktiviert"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Zum Beenden des Automodus tippen."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering oder Hotspot aktiv"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Zum Einrichten tippen."</string>
<string name="back_button_label" msgid="2300470004503343439">"Zurück"</string>
<string name="next_button_label" msgid="1080555104677992408">"Weiter"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Überspringen"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Konto hinzufügen"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Verlängern"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Verringern"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> berühren und halten."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Zum Verlängern nach oben und zum Verringern nach unten schieben"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Minuten verlängern"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Minuten verringern"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-Speicher"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Bearbeiten"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Warnung zum Datenverbrauch"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Für Nutzung und Einstellungen tippen."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-/3G-Datenlimit erreicht"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G-Datenlimit erreicht"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mobilfunkdatenlimit erreicht"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"WLAN-Datenlimit überschritten"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> über dem vorgegebenen Limit"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Hintergrunddaten beschränkt"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Zum Entfernen der Beschränkung tippen."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Sicherheitszertifikat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Dies ist ein gültiges Zertifikat."</string>
<string name="issued_to" msgid="454239480274921032">"Ausgestellt für:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Jahr auswählen"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> gelöscht"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (geschäftlich)"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Um die Fixierung dieses Bildschirms aufzuheben, \"Zurück\" berühren und halten."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Um die Fixierung dieses Bildschirms aufzuheben, \"Übersicht\" berühren und halten."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Die App ist fixiert. Das Aufheben der Fixierung ist auf diesem Gerät nicht zulässig."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Bildschirm fixiert"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Bildschirm gelöst"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 821fbe6dd6a2..f62249924ffd 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -255,7 +255,7 @@
<string name="permgrouplab_microphone" msgid="171539900250043464">"Μικρόφωνο"</string>
<string name="permgroupdesc_microphone" msgid="4988812113943554584">"εγγραφή ήχου"</string>
<string name="permgrouplab_camera" msgid="4820372495894586615">"Κάμερα"</string>
- <string name="permgroupdesc_camera" msgid="3250611594678347720">"λήψη φωτογραφιών και εγγραφή βίντεο"</string>
+ <string name="permgroupdesc_camera" msgid="3250611594678347720">"γίνεται λήψη φωτογραφιών και εγγραφή βίντεο"</string>
<string name="permgrouplab_phone" msgid="5229115638567440675">"Τηλέφωνο"</string>
<string name="permgroupdesc_phone" msgid="6234224354060641055">"πραγματοποιεί και να διαχειρίζεται τηλ/κές κλήσεις"</string>
<string name="permgrouplab_sensors" msgid="416037179223226722">"Αισθητήρες σώματος"</string>
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Ανάκτηση του περιεχομένου του παραθύρου"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Έλεγχος του περιεχομένου ενός παραθύρου με το οποίο αλληλεπιδράτε."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ενεργοποίηση της \"Εξερεύνησης με άγγιγμα\""</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Τα στοιχεία που πατάτε θα εκφωνούνται και η εξερεύνηση της οθόνης μπορεί να γίνει με κινήσεις."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Ενεργοποίηση της βελτιωμένης προσβασιμότητας ιστού"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Ενδέχεται να εγκατασταθούν σενάρια για τη βελτίωση της πρόσβασης στο περιεχόμενο της εφαρμογής."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Παρακολούθηση του κειμένου που πληκτρολογείτε"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Πληκτρολογήστε τον κωδικό PUK και τον νέο κωδικό PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Κωδικός PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Νέος κωδικός PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Πατήστε για εισαγ.κωδ. πρόσβ."</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Πληκτρολογήστε τον κωδικό πρόσβασης για ξεκλείδωμα"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Πληκτρολογήστε τον αριθμό PIN για ξεκλείδωμα"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Λανθασμένος κωδικός PIN."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Ορισμένες λειτουργίες συστήματος ενδέχεται να μην λειτουργούν"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Δεν υπάρχει αρκετός αποθηκευτικός χώρος για το σύστημα. Βεβαιωθείτε ότι διαθέτετε 250 MB ελεύθερου χώρου και κάντε επανεκκίνηση."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> εκτελείται"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Πατήστε για περισσότερες πληροφορίες ή για να διακόψετε την εκτέλεση της εφαρμογής."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Ακύρωση"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Έναρξη εφαρμογών."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Ολοκλήρωση εκκίνησης."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Η εφαρμογή <xliff:g id="APP">%1$s</xliff:g> εκτελείται"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Πατήστε για εναλλαγή στην εφαρμογή"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Να γίνει εναλλαγή μεταξύ εφαρμογών;"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Εκτελείται ήδη άλλη εφαρμογή την οποία πρέπει να διακόψετε για να είναι δυνατή η εκτέλεση της νέας."</string>
<string name="old_app_action" msgid="493129172238566282">"Επιστροφή σε <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Εκκίνηση της εφαρμογής <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Διακοπή της παλιάς εφαρμογής χωρίς αποθήκευση."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Η διαδικασία <xliff:g id="PROC">%1$s</xliff:g> υπερβαίνει το όριο μνήμης"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Έγινε λήψη του στιγμιότυπου μνήμης, πατήστε για κοινή χρήση"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Κοινή χρήση στιγμιότυπου μνήμης;"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Η διαδικασία <xliff:g id="PROC">%1$s</xliff:g> υπερβαίνει το όριο μνήμης <xliff:g id="SIZE">%2$s</xliff:g>. Είναι διαθέσιμο ένα στιγμιότυπο μνήμης για να μοιραστείτε με τον προγραμματιστή. Να είστε προσεκτικοί: αυτό το στιγμιότυπο μνήμης μπορεί να περιέχει οποιοδήποτε από τα προσωπικά σας στοιχεία στα οποία έχει πρόσβαση η εφαρμογή."</string>
<string name="sendText" msgid="5209874571959469142">"Επιλέξτε μια ενέργεια για το κείμενο"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Το δίκτυο Wi-Fi δεν έχει πρόσβαση στο διαδίκτυο"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Πατήστε για να δείτε τις επιλογές"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Δεν είναι δυνατή η σύνδεση στο Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" έχει κακή σύνδεση στο Διαδίκτυο."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Να επιτρέπεται η σύνδεση;"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Ξεκινήστε τη λειτουργία Wi-Fi Direct. Θα απενεργοποιηθεί η λειτουργία πελάτη/φορητού σημείου πρόσβασης Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Δεν ήταν δυνατή η εκκίνηση του Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Το Wi-Fi Direct έχει ενεργοποιηθεί"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Πατήστε για να μεταβείτε στις ρυθμίσεις"</string>
<string name="accept" msgid="1645267259272829559">"Αποδοχή"</string>
<string name="decline" msgid="2112225451706137894">"Απόρριψη"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Η πρόσκληση στάλθηκε"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB για μεταφορά φωτογραφιών"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB για MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Σύνδεση σε αξεσουάρ USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Πατήστε για περισσότερες επιλογές."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Συνδέθηκε ο εντοπισμός σφαλμάτων USB"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Πατήστε για απενεργοποίηση του εντοπισμού σφαλμάτων USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Λήψη αναφοράς σφάλματος…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Κοινή χρήση αναφοράς σφάλματος;"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Κοινή χρήση αναφοράς σφάλματος…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Εντοπίστηκε νέο μέσο αποθήκευσης <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Για μεταφορά φωτ./πολυμέσων"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Η κάρτα <xliff:g id="NAME">%s</xliff:g> είναι κατεστραμμένη"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"Το μέσο <xliff:g id="NAME">%s</xliff:g> είναι κατεστραμμένο. Πατήστε για επιδιόρθωση."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Η κάρτα <xliff:g id="NAME">%s</xliff:g> δεν υποστηρίζεται"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Αυτή η συσκευή δεν υποστηρίζει αυτό το μέσο <xliff:g id="NAME">%s</xliff:g>. Πατήστε για ρύθμιση σε μια υποστηριζόμενη μορφή."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Μη αναμενόμενη αφαίρεση <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Αποπροσαρτήστε το μέσο αποθήκευσης <xliff:g id="NAME">%s</xliff:g> πριν τον αφαιρέσετε, προς αποφυγή απώλειας δεδομένων."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Καταργήθηκε το <xliff:g id="NAME">%s</xliff:g>."</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Σύνδεση πάντα ενεργοποιημένου VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Έχει συνδεθεί πάντα ενεργοποιημένο VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Σφάλμα πάντα ενεργοποιημένου VPN"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Πατήστε για διαμόρφωση"</string>
<string name="upload_file" msgid="2897957172366730416">"Επιλογή αρχείου"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Δεν επιλέχθηκε κανένα αρχείο."</string>
<string name="reset" msgid="2448168080964209908">"Επαναφορά"</string>
<string name="submit" msgid="1602335572089911941">"Υποβολή"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Η λειτουργία αυτοκινήτου είναι ενεργοποιημένη"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Πατήστε για έξοδο από τη λειτουργία αυτοκινήτου."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Πρόσδεση ή σύνδεση σημείου πρόσβασης ενεργή"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Πατήστε για ρύθμιση."</string>
<string name="back_button_label" msgid="2300470004503343439">"Πίσω"</string>
<string name="next_button_label" msgid="1080555104677992408">"Επόμενο"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Παράλειψη"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Προσθήκη λογαριασμού"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Αύξηση"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Μείωση"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> αγγίξτε παρατεταμένα."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Πραγματοποιήστε κύλιση προς τα πάνω για αύξηση και προς τα κάτω για μείωση."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Αύξηση λεπτού"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Μείωση λεπτού"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Αποθηκευτικός χώρος USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Επεξεργασία"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Προειδοποίηση χρήσης δεδομένων"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Πατήστε για προβολή χρήσης/ρυθμ."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Συμπλ. το όριο δεδομένων 2G-3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Συμπλ. το όριο δεδομένων 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Συμπλ. το όριο δεδ. κιν. τηλ."</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Υπέρβ. ορίου Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> πάνω από το καθορισμένο όριο."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Περ.δεδομ.παρασκ."</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Πατήστε για κατάργ. περιορισμών."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Πιστοποιητικό ασφαλείας"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Αυτό το πιστοποιητικό είναι έγκυρο."</string>
<string name="issued_to" msgid="454239480274921032">"Εκδόθηκε σε:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Επιλογή έτους"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> διαγράφηκε"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Εργασία <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Για να ξεκαρφιτσώσετε αυτήν την οθόνη, αγγίξτε παρατεταμένα \"Επιστροφή\"."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Για να ξεκαρφιτσώσετε αυτήν την οθόνη, αγγίξτε παρατεταμένα \"Επισκόπηση\"."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Η εφαρμογή καρφιτσώθηκε: Το ξεκαρφίτσωμα δεν επιτρέπεται σε αυτήν τη συσκευή."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Η οθόνη καρφιτσώθηκε"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Η οθόνη ξεκαρφιτσώθηκε"</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 84834dbbb1ec..d2e413956c59 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Retrieve window content"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspect the content of a window that you\'re interacting with."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Turn on Explore by Touch"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Tapped items will be spoken aloud and the screen can be explored using gestures."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Turn on enhanced web accessibility"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Scripts may be installed to make app content more accessible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observe text that you type"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Type PUK and new PIN code"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK code"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"New PIN Code"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Tap to type password"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Type password to unlock"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Type PIN to unlock"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Incorrect PIN code."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Some system functions may not work"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Not enough storage for the system. Make sure that you have 250 MB of free space and restart."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> is running"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Tap for more information or to stop the app."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Cancel"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Finishing boot."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> running"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Tap to switch to app"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Switch apps?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Another app is already running that must be stopped before you can start a new one."</string>
<string name="old_app_action" msgid="493129172238566282">"Return to <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Start <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Stop the old app without saving."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> exceeded memory limit"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Heap dump has been collected; tap to share"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Share heap dump?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"The process <xliff:g id="PROC">%1$s</xliff:g> has exceeded its process memory limit of <xliff:g id="SIZE">%2$s</xliff:g>. A heap dump is available for you to share with its developer. Be careful: this heap dump can contain any of your personal information that the application has access to."</string>
<string name="sendText" msgid="5209874571959469142">"Choose an action for text"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi has no Internet access"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Tap for options"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Couldn\'t connect to Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" has a poor Internet connection."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Allow connection?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Start Wi-Fi Direct. This will turn off Wi-Fi client/hotspot."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Couldn\'t start Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct is on"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Tap for settings"</string>
<string name="accept" msgid="1645267259272829559">"Accept"</string>
<string name="decline" msgid="2112225451706137894">"Decline"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitation sent"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB for photo transfer"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB for MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connected to a USB accessory"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Tap for more options."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB debugging connected"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Tap to disable USB debugging."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Taking bug report…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Share bug report?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Sharing bug report…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"New <xliff:g id="NAME">%s</xliff:g> detected"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"For transferring photos and media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Corrupted <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> is corrupt. Tap to fix."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Unsupported <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>. Tap to set up in a supported format."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> unexpectedly removed"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Unmount <xliff:g id="NAME">%s</xliff:g> before removing to avoid data loss"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Removed <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Always-on VPN connecting…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Always-on VPN connected"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Always-on VPN error"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Tap to configure"</string>
<string name="upload_file" msgid="2897957172366730416">"Choose file"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"No file chosen"</string>
<string name="reset" msgid="2448168080964209908">"Reset"</string>
<string name="submit" msgid="1602335572089911941">"Submit"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Car mode enabled"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Tap to exit car mode."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering or hotspot active"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tap to set up."</string>
<string name="back_button_label" msgid="2300470004503343439">"Back"</string>
<string name="next_button_label" msgid="1080555104677992408">"Next"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Skip"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Add account"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Increase"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Decrease"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> touch &amp; hold."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Slide up to increase and down to decrease."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Increase minute"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Decrease minute"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB storage"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Edit"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Data usage warning"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Tap to view usage and settings."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G data limit reached"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G data limit reached"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mobile data limit reached"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi data limit exceeded"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> over specified limit."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Background data restricted"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Tap to remove restriction."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Security certificate"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"This certificate is valid."</string>
<string name="issued_to" msgid="454239480274921032">"Issued to:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Select year"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> deleted"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Work <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"To unpin this screen, touch &amp; hold Back."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"To unpin this screen, touch &amp; hold Overview."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"App is pinned: unpinning isn\'t allowed on this device."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Screen pinned"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Screen unpinned"</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 84834dbbb1ec..d2e413956c59 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Retrieve window content"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspect the content of a window that you\'re interacting with."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Turn on Explore by Touch"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Tapped items will be spoken aloud and the screen can be explored using gestures."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Turn on enhanced web accessibility"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Scripts may be installed to make app content more accessible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observe text that you type"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Type PUK and new PIN code"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK code"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"New PIN Code"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Tap to type password"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Type password to unlock"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Type PIN to unlock"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Incorrect PIN code."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Some system functions may not work"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Not enough storage for the system. Make sure that you have 250 MB of free space and restart."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> is running"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Tap for more information or to stop the app."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Cancel"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Finishing boot."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> running"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Tap to switch to app"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Switch apps?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Another app is already running that must be stopped before you can start a new one."</string>
<string name="old_app_action" msgid="493129172238566282">"Return to <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Start <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Stop the old app without saving."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> exceeded memory limit"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Heap dump has been collected; tap to share"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Share heap dump?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"The process <xliff:g id="PROC">%1$s</xliff:g> has exceeded its process memory limit of <xliff:g id="SIZE">%2$s</xliff:g>. A heap dump is available for you to share with its developer. Be careful: this heap dump can contain any of your personal information that the application has access to."</string>
<string name="sendText" msgid="5209874571959469142">"Choose an action for text"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi has no Internet access"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Tap for options"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Couldn\'t connect to Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" has a poor Internet connection."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Allow connection?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Start Wi-Fi Direct. This will turn off Wi-Fi client/hotspot."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Couldn\'t start Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct is on"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Tap for settings"</string>
<string name="accept" msgid="1645267259272829559">"Accept"</string>
<string name="decline" msgid="2112225451706137894">"Decline"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitation sent"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB for photo transfer"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB for MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connected to a USB accessory"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Tap for more options."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB debugging connected"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Tap to disable USB debugging."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Taking bug report…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Share bug report?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Sharing bug report…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"New <xliff:g id="NAME">%s</xliff:g> detected"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"For transferring photos and media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Corrupted <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> is corrupt. Tap to fix."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Unsupported <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>. Tap to set up in a supported format."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> unexpectedly removed"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Unmount <xliff:g id="NAME">%s</xliff:g> before removing to avoid data loss"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Removed <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Always-on VPN connecting…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Always-on VPN connected"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Always-on VPN error"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Tap to configure"</string>
<string name="upload_file" msgid="2897957172366730416">"Choose file"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"No file chosen"</string>
<string name="reset" msgid="2448168080964209908">"Reset"</string>
<string name="submit" msgid="1602335572089911941">"Submit"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Car mode enabled"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Tap to exit car mode."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering or hotspot active"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tap to set up."</string>
<string name="back_button_label" msgid="2300470004503343439">"Back"</string>
<string name="next_button_label" msgid="1080555104677992408">"Next"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Skip"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Add account"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Increase"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Decrease"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> touch &amp; hold."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Slide up to increase and down to decrease."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Increase minute"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Decrease minute"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB storage"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Edit"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Data usage warning"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Tap to view usage and settings."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G data limit reached"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G data limit reached"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mobile data limit reached"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi data limit exceeded"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> over specified limit."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Background data restricted"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Tap to remove restriction."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Security certificate"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"This certificate is valid."</string>
<string name="issued_to" msgid="454239480274921032">"Issued to:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Select year"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> deleted"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Work <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"To unpin this screen, touch &amp; hold Back."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"To unpin this screen, touch &amp; hold Overview."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"App is pinned: unpinning isn\'t allowed on this device."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Screen pinned"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Screen unpinned"</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 84834dbbb1ec..d2e413956c59 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Retrieve window content"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspect the content of a window that you\'re interacting with."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Turn on Explore by Touch"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Tapped items will be spoken aloud and the screen can be explored using gestures."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Turn on enhanced web accessibility"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Scripts may be installed to make app content more accessible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observe text that you type"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Type PUK and new PIN code"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK code"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"New PIN Code"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Tap to type password"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Type password to unlock"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Type PIN to unlock"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Incorrect PIN code."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Some system functions may not work"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Not enough storage for the system. Make sure that you have 250 MB of free space and restart."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> is running"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Tap for more information or to stop the app."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Cancel"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starting apps."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Finishing boot."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> running"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Tap to switch to app"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Switch apps?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Another app is already running that must be stopped before you can start a new one."</string>
<string name="old_app_action" msgid="493129172238566282">"Return to <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Start <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Stop the old app without saving."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> exceeded memory limit"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Heap dump has been collected; tap to share"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Share heap dump?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"The process <xliff:g id="PROC">%1$s</xliff:g> has exceeded its process memory limit of <xliff:g id="SIZE">%2$s</xliff:g>. A heap dump is available for you to share with its developer. Be careful: this heap dump can contain any of your personal information that the application has access to."</string>
<string name="sendText" msgid="5209874571959469142">"Choose an action for text"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi has no Internet access"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Tap for options"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Couldn\'t connect to Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" has a poor Internet connection."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Allow connection?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Start Wi-Fi Direct. This will turn off Wi-Fi client/hotspot."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Couldn\'t start Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct is on"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Tap for settings"</string>
<string name="accept" msgid="1645267259272829559">"Accept"</string>
<string name="decline" msgid="2112225451706137894">"Decline"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitation sent"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB for photo transfer"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB for MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connected to a USB accessory"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Tap for more options."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB debugging connected"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Tap to disable USB debugging."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Taking bug report…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Share bug report?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Sharing bug report…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"New <xliff:g id="NAME">%s</xliff:g> detected"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"For transferring photos and media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Corrupted <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> is corrupt. Tap to fix."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Unsupported <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"This device doesn’t support this <xliff:g id="NAME">%s</xliff:g>. Tap to set up in a supported format."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> unexpectedly removed"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Unmount <xliff:g id="NAME">%s</xliff:g> before removing to avoid data loss"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Removed <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Always-on VPN connecting…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Always-on VPN connected"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Always-on VPN error"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Tap to configure"</string>
<string name="upload_file" msgid="2897957172366730416">"Choose file"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"No file chosen"</string>
<string name="reset" msgid="2448168080964209908">"Reset"</string>
<string name="submit" msgid="1602335572089911941">"Submit"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Car mode enabled"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Tap to exit car mode."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering or hotspot active"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tap to set up."</string>
<string name="back_button_label" msgid="2300470004503343439">"Back"</string>
<string name="next_button_label" msgid="1080555104677992408">"Next"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Skip"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Add account"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Increase"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Decrease"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> touch &amp; hold."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Slide up to increase and down to decrease."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Increase minute"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Decrease minute"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB storage"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Edit"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Data usage warning"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Tap to view usage and settings."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G data limit reached"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G data limit reached"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mobile data limit reached"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi data limit exceeded"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> over specified limit."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Background data restricted"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Tap to remove restriction."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Security certificate"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"This certificate is valid."</string>
<string name="issued_to" msgid="454239480274921032">"Issued to:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Select year"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> deleted"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Work <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"To unpin this screen, touch &amp; hold Back."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"To unpin this screen, touch &amp; hold Overview."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"App is pinned: unpinning isn\'t allowed on this device."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Screen pinned"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Screen unpinned"</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index a4f35545d801..2e9f32cbafb7 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar el contenido de las ventanas"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona el contenido de la ventana con la que estés interactuando."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar la Exploración táctil"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Los elementos que presiones se dirán en voz alta y podrás explorar la pantalla mediante gestos."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activar la accesibilidad web mejorada"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Es posible que se instalen secuencias de comandos para que el contenido de las aplicaciones sea más accesible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observar el texto que escribes"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Escribe el código PUK y un nuevo código PIN."</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Código PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nuevo código PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Presiona e ingresa contraseña"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Ingresar contraseña para desbloquear"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Ingresa el PIN para desbloquear"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorrecto"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Es posible que algunas funciones del sistema no estén disponibles."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"No hay espacio suficiente para el sistema. Asegúrate de que haya 250 MB libres y reinicia el dispositivo."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> se está ejecutando"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Presiona para obtener más información o detener la app."</string>
<string name="ok" msgid="5970060430562524910">"Aceptar"</string>
<string name="cancel" msgid="6442560571259935130">"Cancelar"</string>
<string name="yes" msgid="5362982303337969312">"Aceptar"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicaciones"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Finalizando el inicio"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> en ejecución"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Presiona para cambiar a la app"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"¿Deseas cambiar aplicaciones?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Ya se está ejecutando una aplicación que debe detenerse antes de iniciar una nueva."</string>
<string name="old_app_action" msgid="493129172238566282">"Regresar a <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Inicio <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Interrumpe la aplicación anterior sin guardar los cambios."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> superó el límite de memoria."</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Se recopiló el volcado de pila. Presiona para compartir."</string>
<string name="dump_heap_title" msgid="5864292264307651673">"¿Compartir volcado de pila?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"El proceso <xliff:g id="PROC">%1$s</xliff:g> superó el límite de memoria de proceso de <xliff:g id="SIZE">%2$s</xliff:g>. Hay un volcado de pila disponible para que puedas compartirlo con el programador. Ten cuidado, este volcado de pila puede contener información personal a la que la aplicación tiene acceso."</string>
<string name="sendText" msgid="5209874571959469142">"Seleccionar una acción para el texto"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"La red Wi-Fi no tiene acceso a Internet"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Presiona para ver opciones"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"No se pudo conectar a la red Wi-Fi."</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" tiene una mala conexión a Internet."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"¿Permitir la conexión?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Iniciar Wi-Fi Direct. Se desactivará el funcionamiento de la zona o del cliente Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"No se pudo iniciar Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Se activó Wi-Fi Direct."</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Presiona para ver la configuración"</string>
<string name="accept" msgid="1645267259272829559">"Aceptar"</string>
<string name="decline" msgid="2112225451706137894">"Rechazar"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Se envió la invitación."</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferir fotos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectado a un accesorio USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Presiona para ver más opciones."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depuración por USB conectada"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Presiona para inhabilitar la depuración por USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Realizando un informe de errores…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"¿Compartir informe de errores?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Compartiendo informe de errores…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Se detectó un nuevo medio (<xliff:g id="NAME">%s</xliff:g>)."</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Para transferir fotos y contenido multimedia"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> está dañado"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> está dañado. Presiona para solucionar el problema."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> no es compatible"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"El dispositivo no es compatible con <xliff:g id="NAME">%s</xliff:g>. Presiona la pantalla para configurarlo en un formato compatible."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Se extrajo <xliff:g id="NAME">%s</xliff:g> de forma inesperada."</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Para evitar que se pierdan datos, desactiva el dispositivo <xliff:g id="NAME">%s</xliff:g> antes de extraerlo."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Se extrajo el medio <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Estableciendo conexión con la VPN siempre activada..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Se estableció conexión con la VPN siempre activada."</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Se produjo un error al establecer conexión con la VPN siempre activada."</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Presiona para configurar"</string>
<string name="upload_file" msgid="2897957172366730416">"Elegir archivo"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"No se seleccionó un archivo."</string>
<string name="reset" msgid="2448168080964209908">"Restablecer"</string>
<string name="submit" msgid="1602335572089911941">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Modo Auto habilitado"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Presiona para salir del modo auto."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Anclaje a red o zona activa conectados"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Presiona para configurar."</string>
<string name="back_button_label" msgid="2300470004503343439">"Atrás"</string>
<string name="next_button_label" msgid="1080555104677992408">"Siguiente"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Omitir"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Agregar una cuenta"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Aumentar"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Reducir"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"Mantén presionado <xliff:g id="VALUE">%s</xliff:g>."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Desliza el dedo hacia arriba para aumentar los valores y hacia abajo para reducirlos."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aumentar minutos"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Reducir minutos"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Almacenamiento USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Editar"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Advertencia de uso de datos"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Presiona para uso y opciones."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Límite de datos 2G-3G alcanzado"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Límite de datos 4G alcanzado"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Límite datos móviles alcanzado"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Límite de datos Wi-Fi superado"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Límite superado en <xliff:g id="SIZE">%s</xliff:g>"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Datos de referencia restringidos"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Presiona y quita la restricción."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Certificado de seguridad"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Este certificado es válido."</string>
<string name="issued_to" msgid="454239480274921032">"Emitido a:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Seleccionar año"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> borrado"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> de trabajo"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Para dejar de fijar esta pantalla, mantén presionado Atrás."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Para dejar de fijar esta pantalla, mantén presionado Recientes."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"La aplicación está fijada, no se puede anular la fijación en este dispositivo."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Pantalla fija"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Pantalla no fija"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 5af31757aa35..858cf27bdcb1 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar el contenido de la ventana"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona el contenido de una ventana con la que estés interactuando."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar la exploración táctil"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Los elementos seleccionados se dicen en voz alta y se puede explorar la pantalla mediante gestos."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activar la accesibilidad web mejorada"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Es posible que se instalen secuencias de comandos para que el contenido de las aplicaciones sea más accesible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observar el texto que escribes"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Introduce el código PUK y un nuevo código PIN."</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Código PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nuevo código PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Toca para insertar contraseña"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Introduce la contraseña para desbloquear."</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Introduce el código PIN para desbloquear."</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorrecto"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Es posible que algunas funciones del sistema no funcionen."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"No hay espacio suficiente para el sistema. Comprueba que haya 250 MB libres y reinicia el dispositivo."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> se está ejecutando"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Toca para obtener más información o para detener la aplicación."</string>
<string name="ok" msgid="5970060430562524910">"Aceptar"</string>
<string name="cancel" msgid="6442560571259935130">"Cancelar"</string>
<string name="yes" msgid="5362982303337969312">"Aceptar"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicaciones"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Finalizando inicio..."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> en ejecución"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Toca para cambiar a la aplicación"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"¿Cambiar aplicaciones?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Se está ejecutando otra aplicación. Para iniciar una aplicación nueva, debes detenerla."</string>
<string name="old_app_action" msgid="493129172238566282">"Volver a <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Iniciar <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Detener la aplicación anterior sin guardar"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ha superado el límite de memoria"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Se ha recopilado un volcado de pila. Toca para compartirlo"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"¿Compartir volcado de pila?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"El proceso <xliff:g id="PROC">%1$s</xliff:g> ha superado su límite de memoria de <xliff:g id="SIZE">%2$s</xliff:g>. Hay un volcado de pila disponible que puedes compartir con su desarrollador (ten cuidado, ya que puede incluir información personal a la que tenga acceso la aplicación)."</string>
<string name="sendText" msgid="5209874571959469142">"Selecciona una acción para el texto"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi sin acceso a Internet"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Toca para ver opciones"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"No se ha podido establecer conexión con la red Wi-Fi."</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" tiene una conexión inestable a Internet."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"¿Permitir la conexión?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Iniciar Wi-Fi Direct. Se desactivará el funcionamiento de la zona o del cliente Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"No se ha podido iniciar Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct activado"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Toca para ver ajustes"</string>
<string name="accept" msgid="1645267259272829559">"Aceptar"</string>
<string name="decline" msgid="2112225451706137894">"Rechazar"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitación enviada"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferir fotos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectado a un accesorio USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Toca para ver más opciones."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depuración USB habilitada"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Toca para inhabilitar la depuración USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Creando informe de errores…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"¿Compartir informe de errores?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Compartiendo informe de errores…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Nueva <xliff:g id="NAME">%s</xliff:g> detectada"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Para transferir fotos y multimedia"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Medio externo (<xliff:g id="NAME">%s</xliff:g>) dañado"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> está dañado. Toca para solucionar el problema."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Medio externo (<xliff:g id="NAME">%s</xliff:g>) no admitido"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"El dispositivo no admite este medio externo (<xliff:g id="NAME">%s</xliff:g>). Toca para configurarlo con un formato admitido."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Extracción inesperada de <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Desactiva tu <xliff:g id="NAME">%s</xliff:g> antes de extraer la unidad para evitar pérdidas de datos"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Tu <xliff:g id="NAME">%s</xliff:g> se ha extraído"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Conectando VPN siempre activada…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN siempre activada conectada"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Error de VPN siempre activada"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Toca para configurar"</string>
<string name="upload_file" msgid="2897957172366730416">"Seleccionar archivo"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Archivo no seleccionado"</string>
<string name="reset" msgid="2448168080964209908">"Restablecer"</string>
<string name="submit" msgid="1602335572089911941">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Se ha habilitado el modo coche"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Toca para salir del modo coche."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Compartir Internet/Zona Wi-Fi activado"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Toca para configurar."</string>
<string name="back_button_label" msgid="2300470004503343439">"Atrás"</string>
<string name="next_button_label" msgid="1080555104677992408">"Siguiente"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Saltar"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Añadir cuenta"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Aumentar"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Reducir"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"Mantén pulsado <xliff:g id="VALUE">%s</xliff:g>."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Desliza el dedo hacia arriba para aumentar y hacia abajo para disminuir."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aumentar minutos"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Reducir minutos"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Almacenamiento USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Editar"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Advertencia de uso de datos"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Toca para ver uso y ajustes."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Límite de datos 2G-3G alcanzado"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Límite de datos 4G alcanzado"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Límite datos móviles alcanzado"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Límite de datos Wi-Fi superado"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Límite superado en <xliff:g id="SIZE">%s</xliff:g>"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Conexiones automáticas restringidas"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Toca para eliminar restricción."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Certificado de seguridad"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Este certificado es válido."</string>
<string name="issued_to" msgid="454239480274921032">"Emitido para:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Seleccionar año"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> eliminado"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> de trabajo"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Mantén pulsado el botón Atrás para dejar de fijar esta pantalla."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Mantén pulsado el botón Visión general para dejar de fijar esta pantalla."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"La aplicación está fijada: no se puede deshacer la fijación en este dispositivo."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Pantalla fijada"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"La pantalla ya no está fija"</string>
diff --git a/core/res/res/values-et-rEE/strings.xml b/core/res/res/values-et-rEE/strings.xml
index 8a334d6b6a8c..4fdfb007217d 100644
--- a/core/res/res/values-et-rEE/strings.xml
+++ b/core/res/res/values-et-rEE/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Akna sisu toomine"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Tutvuge kasutatava akna sisuga."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Puudutusega sirvimise sisselülitamine"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Puudutatud üksuste nimed esitatakse häälega ja ekraani saab sirvida puudutustega."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Veebi täiustatud juurdepääsu sisselülitamine"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Rakenduse sisu kättesaadavamaks muutmiseks võidakse installida skripte."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Sisestatud teksti jälgimine"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Sisestage PUK-kood ja uus PIN-kood"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-kood"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Uus PIN-kood"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Puudut. parooli sisestamiseks"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Avamiseks sisestage parool"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Avamiseks sisestage PIN-kood"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Vale PIN-kood."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Mõned süsteemifunktsioonid ei pruugi töötada"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Süsteemis pole piisavalt talletusruumi. Veenduge, et seadmes oleks 250 MB vaba ruumi, ja käivitage seade uuesti."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> töötab"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Puudutage lisateabe saamiseks või rakenduse peatamiseks."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Tühista"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Rakenduste käivitamine."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Käivitamise lõpuleviimine."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> töötab"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Puudutage rakendusele lülitumiseks"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Kas lülituda teisele rakendusele?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Teine rakendus juba töötab ja see tuleb peatada, et saaksite uue käivitada."</string>
<string name="old_app_action" msgid="493129172238566282">"Tagasi rakendusse <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Käivitage rakendus <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Peatage vana rakendus salvestamata."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Protsess <xliff:g id="PROC">%1$s</xliff:g> ületas mälupiirangu"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Mälutõmmis salvestati; puudutage jagamiseks"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Kas jagada mälutõmmist?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Protsess <xliff:g id="PROC">%1$s</xliff:g> ületas protsessi mälupiirangu <xliff:g id="SIZE">%2$s</xliff:g>. Saate mälutõmmist jagada selle arendajaga. Olge ettevaatlik: see mälutõmmis võib sisaldada teie isiklikke andmeid, millele rakendusel on juurdepääs."</string>
<string name="sendText" msgid="5209874571959469142">"Valige teksti jaoks toiming"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"WiFi-l pole juurdepääsu Internetile"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Puudutage valikute nägemiseks"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Ei saanud WiFi-ga ühendust"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" on halb Interneti-ühendus."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Kas lubada ühendus?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Käivitage WiFi otseühendus. See lülitab välja WiFi kliendi/leviala."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"WiFi otseühenduse käivitamine ebaõnnestus."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"WiFi Direct on sees"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Puudutage seadete nägemiseks"</string>
<string name="accept" msgid="1645267259272829559">"Nõustu"</string>
<string name="decline" msgid="2112225451706137894">"Keeldu"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Kutse on saadetud"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB fotode edastamiseks"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB MIDI jaoks"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Ühendatud USB-lisaseadmega"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Puudutage lisavalikute nägemiseks."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-silumine ühendatud"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Puudutage USB-silumise keelamiseks."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Veaaruande võtmine …"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Kas jagada veaaruannet?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Veaaruande jagamine …"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Tuvastati uus üksus <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Fotode ja meedia ülekandmiseks"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Rikutud <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"Üksus <xliff:g id="NAME">%s</xliff:g> on rikutud. Puudutage parandamiseks."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Toetamata <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"See seade ei toeta üksust <xliff:g id="NAME">%s</xliff:g>. Puudutage toetatud vormingus seadistamiseks."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Üksus <xliff:g id="NAME">%s</xliff:g> eemaldati ootamatult"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Andmekao vältimiseks lahutage üksus <xliff:g id="NAME">%s</xliff:g> enne eemaldamist"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Üksus <xliff:g id="NAME">%s</xliff:g> on eemaldatud"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Ühendamine alati sees VPN-iga …"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Ühendatud alati sees VPN-iga"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Alati sees VPN-i viga"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Puudutage seadistamiseks"</string>
<string name="upload_file" msgid="2897957172366730416">"Valige fail"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ühtegi faili pole valitud"</string>
<string name="reset" msgid="2448168080964209908">"Lähtesta"</string>
<string name="submit" msgid="1602335572089911941">"Saada"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Autorežiim lubatud"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Puudutage autorežiimist väljumiseks."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Jagamine või tööpunkt on aktiivne"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Puudutage seadistamiseks."</string>
<string name="back_button_label" msgid="2300470004503343439">"Tagasi"</string>
<string name="next_button_label" msgid="1080555104677992408">"Järgmine"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Jäta vahele"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Lisa konto"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Suurendamine"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Vähendamine"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> – puudutage pikalt."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Suurendamiseks lohistage üles, vähendamiseks alla."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Minutite suurendamine"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Minutite vähendamine"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-mäluseade"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Muuda"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Andmete kasutamise hoiatus"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Puudutage kasutuse/seadete vaat."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-, 3G-andmeside limiit on täis"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G-andmeside limiit on täis"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mobiilse andmes. limiit on täis"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"WiFi-andmete piir on ületatud"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> üle määratud piirmäära."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Taustandmed on piiratud"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Puudut. piirangu eemaldamiseks."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Turvasertifikaat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"See sertifikaat on kehtiv."</string>
<string name="issued_to" msgid="454239480274921032">"Väljastatud subjektile:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Aasta valimine"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> on kustutatud"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Töö <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Ekraani vabastamiseks puudutage pikalt nuppu Tagasi."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Ekraani vabastamiseks puudutage pikalt nuppu Ülevaade."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Rakendus on kinnitatud: vabastamine pole selles seadmes lubatud."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekraan on kinnitatud"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekraan on vabastatud"</string>
diff --git a/core/res/res/values-eu-rES/strings.xml b/core/res/res/values-eu-rES/strings.xml
index 1d965b87e49a..4f61bdec6892 100644
--- a/core/res/res/values-eu-rES/strings.xml
+++ b/core/res/res/values-eu-rES/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Eskuratu leihoko edukia"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Arakatu irekita daukazun leihoko edukia."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktibatu ukipen bidez arakatzeko eginbidea"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Sakatutako elementuak ozen esango dira eta pantaila keinu bidez arakatu ahal izango da."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Aktibatu web-erabilerraztasun hobetua"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Scriptak instala daitezke aplikazioaren edukia erabilerrazagoa egiteko."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Behatu idazten duzun testua"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Idatzi PUK kodea eta PIN kode berria"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kodea"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"PIN kode berria"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Sakatu pasahitza idazteko"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Idatzi desblokeatzeko pasahitza"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Idatzi desblokeatzeko PIN kodea"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN kode okerra."</string>
@@ -870,12 +868,12 @@
<item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> h</item>
</plurals>
<plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> e</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> e</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> egun</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> egun</item>
</plurals>
<plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> u</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> u</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> urte</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> urte</item>
</plurals>
<plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
<item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> min barru</item>
@@ -886,12 +884,12 @@
<item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>h barru</item>
</plurals>
<plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> e barru</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> e barru</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> egun barru</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> egun barru</item>
</plurals>
<plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> u barru</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> u barru</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> urte barru</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> urte barru</item>
</plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Bideoak arazoren bat du"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Bideo hau ezin da gailuan zuzenean erreproduzitu."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Sistemaren funtzio batzuek ez dute agian funtzionatuko"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Sisteman ez dago behar adina memoria. Ziurtatu gutxienez 250 MB erabilgarri dituzula eta, ondoren, berrabiarazi gailua."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> abian da"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Sakatu informazio gehiago lortzeko edo aplikazioa gelditzeko."</string>
<string name="ok" msgid="5970060430562524910">"Ados"</string>
<string name="cancel" msgid="6442560571259935130">"Utzi"</string>
<string name="yes" msgid="5362982303337969312">"Ados"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Aplikazioak abiarazten."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Bertsio-berritzea amaitzen."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> exekutatzen"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Sakatu aplikaziora joateko"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Aplikazioz aldatu?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Beste aplikazio bat exekutatzen ari da eta gelditu egin behar duzu beste bat abiarazi aurretik."</string>
<string name="old_app_action" msgid="493129172238566282">"Itzuli <xliff:g id="OLD_APP">%1$s</xliff:g> aplikaziora"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Hasi <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Gelditu aplikazio zaharra ezer gorde gabe."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> prozesuak memoria-muga gainditu du"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Uneko memoria-prozesuaren txostena sortu da; sakatu partekatzeko"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Uneko memoria-prozesuaren txostena partekatu nahi duzu?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> prozesuak memoria-prozesuaren muga (<xliff:g id="SIZE">%2$s</xliff:g>) gainditu du. Uneko memoria-prozesuaren txostena sortu da, garatzailearekin parteka dezazun. Kontuz ibili: txosten horrek aplikazioak atzi dezakeen informazio pertsonala izan dezake."</string>
<string name="sendText" msgid="5209874571959469142">"Aukeratu testurako ekintza"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi konexioa ezin da Internetera konektatu"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Sakatu aukerak ikusteko"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Ezin izan da Wi-Fi sarera konektatu"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" Interneteko konexio txarra du."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Konektatzea baimendu nahi diozu?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Hasi Wi-Fi Direct. Wi-Fi bezeroa edo sare publikoa desaktibatuko da."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Ezin izan da Wi-Fi Direct hasi."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct aktibatuta dago"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Sakatu ezarpenak ikusteko"</string>
<string name="accept" msgid="1645267259272829559">"Onartu"</string>
<string name="decline" msgid="2112225451706137894">"Baztertu"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Gonbidapena bidali da"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Argazkiak transferitzeko USBa"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI modurako USBa"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB osagarri batera konektatuta"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Sakatu aukera gehiago ikusteko."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB arazketa konektatuta"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Sakatu USB arazketa desgaitzeko."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Akatsen txostena sortzen…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Akatsen txostena partekatu nahi duzu?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Akatsen txostena partekatzen…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"<xliff:g id="NAME">%s</xliff:g> berria hauteman da"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Argazkiak eta multimedia-fitxategiak transferitzeko"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> hondatuta dago"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> hondatuta dago. Sakatu konpontzeko."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Ez da onartzen <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Gailuak ez du <xliff:g id="NAME">%s</xliff:g> onartzen. Sakatu onartzen den formatu batean konfiguratzeko."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ustekabean kendu da"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Daturik ez galtzeko, desmuntatu <xliff:g id="NAME">%s</xliff:g> memoria kendu aurretik"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> ez dago"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Beti aktibatuta dagoen VPNa konektatzen…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Beti aktibatuta dagoen VPNa konektatu da"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Beti aktibatuta dagoen VPN errorea"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Sakatu konfiguratzeko"</string>
<string name="upload_file" msgid="2897957172366730416">"Aukeratu fitxategia"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ez da fitxategirik aukeratu"</string>
<string name="reset" msgid="2448168080964209908">"Berrezarri"</string>
<string name="submit" msgid="1602335572089911941">"Bidali"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Auto modua gaituta"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Sakatu auto modutik irteteko."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Konexioa partekatzea edo sare publikoa aktibo"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Sakatu konfiguratzeko."</string>
<string name="back_button_label" msgid="2300470004503343439">"Atzera"</string>
<string name="next_button_label" msgid="1080555104677992408">"Hurrengoa"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Saltatu"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Gehitu kontua"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Handitu"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Txikitu"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"Eduki sakatuta <xliff:g id="VALUE">%s</xliff:g>."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Lerratu gora handitzeko, eta behera txikitzeko."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aurreratu minutu bat"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Atzeratu minutu bat"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB memoria"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Editatu"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Datuen erabilerari buruzko abisua"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Sakatu erabilera eta ezarpenak ikusteko."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2-3 GB-ko mugara iritsi zara"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4 GB-ko mugara iritsi zara"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Datuen mugara iritsi zara"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi datuen muga gainditu da"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Zehaztutako muga baino <xliff:g id="SIZE">%s</xliff:g> gehiago."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Atzeko planoko datuak murriztuta"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Sakatu murriztapena kentzeko."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Segurtasun-ziurtagiria"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Ziurtagiria baliozkoa da."</string>
<string name="issued_to" msgid="454239480274921032">"Honi jaulkia:"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"Hautatu urtea"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ezabatu da"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Laneko <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Pantailari aingura kentzeko, eduki sakatuta Atzera botoia."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Pantailari aingura kentzeko, eduki sakatuta Ikuspegi orokorra botoia."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikazioa ainguratuta dago. Gailu honetan ezin da aingura kendu."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Pantaila ainguratu da"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Aingura kendu zaio pantailari"</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 6101a909f627..c32b98c0996f 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"محتوای پنجره را بازیابی کند"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"محتوای پنجره‌ای را که درحال تعامل با آن هستید بررسی می‌کند."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"فعال‌سازی کاوش لمسی"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"موارد ضربه‌ زده‌شده با صدای بلند خوانده می‌شوند و با استفاده از حرکات اشاره می‌توانید صفحه را کاوش کنید."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"فعال‌سازی دسترس‌پذیری پیشرفته برای وب"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ممکن است جهت افزایش دسترس‌پذیری به محتوای برنامه، اسکریپت‌هایی نصب شود."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"نوشتاری را که تایپ می‌کنید مشاهده کند"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"‏PUK و پین کد جدید را تایپ کنید"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"‏کد PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"پین کد جدید"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"برای تایپ گذرواژه ضربه بزنید"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"برای بازکردن قفل، گذرواژه را وارد کنید"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"برای بازکردن قفل، پین را تایپ کنید"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"پین کد اشتباه است."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"برخی از عملکردهای سیستم ممکن است کار نکنند"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"فضای ذخیره‌سازی سیستم کافی نیست. اطمینان حاصل کنید که دارای ۲۵۰ مگابایت فضای خالی هستید و سیستم را راه‌اندازی مجدد کنید."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> در حال اجرا است"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"برای کسب اطلاعات بیشتر یا توقف برنامه ضربه بزنید."</string>
<string name="ok" msgid="5970060430562524910">"تأیید"</string>
<string name="cancel" msgid="6442560571259935130">"لغو"</string>
<string name="yes" msgid="5362982303337969312">"تأیید"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"در حال آغاز برنامه‌ها."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"در حال اتمام راه‌اندازی."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> در حال اجرا"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"برای رفتن به برنامه ضربه بزنید"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"برنامه عوض شود؟"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"برنامه دیگری از قبل در حال اجراست که باید متوقف شود تا بتوانید برنامه جدید را شروع کنید."</string>
<string name="old_app_action" msgid="493129172238566282">"بازگشت به <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"شروع <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"برنامه قدیمی را بدون ذخیره متوقف کنید."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> از حد مجاز حافظه فراتر رفت"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"رون حافظه آزاد جمع‌آوری شد؛ برای اشتراک‌گذاری، ضربه بزنید"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"رونوشت حافظه آزاد به اشتراک گذاشته شود؟"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"فرآیند <xliff:g id="PROC">%1$s</xliff:g> از حد مجاز حافظه پردازش خود <xliff:g id="SIZE">%2$s</xliff:g> فراتر رفته است. یک رونوشت حافظه آزاد برای شما در دسترس است که با برنامه‌نویس به اشتراک بگذارید. مواظب باشید: این رونوشت حافظه آزاد می‌تواند حاوی هر نوع اطلاعات شخصی شما باشد که برنامه به آن دسترسی دارد."</string>
<string name="sendText" msgid="5209874571959469142">"انتخاب یک عملکرد برای نوشتار"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"‏Wi-Fi به اینترنت دسترسی ندارد"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"برای گزینه‌ها ضربه بزنید"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"‏اتصال به Wi-Fi ممکن نیست"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" اتصال اینترنتی ضعیفی دارد."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"اتصال مجاز است؟"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"‏Wi-Fi Direct را شروع کنید. این کار نقطه اتصال/سرویس گیرنده Wi-Fi را غیرفعال خواهد کرد."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"‏Wi-Fi Direct شروع نشد."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"‏Wi-Fi Direct روشن است"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"برای تنظیمات ضربه بزنید"</string>
<string name="accept" msgid="1645267259272829559">"پذیرفتن"</string>
<string name="decline" msgid="2112225451706137894">"نپذیرفتن"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"دعوت‌نامه ارسال شد"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"‏USB برای انتقال عکس"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"‏USB برای MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"‏به یک وسیله جانبی USB وصل شده است"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"برای گزینه‌های بیشتر ضربه بزنید."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"‏اشکال‌زدایی USB متصل شد"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"‏برای غیرفعال کردن اشکال‌زدایی USB ضربه بزنید."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"درحال گرفتن گزارش اشکال…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"گزارش اشکال به اشتراک گذاشته شود؟"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"درحال اشتراک‌گذاری گزارش اشکال…‏"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"<xliff:g id="NAME">%s</xliff:g> جدید شناسایی شد"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"برای انتقال عکس‌ها و رسانه"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> خراب است"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> خراب است. برای برطرف کردن مشکل ضربه بزنید."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> پشتیبانی نشده"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"این دستگاه از این <xliff:g id="NAME">%s</xliff:g> پشتیبانی نمی‌کند. برای نصب آن در قالب پشتیبانی‌شده ضربه بزنید."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> به‌طور غیرمنتظره جدا شد"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"قبل از جدا کردن، برای جلوگیری از از دست رفتن اطلاعات، ارتباط <xliff:g id="NAME">%s</xliff:g> را قطع کنید."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> جدا شده است"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"‏در حال اتصال VPN همیشه فعال…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"‏VPN همیشه فعال متصل شد"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"‏خطای VPN همیشه فعال"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"جهت پیکربندی ضربه بزنید"</string>
<string name="upload_file" msgid="2897957172366730416">"انتخاب فایل"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"هیچ فایلی انتخاب نشد"</string>
<string name="reset" msgid="2448168080964209908">"بازنشانی"</string>
<string name="submit" msgid="1602335572089911941">"ارسال"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"حالت خودرو فعال شد"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"برای خروج از حالت خودرو ضربه بزنید."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"اتصال داده با سیم یا نقطه اتصال فعال"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"برای راه‌اندازی ضربه بزنید."</string>
<string name="back_button_label" msgid="2300470004503343439">"برگشت"</string>
<string name="next_button_label" msgid="1080555104677992408">"بعدی"</string>
<string name="skip_button_label" msgid="1275362299471631819">"پرش"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"افزودن حساب"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"افزایش"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"کاهش"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> را لمس کنید و نگه دارید."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"برای افزایش به بالا بلغزانید و برای کاهش به پایین بلغزانید."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"افزایش دقیقه"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"کاهش دقیقه"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"‏حافظهٔ USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"ویرایش"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"هشدار میزان استفاده از داده"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"برای مشاهده مصرف و تنظیمات ضربه بزنید."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"‏به حد مجاز مصرف داده 2G-3G رسید"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"‏به حد مجاز مصرف داده 4G رسید"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"به حد مجاز مصرف داده همراه رسید"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"‏از محدوده مجاز داده‌های Wi-Fi بیشتر شد"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> از حد تعیین شده بیشتر شد."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"داده پس‌زمینه محدود شد"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"برای برداشتن محدودیت ضربه بزنید."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"گواهی امنیتی"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"این گواهی معتبر است."</string>
<string name="issued_to" msgid="454239480274921032">"صادر شده برای:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"انتخاب سال"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> حذف شد"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> محل کار"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"برای برداشتن پین این صفحه، «برگشت» را لمس کنید و نگه‌ دارید."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"برای برداشتن پین این صفحه، «نمای کلی» را لمس کنید و نگه دارید."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"برنامه پین شده است: برداشتن پین در این دستگاه مجاز نیست."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"صفحه پین شد"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"پین صفحه برداشته شد"</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 86372d5d0fe1..c4d82d5324b2 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Noutaa ikkunan sisältöä"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Tarkistaa käyttämäsi ikkunan sisältö."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ottaa kosketuksella tutkimisen käyttöön"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Kosketetut kohteet sanotaan ääneen, ja ruudulla voi liikkua eleiden avulla."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Ottaa verkon paremman esteettömyyden käyttöön"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Sovellus voi asentaa ohjelmia tehdäkseen sisällöstään esteettömämmän."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Tarkkailla kirjoittamaasi tekstiä"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Anna PUK-koodi ja uusi PIN-koodi"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-koodi"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Uusi PIN-koodi"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Napauta ja anna salasana."</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Poista lukitus antamalla salasana"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Poista lukitus antamalla PIN-koodi"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN-koodi väärin."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Kaikki järjestelmätoiminnot eivät välttämättä toimi"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Tallennustila ei riitä. Varmista, että vapaata tilaa on 250 Mt, ja käynnistä uudelleen."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> on käynnissä"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Hanki lisätietoja tai sulje sovellus napauttamalla."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Peruuta"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Käynnistetään sovelluksia."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Viimeistellään päivitystä."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> käynnissä"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Vaihda sovellukseen napauttamalla."</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Vaihdetaanko sovellusta?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Toinen sovellus on jo käynnissä. Sulje kyseinen sovellus, niin voit käynnistää uuden."</string>
<string name="old_app_action" msgid="493129172238566282">"Palaa kohteeseen <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Käynnistä <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Pysäytä vanha sovellus tallentamatta."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ylitti muistirajan."</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Keon vedos on kerätty, jaa se napauttamalla."</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Jaetaanko keon vedos?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Prosessi <xliff:g id="PROC">%1$s</xliff:g> on ylittänyt muistirajan (<xliff:g id="SIZE">%2$s</xliff:g>). Keon vedos on jaettavissa kehittäjän kanssa. Ole varovainen: tämä keon vedos voi sisältää sellaisia henkilötietojasi, joihin sovelluksella on käyttöoikeus."</string>
<string name="sendText" msgid="5209874571959469142">"Valitse tekstille toiminto"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi ei ole yhteydessä internetiin."</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Näytä vaihtoehdot napauttamalla."</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi-yhteyden muodostaminen epäonnistui"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" : huono internetyhteys."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Sallitaanko yhteys?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Käynnistä suora Wi-Fi-yhteys. Wi-Fi-asiakas/-hotspot poistetaan käytöstä."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Suoran Wi-Fi-yhteyden käynnistäminen epäonnistui."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct on käytössä"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Näytä asetukset napauttamalla."</string>
<string name="accept" msgid="1645267259272829559">"Hyväksy"</string>
<string name="decline" msgid="2112225451706137894">"Hylkää"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Kutsu lähetetty."</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB on kuvansiirtotilassa"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB on MIDI-tilassa"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Liitetty USB-laitteeseen"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Näet lisää vaihtoehtoja napauttamalla."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-vianetsintä yhdistetty"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Poista USB-vianetsintä käytöstä napauttamalla."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Luodaan virheraporttia…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Jaetaanko virheraportti?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Jaetaan virheraporttia…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Uusi <xliff:g id="NAME">%s</xliff:g> on havaittu."</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Kuvien ja median siirtämiseen"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Vioittunut <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> on viallinen. Korjaa napauttamalla."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Epäyhteensopiva <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"<xliff:g id="NAME">%s</xliff:g> ei ole yhteensopiva tämän laitteen kanssa. Ota se käyttöön tuetussa tilassa napauttamalla."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> poistettiin yllättäen"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Poista <xliff:g id="NAME">%s</xliff:g> käytöstä ennen sen irrottamista estääksesi tietoja katoamasta."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> on poistettu"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Yhdistetään aina käytössä olevaan VPN-verkkoon..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Yhdistetty aina käytössä olevaan VPN-verkkoon"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Aina käytössä oleva VPN: virhe"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Määritä napauttamalla."</string>
<string name="upload_file" msgid="2897957172366730416">"Valitse tiedosto"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ei valittua tiedostoa"</string>
<string name="reset" msgid="2448168080964209908">"Palauta"</string>
<string name="submit" msgid="1602335572089911941">"Lähetä"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Autotila käytössä"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Poistu autotilasta napauttamalla."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Internetin jakaminen tai yhteyspiste käytössä"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Määritä napauttamalla."</string>
<string name="back_button_label" msgid="2300470004503343439">"Takaisin"</string>
<string name="next_button_label" msgid="1080555104677992408">"Seuraava"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Ohita"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Lisää tili"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Lisää"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Vähennä"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> kosketa pitkään."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Lisää tai vähennä arvoa liu\'uttamalla ylös tai alas."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Lisää minuuttien määrää."</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Vähennä minuuttien määrää."</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-tallennustila"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Muokkaa"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Tiedonsiirtovaroitus"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Käyttö &amp; asetukset napauttamalla"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G-tietojen raja saavutettu"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G-tietojen raja saavutettu"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Matkapuhelintietojen raja saavutettu"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi-tiedonsiirtoraja ylitetty"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> yli asetetun rajan"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Rajoitettu taustatietojen käyttö"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Poista rajoitus napauttamalla."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Suojausvarmenne"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Varmenne on voimassa."</string>
<string name="issued_to" msgid="454239480274921032">"Varmenteen saaja:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Valitse vuosi"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> poistettiin"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (työ)"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Irrota näyttö koskettamalla Takaisin-painiketta pitkään."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Poista näytön kiinnitys koskettamalla Yleistä-kohtaa pitkään."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Sovellus on kiinnitetty. Irrottaminen ei ole sallittua tällä laitteella."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Näyttö kiinnitetty"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Näyttö irrotettu"</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 49424eb9f23c..24c0df56e8ec 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Récupérer le contenu d\'une fenêtre"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecter le contenu d\'une fenêtre avec laquelle vous interagissez."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activer la fonctionnalité Explorer au toucher"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Les éléments sélectionnés sont énoncés à voix haute. Vous pouvez explorer l\'écran à l\'aide de gestes."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activer l\'accessibilité Web améliorée"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Vous pouvez installer des scripts pour rendre le contenu des applications plus accessible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observer le texte que vous saisissez"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Saisissez la clé PUK et le nouveau NIP."</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Clé PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nouveau NIP"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Touchez pour entrer le m. de p."</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Saisissez le mot de passe pour déverrouiller le clavier."</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Saisissez le NIP pour déverrouiller le clavier."</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"NIP erroné."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Il est possible que certaines fonctionnalités du système ne soient pas opérationnelles."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Espace de stockage insuffisant pour le système. Assurez-vous de disposer de 250 Mo d\'espace libre, puis redémarrez."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> en cours d\'exécution"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Touchez pour en savoir plus ou pour arrêter l\'application."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Annuler"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Lancement des applications…"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Finalisation de la mise à jour."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> en cours d\'exécution"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Touchez pour passer à l\'application"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Changer d\'application?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Une autre application est déjà en cours d\'exécution. Arrêtez-la avant d\'en lancer une nouvelle."</string>
<string name="old_app_action" msgid="493129172238566282">"Revenir à <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Démarrer <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Arrêtez l\'ancienne application sans enregistrer."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> a dépassé la limite de mémoire"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"L\'empreinte de mémoire a été recueillie. Touchez pour la partager."</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Partager l\'empreinte de mémoire?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Le processus <xliff:g id="PROC">%1$s</xliff:g> a dépassé sa limite de mémoire de <xliff:g id="SIZE">%2$s</xliff:g>. Vous pouvez partager son empreinte de mémoire avec son développeur. Attention : cette empreinte peut contenir certains de vos renseignements personnels auxquels l\'application a accès."</string>
<string name="sendText" msgid="5209874571959469142">"Sélectionner une action pour le texte"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Le réseau Wi-Fi ne dispose d\'aucun accès à Internet"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Touchez pour afficher les options"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Impossible de se connecter au Wi-Fi."</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" dispose d\'une mauvaise connexion Internet."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Autoriser la connexion?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Lancer le Wi-Fi Direct. Cela désactive le fonctionnement du Wi-Fi client ou via un point d\'accès."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Impossible d\'activer le Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct activé"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Touchez pour accéder aux paramètres"</string>
<string name="accept" msgid="1645267259272829559">"Accepter"</string>
<string name="decline" msgid="2112225451706137894">"Refuser"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitation envoyée"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB pour le transfert de photos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB pour MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connecté à un accessoire USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Touchez pour afficher plus d\'options."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Débogage USB connecté"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Touchez pour désactiver le débogage USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Création d\'un rapport de bogue en cours..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Partager le rapport de bogue?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Partage du rapport de bogue en cours..."</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Une nouvelle mémoire « <xliff:g id="NAME">%s</xliff:g> » a été détectée"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Pour transférer des photos et d\'autres fichiers"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Corrompue : <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> est corrompu. Touchez pour corriger le problème."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> non compatible"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Cet appareil n\'est pas compatible avec la mémoire de stockage « <xliff:g id="NAME">%s</xliff:g> ». Touchez pour la configurer dans un format compatible."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Retrait inattendu de la mémoire « <xliff:g id="NAME">%s</xliff:g> »"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Désinstallez la mémoire « <xliff:g id="NAME">%s</xliff:g> » avant de la retirer pour éviter toute perte de données."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Mémoire de stockage « <xliff:g id="NAME">%s</xliff:g> » retirée"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPN permanent en cours de connexion…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN permanent connecté"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Erreur du VPN permanent"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Touchez pour configurer"</string>
<string name="upload_file" msgid="2897957172366730416">"Choisir un fichier"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Aucun fichier sélectionné"</string>
<string name="reset" msgid="2448168080964209908">"Réinitialiser"</string>
<string name="submit" msgid="1602335572089911941">"Envoyer"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mode Voiture activé"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Touchez pour quitter le mode Voiture."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Partage de connexion ou point d\'accès sans fil activé"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Touchez pour configurer."</string>
<string name="back_button_label" msgid="2300470004503343439">"Précédent"</string>
<string name="next_button_label" msgid="1080555104677992408">"Suivante"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Passer"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Ajouter un compte"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Augmenter"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Diminuer"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"Maintenez enfoncée la touche <xliff:g id="VALUE">%s</xliff:g>."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Faites glisser vers le haut pour augmenter et vers le bas pour diminuer."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Minute suivante"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Minute précédente"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Mémoire de stockage USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Modifier"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Avertissement utilisation données"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Touch. pour aff. util. et param."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Limite de données 2G-3G atteinte"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Limite de données 4G atteinte"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Limite donn. cellulaires atteinte"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Quota de données Wi-Fi dépassé"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> au-delà de la limite spécifiée."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Données en arrière-plan limitées"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Touchez pour suppr. restriction."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Certificat de sécurité"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Ce certificat est valide."</string>
<string name="issued_to" msgid="454239480274921032">"Émis à :"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Sélectionnez une année"</string>
<string name="deleted_key" msgid="7659477886625566590">"« <xliff:g id="KEY">%1$s</xliff:g> » a été supprimé"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (travail)"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Pour annuler l\'épinglage de cet écran, maintenez enfoncée la touche Retour."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Pour annuler l\'épinglage de cet écran, maintenez enfoncée la touche Aperçu."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"L\'application est épinglée : l\'annulation de l\'épinglage n\'est pas autorisée sur cet appareil."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Écran épinglé"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Épinglage d\'écran annulé"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 45a356f27be9..dc87af9d0369 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Récupérer le contenu d\'une fenêtre"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecter le contenu d\'une fenêtre avec laquelle vous interagissez"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activer la fonctionnalité Explorer au toucher"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Les éléments sélectionnés sont énoncés à voix haute. Vous pouvez explorer l\'écran à l\'aide de gestes."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activer l\'accessibilité Web améliorée"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Vous pouvez installer des scripts pour rendre le contenu des applications plus accessible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observer le texte que vous saisissez"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Saisissez la clé PUK et le nouveau code PIN."</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Code PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nouveau code PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Appuyer pour saisir mot passe"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Saisissez le mot de passe pour déverrouiller le clavier."</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Saisissez le code PIN pour déverrouiller le clavier."</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Le code PIN est erroné."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Il est possible que certaines fonctionnalités du système ne soient pas opérationnelles."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Espace de stockage insuffisant pour le système. Assurez-vous de disposer de 250 Mo d\'espace libre, puis redémarrez."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> en cours d\'exécution"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Appuyez ici pour en savoir plus ou pour arrêter l\'application."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Annuler"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Lancement des applications…"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Finalisation de la mise à jour."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> en cours d\'exécution"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Appuyez ici pour changer d\'application."</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Changer d\'application ?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Une autre application est déjà en cours d\'exécution. Arrêtez-la avant d\'en lancer une nouvelle."</string>
<string name="old_app_action" msgid="493129172238566282">"Revenir à <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Démarrer <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Arrêtez l\'ancienne application sans enregistrer."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Le processus \"<xliff:g id="PROC">%1$s</xliff:g>\" a dépassé la limite de mémoire"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Une empreinte de la mémoire a bien été générée. Appuyez pour partager."</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Partager l\'empreinte de la mémoire ?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Le processus \"<xliff:g id="PROC">%1$s</xliff:g>\" a dépassé sa limite de mémoire fixée à <xliff:g id="SIZE">%2$s</xliff:g>. Une empreinte de la mémoire est disponible pour que vous la communiquiez à son développeur. Attention : celle-ci peut contenir des informations personnelles auxquelles l\'application a accès."</string>
<string name="sendText" msgid="5209874571959469142">"Sélectionner une action pour le texte"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Le réseau Wi-Fi ne dispose d\'aucun accès à Internet."</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Appuyez ici pour afficher des options."</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Impossible de se connecter au Wi-Fi."</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" dispose d\'une mauvaise connexion Internet."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Autoriser la connexion ?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Lancer le Wi-Fi Direct. Cela désactive le fonctionnement du Wi-Fi client ou via un point d\'accès."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Impossible d\'activer le Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct activé"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Appuyez ici pour accéder aux paramètres."</string>
<string name="accept" msgid="1645267259272829559">"Accepter"</string>
<string name="decline" msgid="2112225451706137894">"Refuser"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitation envoyée"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB pour le transfert de photos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB en mode MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Connecté à un accessoire USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Appuyez ici pour plus d\'options."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Débogage USB activé"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Appuyez ici pour désactiver le débogage USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Création du rapport de bug…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Partager le rapport de bug ?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Partage du rapport de bug…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Une nouvelle mémoire de stockage \"<xliff:g id="NAME">%s</xliff:g>\" a été détectée."</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Pour transférer photos et fichiers"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Mémoire de stockage \"<xliff:g id="NAME">%s</xliff:g>\" corrompue"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"La mémoire de stockage \"<xliff:g id="NAME">%s</xliff:g>\" est corrompue. Appuyez ici pour la réparer."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> non compatible"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Cet appareil n\'est pas compatible avec la mémoire de stockage \"<xliff:g id="NAME">%s</xliff:g>\". Appuyez ici pour le configurer dans un format accepté."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Retrait inattendu de mémoire \"<xliff:g id="NAME">%s</xliff:g>\""</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Désinstallez la mémoire de stockage \"<xliff:g id="NAME">%s</xliff:g>\" avant de la retirer pour éviter toute perte de données."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Mémoire de stockage \"<xliff:g id="NAME">%s</xliff:g>\" retirée"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPN permanent en cours de connexion…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN permanent connecté"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Erreur du VPN permanent"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Appuyez ici pour configurer."</string>
<string name="upload_file" msgid="2897957172366730416">"Sélectionner un fichier"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Aucun fichier sélectionné"</string>
<string name="reset" msgid="2448168080964209908">"Réinitialiser"</string>
<string name="submit" msgid="1602335572089911941">"Envoyer"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mode Voiture activé"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Appuyez ici pour quitter le mode Voiture."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Partage de connexion ou point d\'accès sans fil activé"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Appuyez ici pour configurer."</string>
<string name="back_button_label" msgid="2300470004503343439">"Retour"</string>
<string name="next_button_label" msgid="1080555104677992408">"Suivant"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Ignorer"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Ajouter un compte"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Augmenter"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Diminuer"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> appuyez de manière prolongée."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Faites glisser vers le haut pour augmenter et vers le bas pour diminuer."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Minute suivante"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Minute précédente"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Mémoire de stockage USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Modifier"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Avertissement utilisation données"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Appuyez pour conso/paramètres."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Limite de données 2G-3G atteinte"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Limite de données 4G atteinte"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Limite données mobiles atteinte"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Quota de données Wi-Fi dépassé"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> au-delà de la limite spécifiée."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Données en arrière-plan limitées"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Appuyez pour suppr. restriction."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Certificat de sécurité"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Ce certificat est valide."</string>
<string name="issued_to" msgid="454239480274921032">"Délivré à :"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Sélectionner une année"</string>
<string name="deleted_key" msgid="7659477886625566590">"\"<xliff:g id="KEY">%1$s</xliff:g>\" supprimé"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (travail)"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Pour annuler l\'épinglage, appuyez de manière prolongée sur \"Retour\"."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Pour annuler l\'épinglage, appuyez de manière prolongée sur \"Vue d\'ensemble\"."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"L\'application est épinglée. L\'annulation de l\'épinglage n\'est pas autorisée sur cet appareil."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Écran épinglé."</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Épinglage d\'écran annulé."</string>
diff --git a/core/res/res/values-gl-rES/strings.xml b/core/res/res/values-gl-rES/strings.xml
index ba360b4410c3..455632dd0f3b 100644
--- a/core/res/res/values-gl-rES/strings.xml
+++ b/core/res/res/values-gl-rES/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar contido da ventá"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona o contido dunha ventá coa que estás interactuando."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar a exploración táctil"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Os elementos que toques pronunciaranse en voz alta e a pantalla poderá explorarse mediante xestos."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activar a accesibilidade web mellorada"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"É posible que se instalen scripts para que o contido da aplicación resulte máis accesible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observar o texto que escribes"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Escribe o PUK e o código PIN novo"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Código PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novo código PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Toca e escribe o contrasinal"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Escribe o contrasinal para desbloquear"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Escribe o PIN para desbloquear"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorrecto"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"É posible que algunhas funcións do sistema non funcionen"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Non hai almacenamento suficiente para o sistema. Asegúrate de ter un espazo libre de 250 MB e reinicia o dispositivo."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> estase executando"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Toca aquí para obter máis información ou para deter a aplicación."</string>
<string name="ok" msgid="5970060430562524910">"Aceptar"</string>
<string name="cancel" msgid="6442560571259935130">"Cancelar"</string>
<string name="yes" msgid="5362982303337969312">"Aceptar"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando aplicacións."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Está finalizando o arranque"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> está en execución"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Toca para cambiar á aplicación"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Queres cambiar as aplicacións?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Xa hai unha aplicación executándose que debe deterse para que poidas iniciar outra nova."</string>
<string name="old_app_action" msgid="493129172238566282">"Volver a <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Iniciar <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Deter a aplicación antiga sen gardar."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> superou o límite de memoria"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Recompilouse o baleirado de montóns. Toca para compartir"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Queres compartir o baleirado de montóns?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"O proceso <xliff:g id="PROC">%1$s</xliff:g> superou o seu límite de memoria de proceso de <xliff:g id="SIZE">%2$s</xliff:g>. Tes dispoñible un baleirado de montóns para compartir co seu programador. Debes ter coidado, pois este baleirado de montóns pode conter información persoal á que ten acceso a aplicación."</string>
<string name="sendText" msgid="5209874571959469142">"Seleccionar unha acción para o texto"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"A wifi non ten acceso a Internet"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Toca para ver opcións."</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Non se puido conectar coa rede Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ten unha conexión a Internet deficiente."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Queres permitir a conexión?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Inicia Wi-Fi Direct. Esta acción desactivará o cliente e a zona interactiva da wifi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Non se puido iniciar Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct está activado"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Toca para acceder á configuración"</string>
<string name="accept" msgid="1645267259272829559">"Aceptar"</string>
<string name="decline" msgid="2112225451706137894">"Rexeitar"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitación enviada"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferencia de fotos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectado a un accesorio USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Toca para ver máis opcións."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depuración USB conectada"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Toca para desactivar a depuración de erros de USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Creando informe de erros…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Queres compartir o informe de erros?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Compartindo informe de erros..."</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Detectouse unha <xliff:g id="NAME">%s</xliff:g> nova"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Para transferir fotos e contidos multimedia"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> danado"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"A <xliff:g id="NAME">%s</xliff:g> está danada. Toca para corrixir o problema."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> incompatible"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Este dispositivo non é compatible con esta <xliff:g id="NAME">%s</xliff:g>. Toca para configurala nun formato compatible."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Retirouse a <xliff:g id="NAME">%s</xliff:g> de forma inesperada"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Desactiva a <xliff:g id="NAME">%s</xliff:g> antes de retirala para evitar a perda de datos"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Retirouse a <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPN sempre activada conectándose..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN sempre activada conectada"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Erro na VPN sempre activada"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Toca para configurar"</string>
<string name="upload_file" msgid="2897957172366730416">"Escoller un ficheiro"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Non se seleccionou ningún ficheiro"</string>
<string name="reset" msgid="2448168080964209908">"Restablecer"</string>
<string name="submit" msgid="1602335572089911941">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Modo de coche activado"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Toca para saír do modo de coche."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Ancoraxe á rede ou zona Wi-Fi activada"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tocar para configurar."</string>
<string name="back_button_label" msgid="2300470004503343439">"Volver"</string>
<string name="next_button_label" msgid="1080555104677992408">"Seguinte"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Omitir"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Engadir conta"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Aumentar"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Reducir"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> manter premido"</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Pasa o dedo cara arriba para aumentar e cara abaixo para reducir."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aumentar o minuto"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Reducir o minuto"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"almacenamento USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Editar"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Aviso de uso de datos"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Toca para uso e configuración."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Límite de datos de 2G-3G acadado"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Límite de datos de 4G acadado"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Límite de datos móbiles acadado"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Límite de datos Wi-Fi superado"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> supera o límite especificado."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Datos en segundo plano limitados"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Toca para eliminar a restrición."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Certificado de seguranza"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Este certificado é válido."</string>
<string name="issued_to" msgid="454239480274921032">"Emitido para:"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"Seleccionar ano"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> eliminado"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> do traballo"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Para soltar a pantalla, mantén premido Volver."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Para soltar a pantalla, mantén premido Visión xeral."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"A aplicación está fixada: non se permite soltala neste dispositivo."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Pantalla fixada"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Pantalla desactivada"</string>
diff --git a/core/res/res/values-gu-rIN/strings.xml b/core/res/res/values-gu-rIN/strings.xml
index 0f3d86b7b582..c3eadd63d4e3 100644
--- a/core/res/res/values-gu-rIN/strings.xml
+++ b/core/res/res/values-gu-rIN/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"વિંડો સામગ્રી પુનર્પ્રાપ્ત કરો"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"તમે જેની સાથે ક્રિયાપ્રતિક્રિયા કરી રહ્યાં છો તે વિંડોની સામગ્રીની તપાસ કરો."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ટચ કરીને અન્વેષણ કરો સક્ષમ કરો"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"ટૅપ કરેલ આઇટમ્સ મોટેથી બોલવામાં આવશે અને હાવભાવની મદદથી સ્ક્રીનનું અન્વેષણ કરી શકાય છે."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"વિસ્તૃત વેબ ઍક્સેસિબિલિટી ચાલુ કરો"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"એપ્લિકેશન સામગ્રીને વધુ ઍક્સેસિબલ બનાવવા માટે સ્ક્રિપ્ટ્સ ઇન્સ્ટોલ કરી શકાય છે."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"તમે લખો તે ટેક્સ્ટનું અવલોકન કરો"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK અને નવો PIN કોડ લખો"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK કોડ"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"નવો PIN કોડ"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"પાસવર્ડ ટાઇપ કરવા માટે ટૅપ કરો"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"અનલૉક કરવા માટે પાસવર્ડ લખો"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"અનલૉક કરવા માટે PIN લખો"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"ખોટો PIN કોડ."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"કેટલાક સિસ્ટમ કાર્યો કામ કરી શકશે નહીં"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"સિસ્ટમ માટે પર્યાપ્ત સ્ટોરેજ નથી. ખાતરી કરો કે તમારી પાસે 250MB ખાલી સ્થાન છે અને ફરીથી પ્રારંભ કરો."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ચાલી રહી છે"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"વધુ માહિતી માટે અથવા એપ્લિકેશન રોકવા માટે ટૅપ કરો."</string>
<string name="ok" msgid="5970060430562524910">"ઑકે"</string>
<string name="cancel" msgid="6442560571259935130">"રદ કરો"</string>
<string name="yes" msgid="5362982303337969312">"ઑકે"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"એપ્લિકેશનો શરૂ કરી રહ્યાં છે."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"બૂટ સમાપ્ત કરી રહ્યાં છે."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> ચાલુ છે"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"ઍપ્લિકેશન પર સ્વિચ કરવા માટે ટૅપ કરો"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"એપ્લિકેશન્સને સ્વિચ કરીએ?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"પહેલાંથી ચાલી રહેલ બીજી એપ્લિકેશનને તમે નવી પ્રારંભ કરો તે પહેલાં બંધ કરવી આવશ્યક છે."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> પર પાછા ફરો"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> ને પ્રારંભ કરો"</string>
<string name="new_app_description" msgid="1932143598371537340">"જૂની એપ્લિકેશનને સાચવ્યાં વગર રોકો."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> એ મેમરી સીમા વટાવી"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"હીપ ડમ્પ ભેગો કરવામાં આવ્યો છે; શેર કરવા માટે ટૅપ કરો"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"હીપ ડમ્પ શેર કરીએ?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"પ્રક્રિયા <xliff:g id="PROC">%1$s</xliff:g> એ તેની <xliff:g id="SIZE">%2$s</xliff:g> ની પ્રક્રિયા મેમરી મર્યાદા ઓળંગી. તેના વિકાસકર્તા સાથે શેર કરવા તમારી માટે એક હીપ ડમ્પ ઉપલબ્ધ છે. સાવચેત રહો: આ હીપ ડમ્પમાં તમારી વ્યક્તિગત માહિતી શામેલ હોઈ શકે છે કે જેની એપ્લિકેશનને ઍક્સેસ છે."</string>
<string name="sendText" msgid="5209874571959469142">"ટેક્સ્ટ માટે ક્રિયા પસંદ કરો"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi ને કોઈ ઇન્ટરનેટ ઍક્સેસ નથી"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"વિકલ્પો માટે ટૅપ કરો"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi સાથે કનેક્ટ કરી શકાયું નથી"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" નબળું ઇન્ટરનેટ કનેક્શન ધરાવે છે."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"કનેક્શનની મંજૂરી આપીએ?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Direct પ્રારંભ કરો. આ Wi-Fi ક્લાઇન્ટ/હોટસ્પોટને બંધ કરશે."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct પ્રારંભ કરી શકાયું નથી."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct ચાલુ છે"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"સેટિંગ્સ માટે ટૅપ કરો"</string>
<string name="accept" msgid="1645267259272829559">"સ્વીકારો"</string>
<string name="decline" msgid="2112225451706137894">"નકારો"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"આમંત્રણ મોકલ્યું"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ફોટા ટ્રાન્સફર માટે USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI માટે USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB ઍક્સેસરીથી કનેક્ટ થયાં"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"વધુ વિકલ્પો માટે ટચ કરો."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB ડીબગિંગ કનેક્ટ થયું."</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB ડીબગિંગ અક્ષમ કરવા માટે ટૅપ કરો."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"બગ રિપોર્ટ લઈ રહ્યાં છે…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"બગ રિપોર્ટ શેર કરીએ?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"બગ રિપોર્ટ શેર કરી રહ્યાં છે…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"નવું <xliff:g id="NAME">%s</xliff:g> મળ્યું"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ફોટા અને મીડિયા સ્થાનાંતરિત કરવા માટે"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"દૂષિત <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> દૂષિત છે. ઠીક કરવા માટે ટૅપ કરો."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"અસમર્થિત <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"આ ઉપકરણ આ <xliff:g id="NAME">%s</xliff:g> નું સમર્થન કરતું નથી. સમર્થિત ફોર્મેટમાં સેટ કરવા માટે ટૅપ કરો."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> અનપેક્ષિત રીતે દૂર કર્યું"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ડેટા નુકસાનને ટાળવા માટે <xliff:g id="NAME">%s</xliff:g> ને દૂર કરતાં પહેલાં અનમાઉન્ટ કરો."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> દૂર કર્યું"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"હંમેશા-ચાલુ VPN કનેક્ટ થઈ રહ્યું છે…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"હંમેશા-ચાલુ VPN કનેક્ટ થયું"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"હંમેશાં ચાલુ VPN ભૂલ"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"ગોઠવવા માટે ટૅપ કરો"</string>
<string name="upload_file" msgid="2897957172366730416">"ફાઇલ પસંદ કરો"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"કોઈ ફાઇલ પસંદ કરેલી નથી"</string>
<string name="reset" msgid="2448168080964209908">"ફરીથી સેટ કરો"</string>
<string name="submit" msgid="1602335572089911941">"સબમિટ કરો"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"કાર મોડ સક્ષમ છે"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"કાર મોડથી બહાર નીકળવા માટે ટૅપ કરો."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"ટિથરિંગ અથવા હોટસ્પોટ સક્રિય"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"સેટ કરવા માટે ટૅપ કરો."</string>
<string name="back_button_label" msgid="2300470004503343439">"પાછળ"</string>
<string name="next_button_label" msgid="1080555104677992408">"આગલું"</string>
<string name="skip_button_label" msgid="1275362299471631819">"છોડો"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"એકાઉન્ટ ઉમેરો"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"વધારો"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"ઘટાડો"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> ટચ કરો અને પકડી રાખો."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"વધારવા માટે ઉપર અને ઘટાડવા માટે નીચે સ્લાઇડ કરો."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"મિનિટ વધારો"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"મિનિટ ઘટાડો"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB સંગ્રહ"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"સંપાદિત કરો"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ડેટા વપરાશ ચેતવણી"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"વપરાશ અને સેટિંગ્સ જોવા ટૅપ કરો."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G ડેટા મર્યાદા પર પહોંચ્યાં"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G ડેટા મર્યાદા સુધી પહોંચ્યાં"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"સેલ્યુલર ડેટા મર્યાદા સુધી પહોંચ્યાં"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi ડેટા મર્યાદા ઓળંગાઈ"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"ઉલ્લેખિત મર્યાદાથી <xliff:g id="SIZE">%s</xliff:g> વધુ."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"પૃષ્ઠભૂમિ ડેટા પ્રતિબંધિત"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"પ્રતિબંધ દૂર કરવા માટે ટૅપ કરો."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"સુરક્ષા પ્રમાણપત્ર"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"આ પ્રમાણપત્ર માન્ય છે."</string>
<string name="issued_to" msgid="454239480274921032">"આને રજૂ:"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"વર્ષ પસંદ કરો"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> કાઢી નાખી"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"કાર્યાલય <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"આ સ્ક્રીનને અનપિન કરવા માટે, પાછળને ટચ કરીને પકડી રાખો."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"આ સ્ક્રીનને અનપિન કરવા માટે, વિહંગાવલોકન કરોને ટચ કરો અને પકડો."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"એપ્લિકેશન પિન કરેલ છે. આ ઉપકરણ પર અનપિન કરવાની મંજૂરી નથી."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"સ્ક્રીન પિન કરી"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"સ્ક્રીન અનપિન કરી"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 14dfca433294..3fcc4bad6dbc 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"विंडो सामग्री प्राप्त करें"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"उस विंडो की सामग्री का निरीक्षण करें जिससे आप सहभागिता कर रहे हैं."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"स्पर्श द्वारा एक्सप्लोर करें को चालू करें"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"टैप किए गए आइटम ज़ोर से बोले जाएंगे और स्क्रीन को हावभाव के उपयोग से एक्सप्लोर किया जा सकेगा."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"एन्हांस की गई वेब आसान तरीका चालू करें"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ऐप्स सामग्री को अधिक पहुंच-योग्य बनाने के लिए स्क्रिप्ट इंस्टॉल किए जा सकते हैं."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"आपके द्वारा लिखे हुए लेख को ध्यान से देखें"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK और नया पिन कोड लिखें"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK कोड"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"नया पिन कोड"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"पासवर्ड लिखने के लिए टैप करें"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"अनलॉक करने के लिए पासवर्ड लिखें"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"अनलॉक करने के लिए पिन लिखें"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"गलत पिन कोड."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"हो सकता है कुछ सिस्टम फ़ंक्शन कार्य न करें"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"सिस्टम के लिए पर्याप्त मेमोरी नहीं है. सुनिश्चित करें कि आपके पास 250MB का खाली स्थान है और फिर से प्रारंभ करें."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> चल रहा है"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"अधिक जानकारी के लिए या ऐप्लिकेशन रोकने के लिए टैप करें."</string>
<string name="ok" msgid="5970060430562524910">"ठीक है"</string>
<string name="cancel" msgid="6442560571259935130">"अभी नहीं"</string>
<string name="yes" msgid="5362982303337969312">"ठीक है"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ऐप्स प्रारंभ होने वाले हैं"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"बूट समाप्‍त हो रहा है."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> चल रही है"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"ऐप्लिकेशन पर स्विच करने के लिए टैप करें"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"ऐप्स स्विच करें?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"दूसरा ऐप्स पहले से चल रहा है जिसे किसी नए ऐप्स को प्रारंभ करने के पहले बंद किया जाना आवश्‍यक है."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> पर वापस लौटें"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> प्रारंभ करें"</string>
<string name="new_app_description" msgid="1932143598371537340">"पुराने ऐप्स को बिना सहेजे बंद करें."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> मेमोरी सीमा को पार कर गई है"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"हीप डंप एकत्र कर लिया गया है; साझा करने के लिए टैप करें"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"हीप डंप साझा करें?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"प्रक्रिया <xliff:g id="PROC">%1$s</xliff:g> इसकी <xliff:g id="SIZE">%2$s</xliff:g> की मेमोरी की सीमा को पार कर गई है. इसके डेवलपर से साझा करने के लिए एक हीप डंप आपके लिए उपलब्ध है. सावधान रहें: इस हीप डंप में आपकी ऐसी कोई भी व्यक्तिगत जानकारी हो सकती है जिस पर ऐप्लिकेशन की ऐक्सेस हो."</string>
<string name="sendText" msgid="5209874571959469142">"लेख के लिए किसी क्रिया को चुनें"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"वाई-फ़ाई में कोई इंटरनेट ऐक्‍सेस नहीं है"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"विकल्पों के लिए टैप करें"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"वाई-फ़ाई से कनेक्‍ट नहीं हो सका"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" के पास एक कमज़ोर इंटरनेट कनेक्‍शन है."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"कनेक्शन की अनुमति दें?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"वाई-फ़ाई डायरेक्ट प्रारंभ करें. इससे वाई-फ़ाई क्‍लाइंट/हॉटस्पॉट कार्यवाही बंद हो जाएगी."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"वाई-फ़ाई डायरेक्ट प्रारंभ नहीं किया जा सका."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"वाई-फ़ाई डायरेक्ट चालू है"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"सेटिंग के लिए टैप करें"</string>
<string name="accept" msgid="1645267259272829559">"स्वीकार करें"</string>
<string name="decline" msgid="2112225451706137894">"अस्वीकार करें"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"आमंत्रण भेजा गया"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"फ़ोटो स्‍थानांतरण के लिए USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI के लिए USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB सहायक सामग्री से कनेक्‍ट कि‍या गया"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"अधिक विकल्पों के लिए टैप करें."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB डीबग कनेक्ट किया गया"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB डीबग करना अक्षम करने के लिए टैप करें."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"बग रिपोर्ट प्राप्त की जा रही है…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"बग रिपोर्ट साझा करें?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"बग रिपोर्ट साझा की जा रही है…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"नए <xliff:g id="NAME">%s</xliff:g> का पता लगा"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"फ़ोटो और मीडिया ट्रांसफर करने के लिए"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"दूषित <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> दूषित है. ठीक करने के लिए टैप करें."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"असमर्थित <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"यह डिवाइस इस <xliff:g id="NAME">%s</xliff:g> का समर्थन नहीं करता है. समर्थित प्रारूप में सेट करने के लिए टैप करें."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> अप्रत्याशित रूप से निकाला गया"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"डेटा हानि से बचने के लिए <xliff:g id="NAME">%s</xliff:g> को निकालने से पहले अनमाउंट करें"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> निकाल दिया गया"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"हमेशा-चालू VPN कनेक्ट हो रहा है…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"हमेशा-चालू VPN कनेक्ट है"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"हमेशा-चालू VPN त्रुटि"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"कॉन्फ़िगर करने के लिए टैप करें"</string>
<string name="upload_file" msgid="2897957172366730416">"फ़ाइल चुनें"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"कोई फ़ाइल चुनी नहीं गई"</string>
<string name="reset" msgid="2448168080964209908">"रीसेट करें"</string>
<string name="submit" msgid="1602335572089911941">"सबमिट करें"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"कार मोड सक्षम किया गया"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"कार मोड से बाहर निकलने के लिए टैप करें."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"टेदरिंग या हॉटस्‍पॉट सक्रिय"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"सेट करने के लिए टैप करें."</string>
<string name="back_button_label" msgid="2300470004503343439">"वापस जाएं"</string>
<string name="next_button_label" msgid="1080555104677992408">"आगे"</string>
<string name="skip_button_label" msgid="1275362299471631819">"अभी नहीं"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"खाता जोड़ें"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"बढ़ाएं"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"कम करें"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> को स्पर्श करके रखें."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"बढ़ाने के लिए ऊपर और कम करने के लिए नीचे स्‍लाइड करें."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"मिनट बढ़ाएं"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"मिनट कम करें"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB मेमोरी"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"संपादित करें"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"डेटा उपयोग की चेतावनी"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"उपयोग व सेटिंग देखने हेतु टैप करें."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G डेटा सीमा पूर्ण हो गई"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G डेटा सीमा पूर्ण हो गई"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"सेल्युलर डेटा सीमा पूर्ण हो गई"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"वाई-फ़ाई डेटा सीमा पार हो गई है"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> निर्दिष्ट सीमा से अधिक."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"पृष्ठभूमि डेटा प्रतिबंधित है"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"प्रतिबंध निकालने हेतु टैप करें."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"सुरक्षा प्रमाणपत्र"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"यह प्रमाणपत्र मान्य है."</string>
<string name="issued_to" msgid="454239480274921032">"इन्हें जारी किया गया:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"वर्ष चुनें"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> को हटा दिया गया"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"कार्यस्थल का <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"इस स्क्रीन को अनपिन करने के लिए, वापस जाएं को स्पर्श करके रखें."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"इस स्क्रीन को अनपिन करने के लिए, अवलोकन को स्पर्श करके रखें."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"ऐप पिन किया गया है: इस डिवाइस पर अनपिन करने की अनुमति नहीं है."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"स्‍क्रीन पिन की गई"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"स्‍क्रीन अनपिन की गई"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 272c56cf06eb..b5f27048c71d 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -266,8 +266,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Dohvaćati sadržaj prozora"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Istražite sadržaj prozora koji upotrebljavate."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Uključiti značajku Istraži dodirom"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Dodirnute stavke izgovorit će se naglas, a zaslon se može istraživati pokretima."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Uključiti poboljšanu pristupačnost weba"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Kako bi sadržaj aplikacije bio pristupačniji, mogu se instalirati skripte."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Pratiti tekst koji pišete"</string>
@@ -666,8 +665,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Unesite PUK i novi PIN kôd"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kôd"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novi PIN kôd"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Dodirnite za tipkanje zaporke"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Unesite zaporku za otključavanje"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Unesite PIN za otključavanje"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Netočan PIN kôd."</string>
@@ -939,8 +937,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Neke sistemske funkcije možda neće raditi"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Nema dovoljno pohrane za sustav. Oslobodite 250 MB prostora i pokrenite uređaj ponovo."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> pokrenuta je"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Dodirnite za više informacija ili da biste zaustavili aplikaciju."</string>
<string name="ok" msgid="5970060430562524910">"U redu"</string>
<string name="cancel" msgid="6442560571259935130">"Odustani"</string>
<string name="yes" msgid="5362982303337969312">"U redu"</string>
@@ -1014,8 +1011,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Pokretanje aplikacija."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Završetak inicijalizacije."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Izvodi se <xliff:g id="APP">%1$s</xliff:g>"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Dodirnite da biste prešli na aplikaciju"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Izmijeniti aplikacije?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Već se izvodi neka druga aplikacija koja se mora zaustaviti prije pokretanja nove."</string>
<string name="old_app_action" msgid="493129172238566282">"Natrag na <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1023,8 +1019,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Pokreni <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Zaustavi staru aplikaciju bez spremanja."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Proces <xliff:g id="PROC">%1$s</xliff:g> premašio je ograničenje memorije"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Generirana je snimka memorije procesa. Dodirnite za dijeljenje."</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Žalite li dijeliti snimku memorije procesa?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proces <xliff:g id="PROC">%1$s</xliff:g> premašio je ograničenje memorije od <xliff:g id="SIZE">%2$s</xliff:g>. Dostupna vam je snimka memorije procesa koju možete podijeliti s razvojnim programerom. Budite oprezni: ta snimka memorije može sadržavati vaše osobne podatke kojoj aplikacija ima pristup."</string>
<string name="sendText" msgid="5209874571959469142">"Izaberite radnju za tekst"</string>
@@ -1062,8 +1057,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi nema pristup internetu"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Dodirnite za opcije"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Ne može se spojiti na Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ima lošu internetsku vezu."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Dopustiti povezivanje?"</string>
@@ -1073,8 +1067,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Pokreni izravan rad s Wi-Fi mrežom. To će isključiti rad s Wi-Fi klijentom/žarišnom točkom."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Pokretanje izravne Wi-Fi veze nije moguće."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct uključen"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Dodirnite za postavke"</string>
<string name="accept" msgid="1645267259272829559">"Prihvaćam"</string>
<string name="decline" msgid="2112225451706137894">"Odbaci"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Pozivnica je poslana"</string>
@@ -1126,11 +1119,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB za prijenos fotografija"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB za MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Spojen na USB pribor"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Dodirnite za više opcija."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Priključen je alat za uklanjanje pogrešaka USB-om"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Dodirnite da biste onemogućili otklanjanje pogrešaka putem USB-a."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Izrada izvješća o programskoj pogrešci…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Želite li podijeliti izvješće o programskoj pogrešci?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Dijeljenje izvješća o programskoj pogrešci…"</string>
@@ -1150,11 +1141,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Otkriven je novi uređaj <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Za prijenos fotografija i medija"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Oštećeni medij za pohranu <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> ima pogrešku. Dodirnite da biste je ispravili."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Nepodržani medij za pohranu <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Uređaj ne podržava ovaj medij (<xliff:g id="NAME">%s</xliff:g>). Dodirnite da biste ga postavili u podržanom formatu."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Uređaj <xliff:g id="NAME">%s</xliff:g> iznenada je uklonjen"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Isključite uređaj <xliff:g id="NAME">%s</xliff:g> prije uklanjanja da ne biste izgubili podatke"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Uklonjen je uređaj <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1226,18 +1215,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Povezivanje s uvijek uključenom VPN mrežom…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Povezan s uvijek uključenom VPN mrežom"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Pogreška uvijek uključene VPN mreže"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Dodirnite da biste konfigurirali"</string>
<string name="upload_file" msgid="2897957172366730416">"Odaberite datoteku"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nema odabranih datoteka"</string>
<string name="reset" msgid="2448168080964209908">"Ponovo postavi"</string>
<string name="submit" msgid="1602335572089911941">"Pošalji"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Omogućen je način rada za automobil"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Dodirnite da biste napustili način rada u automobilu."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Ograničenje ili aktivan hotspot"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Dodirnite da biste postavili."</string>
<string name="back_button_label" msgid="2300470004503343439">"Natrag"</string>
<string name="next_button_label" msgid="1080555104677992408">"Dalje"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Preskoči"</string>
@@ -1271,8 +1257,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Dodaj račun"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Povećavanje"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Smanjivanje"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> dodirnite i zadržite."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Kliznite prema gore za povećavanje i prema dolje za smanjivanje."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Povećanje minuta"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Smanjenje minuta"</string>
@@ -1316,8 +1301,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB pohrana"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Uredi"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Upozorenje o upotrebi podataka"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Dodirnite za upotrebu i postavke"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Dost. ogr. 2G–3G prijenosa pod."</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Dost. ogr. 4G prijenosa podataka"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Dost. ogr. mob. prijenosa podat."</string>
@@ -1329,8 +1313,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Prekorač. Wi-Fi ogranič. pod."</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Veličina <xliff:g id="SIZE">%s</xliff:g> prelazi navedeno ograničenje."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Pozadinski podaci ograničeni"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Dodirnite i uklonite ograničenje"</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Sigurnosni certifikat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Ovaj je certifikat valjan."</string>
<string name="issued_to" msgid="454239480274921032">"Izdano za:"</string>
@@ -1547,10 +1530,8 @@
<string name="select_year" msgid="7952052866994196170">"Odaberite godinu"</string>
<string name="deleted_key" msgid="7659477886625566590">"Izbrisan je broj <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> za posao"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Da biste otkvačili ovaj zaslon, dodirnite i zadržite Natrag."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Da biste otkvačili ovaj zaslon, dodirnite i zadržite Pregled."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikacija je prikvačena: otkvačivanje nije dopušteno na tom uređaju."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Zaslon je pričvršćen"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Zaslon je otkvačen"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index b13b63e35fd1..3b98e4c18950 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Ablaktartalom lekérdezése"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"A használt ablak tartalmának vizsgálata."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Felfedezés érintéssel bekapcsolása"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"A megérintett elemeket a rendszer hangosan kimondja, a képernyő pedig felfedezhető kézmozdulatok használatával."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Internetes kisegítő lehetőségek bővítése"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Szkripteket lehet telepíteni, hogy könnyebb legyen hozzáférni az alkalmazások tartalmához."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"A gépelt szöveg figyelése"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Írja be a PUK kódot, majd az új PIN kódot"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kód"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Új PIN-kód"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Koppintson a jelszómegadáshoz"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"A feloldáshoz írja be a jelszót"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Feloldáshoz írja be a PIN kódot"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Helytelen PIN-kód."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Előfordulhat, hogy néhány rendszerfunkció nem működik."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Nincs elegendő tárhely a rendszerhez. Győződjön meg arról, hogy rendelkezik 250 MB szabad területtel, majd kezdje elölről."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> jelenleg fut"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"További információért, illetve az alkalmazás leállításához koppintson rá."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Mégse"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Kezdő alkalmazások."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Rendszerindítás befejezése."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> fut"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Koppintson az alkalmazásra váltáshoz"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Átvált az alkalmazások között?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Már fut egy másik alkalmazás, amelyet le kell állítania, mielőtt egy újat indíthatna el."</string>
<string name="old_app_action" msgid="493129172238566282">"Visszatérés a(z) <xliff:g id="OLD_APP">%1$s</xliff:g> alkalmazáshoz"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> indítása"</string>
<string name="new_app_description" msgid="1932143598371537340">"A régi alkalmazás leállítása mentés nélkül."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"A(z) <xliff:g id="PROC">%1$s</xliff:g> túllépte a memóriakorlátot"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Elkészült a memória-pillanatfelvétel (heap dump); a megosztáshoz koppintson rá"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Megosztja a memória-pillanatfelvételt?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"A(z) <xliff:g id="PROC">%1$s</xliff:g> folyamat túllépte a(z) <xliff:g id="SIZE">%2$s</xliff:g> méretű memóriakorlátot. Elérhető a memória-pillanatfelvétel (heap dump), hogy megossza a fejlesztővel. Figyelem: ez a felvétel tartalmazhatja az Ön olyan személyes adatait, amelyekhez az alkalmazásnak hozzáférése van."</string>
<string name="sendText" msgid="5209874571959469142">"Válasszon ki egy műveletet a szöveghez"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"A Wi-Fi-hálózaton nincs internetkapcsolat"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Koppintson a beállítások megjelenítéséhez"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nem sikerült csatlakozni a Wi-Fi hálózathoz"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" rossz internetkapcsolattal rendelkezik."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Engedélyezi a csatlakozást?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Direct elindítása. A Wi-Fi kliens/hotspot ettől leáll."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Nem sikerült elindítani a Wi-Fi Direct kapcsolatot."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"A Wi-Fi Direct be van kapcsolva"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Koppintson a beállításokért"</string>
<string name="accept" msgid="1645267259272829559">"Elfogadás"</string>
<string name="decline" msgid="2112225451706137894">"Elutasítás"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Meghívó elküldve"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB fotóátvitelhez"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB MIDI-hez"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Csatlakoztatva egy USB-kiegészítőhöz"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Koppintson a további beállítások megjelenítéséhez."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB hibakereső csatlakoztatva"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Koppintson az USB fejlesztő mód kikapcsolásához."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Hibajelentés készítése…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Megosztja a hibajelentést?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Hibajelentés megosztása…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Új <xliff:g id="NAME">%s</xliff:g> észlelve"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Fotók és más tartalmak átviteléhez"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Sérült <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"A(z) <xliff:g id="NAME">%s</xliff:g> sérült. Koppintson rá a javításhoz."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Nem támogatott <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Ez az eszköz nem támogatja ezt a(z) <xliff:g id="NAME">%s</xliff:g> eszközt. Koppintson rá a támogatott formátumban való beállításhoz."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"A(z) <xliff:g id="NAME">%s</xliff:g> váratlanul eltávolítva"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Az adatvesztés elkerülése érdekében kezdje a(z) <xliff:g id="NAME">%s</xliff:g> leválasztásával, mielőtt eltávolítaná azt"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> eltávolítva"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Csatlakozás a mindig bekapcsolt VPN-hez..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Csatlakozva a mindig bekapcsolt VPN-hez"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Hiba a mindig bekapcsolt VPN-nel"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Koppintson a konfiguráláshoz"</string>
<string name="upload_file" msgid="2897957172366730416">"Fájl kiválasztása"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nincs fájl kiválasztva"</string>
<string name="reset" msgid="2448168080964209908">"Alaphelyzet"</string>
<string name="submit" msgid="1602335572089911941">"Elküldés"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Gépkocsi üzemmód bekapcsolva"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Koppintson az autós üzemmódból való kilépéshez."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Megosztás vagy aktív hotspot"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Koppintson a beállításhoz."</string>
<string name="back_button_label" msgid="2300470004503343439">"Vissza"</string>
<string name="next_button_label" msgid="1080555104677992408">"Tovább"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Kihagyás"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Fiók hozzáadása"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Növelés"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Csökkentés"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g>. Érintse meg és tartsa lenyomva."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"A növeléshez csúsztassa felfelé, a csökkentéshez pedig lefelé."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Perc értékének növelése"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Perc értékének csökkentése"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-tár"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Szerkesztés"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Adathasználati figyelmeztetés"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Koppintson az adatokért."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-/3G-adatkorlát elérve"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G-adatkorlát elérve"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mobiladat-korlát elérve"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Elérte a Wi-Fi adatkorlátot"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g>-tal túllépte a korlátot."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Háttéradatok korlátozva"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Koppintson az eltávolításhoz."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Biztonsági tanúsítvány"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"A tanúsítvány érvényes."</string>
<string name="issued_to" msgid="454239480274921032">"Kiállítva a következőnek:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Válassza ki az évet"</string>
<string name="deleted_key" msgid="7659477886625566590">"A(z) <xliff:g id="KEY">%1$s</xliff:g> érték törölve"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Munkahelyi <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"A képernyő rögzítésének feloldásához tartsa lenyomva a Vissza lehetőséget."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"A képernyő rögzítésének feloldásához tartsa lenyomva az Áttekintés lehetőséget."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Az alkalmazás rögzítve van: a rögzítés feloldása nem engedélyezett ezen az eszközön."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Képernyő rögzítve"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Képernyő rögzítése feloldva"</string>
diff --git a/core/res/res/values-hy-rAM/strings.xml b/core/res/res/values-hy-rAM/strings.xml
index 957c0e57c0c2..260992a4a801 100644
--- a/core/res/res/values-hy-rAM/strings.xml
+++ b/core/res/res/values-hy-rAM/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Առբերել պատուհանի բովանդակությունը"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Ստուգեք պատուհանի բովանդակությունը, որի հետ փոխգործակցում եք:"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Միացնել Հպման միջոցով հետազոտումը"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Տարրերը, որոնց հպեք, բարձրաձայն կարտասանվեն, և էկրանը հնարավոր կլինի ուսումնասիրել ժեստերով:"</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Միացնել ընդլայնված վեբ մատչելիությունը"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Հնարավոր է սկրիպտներ տեղադրվեն` ծրագրի բովանդակությունն ավելի մատչելի դարձնելու համար:"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Զննել ձեր մուտքագրած տեքստը"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Մուտքագրեք PUK-ը և նոր PIN կոդը"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK կոդ"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Նոր PIN ծածկագիր"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Հպեք և մուտքագրեք գաղտնաբառը"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Մուտքագրեք գաղտնաբառը ապակողպման համար"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Մուտքագրեք PIN-ը ապակողպման համար"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Սխալ PIN ծածկագիր:"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Համակարգի որոշ գործառույթներ հնարավոր է չաշխատեն"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Համակարգի համար բավարար հիշողություն չկա: Համոզվեք, որ ունեք 250ՄԲ ազատ տարածություն և վերագործարկեք:"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ն աշխատեցվում է"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Հպեք` լրացուցիչ տեղեկություններ ստանալու կամ հավելվածն անջատելու համար:"</string>
<string name="ok" msgid="5970060430562524910">"Լավ"</string>
<string name="cancel" msgid="6442560571259935130">"Չեղարկել"</string>
<string name="yes" msgid="5362982303337969312">"Լավ"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Հավելվածները մեկնարկում են:"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Բեռնումն ավարտվում է:"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g>-ն աշխատում է"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Հպեք՝ հավելվածին անցնելու համար"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Փոխարկե՞լ հավելվածները:"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Մեկ այլ ծրագիր արդեն աշխատում է, որը պետք է դադարեցնել, նախքան դուք կկարողանաք սկսել նորը:"</string>
<string name="old_app_action" msgid="493129172238566282">"Վերադառնալ <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Սկիզբ <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Դադարեցնել նախկին ծրագիրն առանց պահպանման:"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> գործընթացը գերազանցել է հիշողության սահմանաչափը"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Օգտագործվող օբյեկտների վերաբերյալ տվյալները հավաքվել են: Հպեք՝ դրանք տրամադրելու համար"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Տրամադրե՞լ օգտագործվող օբյեկտների վերաբերյալ տվյալները:"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> գործընթացը գերազանցել է իր կողմից հիշողության օգտագործման սահմանաչափը՝ <xliff:g id="SIZE">%2$s</xliff:g>: Հավաքվել են օգտագործվող օբյեկտների վերաբերյալ տվյալներ, որոնք կարող եք ուղարկել մշակողին: Սակայն զգույշ եղեք՝ նշված տվյալները կարող են ներառել հավելվածի կողմից օգտագործվող ձեր անձնական տվյալները:"</string>
<string name="sendText" msgid="5209874571959469142">"Ընտրեք գործողություն տեքստի համար"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi ցանցը համացանցի միացում չունի"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Հպեք՝ ընտրանքները տեսնելու համար"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Չհաջողվեց միանալ Wi-Fi-ին"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ունի թույլ ինտերնետ կապ:"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Թույլատրե՞լ կապը:"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Մեկնարկել Wi-Fi ուղին: Այն կանջատի Wi-Fi հաճախորդ/թեժ կետ գործողությունը:"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Չհաջողվեց մեկնարկել Wi-Fi ուղին:"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi ուղիղն առցանց է"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Հպեք՝ կարգավորելու համար"</string>
<string name="accept" msgid="1645267259272829559">"Ընդունել"</string>
<string name="decline" msgid="2112225451706137894">"Մերժել"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Հրավերն ուղարկված է"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Լուսանկարների փոխանցման USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI-ի USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Կապակցված է USB լրասարքի"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Հպեք՝ լրացուցիչ ընտրանքների համար:"</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB վրիպազերծումը միացված է"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Հպեք՝ USB վրիպազերծումն անջատելու համար:"</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Վրիպակի զեկույցի ստեղծում…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Տրամադրե՞լ վրիպակի զեկույցը:"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Վրիպակի զեկույցի տրամադրում…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Հայտնաբերվել է նոր <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Լուսանկարներ և մեդիա ֆայլեր տեղափոխելու համար"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g>-ը վնասված է"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> անունը վնասված է: Հպեք՝ շտկելու համար:"</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Չապահովվող <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Այս սարքը չի աջակցում այս <xliff:g id="NAME">%s</xliff:g>-ը: Հպեք՝ աջակցվող ձևաչափով կարգավորելու համար:"</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g>-ը հեռացվել է առանց անջատելու"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Տվյալները չկորցնելու համար անջատեք <xliff:g id="NAME">%s</xliff:g>-ը՝ մինչ հեռացնելը"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g>-ը հեռացված է"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Միշտ-միացված VPN-ը կապվում է..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Միշտ-առցանց VPN-ը կապակցված է"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"VPN սխալը միշտ միացված"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Հպեք՝ կազմաձևելու համար"</string>
<string name="upload_file" msgid="2897957172366730416">"Ընտրել ֆայլը"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ոչ մի ֆայլ չի ընտրված"</string>
<string name="reset" msgid="2448168080964209908">"Վերակայել"</string>
<string name="submit" msgid="1602335572089911941">"Ուղարկել"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Մեքենայի ռեժիմը միացված է"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Հպեք` մեքենայի ռեժիմից դուրս գալու համար:"</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Մուտքը կամ թեժ կետը ակտիվ է"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Հպեք՝ կարգավորելու համար:"</string>
<string name="back_button_label" msgid="2300470004503343439">"Հետ"</string>
<string name="next_button_label" msgid="1080555104677992408">"Հաջորդը"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Բաց թողնել"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Ավելացնել հաշիվ"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Ավելացնել"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Նվազեցնել"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> հպեք և պահեք:"</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Սահեցրեք վերև` ավելացնելու համար, և ներքև` նվազեցնելու համար:"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Աճեցնել րոպեն"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Նվազեցնել րոպեն"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB կրիչ"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Խմբագրել"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Տվյալների օգտագործման նախազգուշացում"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Հպեք և տեսեք օգտագործումը և կարգավորումները:"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G տվյալների սահմանաչափը սպառվել է"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G տվյալների սահմանաչափը սպառվել է"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Բջջային տվյալների սահմանաչափը սպառվել է"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi տվյալների սահմանը գերազանցվել է"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g>-ը գերազանցում է նշված սահմանաչափը:"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Հետնաշերտային տվյալները սահմանափակ են"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Հպեք և հանեք սահմանափակումը:"</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Անվտանգության վկայական"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Այս վկայականը վավեր է:"</string>
<string name="issued_to" msgid="454239480274921032">"Թողարկվել է`"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Ընտրեք տարին"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> թիվը ջնջված է"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Աշխատանքային <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Այս էկրանն ապամրացնելու համար հպեք և պահեք Հետ կոճակը:"</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Այս էկրանն ապամրացնելու համար հպեք և պահեք Համատեսքի կոճակը:"</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Հավելվածն ամրացված է: Ապամրացումն այս սարքում չի թույլատրվում:"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Էկրանն ամրացված է"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Էկրանն ապամրացված է"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 03f29197d67a..734355822d96 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Mengambil konten jendela"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Memeriksa konten jendela tempat Anda berinteraksi."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Mengaktifkan Jelajahi dengan Sentuhan"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Item yang diketuk akan diucapkan dengan jelas dan layar dapat dijelajahi menggunakan isyarat."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Mengaktifkan aksesibilitas web yang disempurnakan"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skrip mungkin dipasang agar konten aplikasi lebih dapat diakses."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Mengamati teks yang Anda ketik"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Ketik kode PUK dan PIN baru"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kode PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Kode Pin baru"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Ketuk untuk mengetik sandi"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Ketik sandi untuk membuka kunci"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Ketik PIN untuk membuka kunci"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Kode PIN salah."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Beberapa fungsi sistem mungkin tidak dapat bekerja"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Penyimpanan tidak cukup untuk sistem. Pastikan Anda memiliki 250 MB ruang kosong, lalu mulai ulang."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> sedang berjalan"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Ketuk untuk informasi selengkapnya atau menghentikan aplikasi."</string>
<string name="ok" msgid="5970060430562524910">"Oke"</string>
<string name="cancel" msgid="6442560571259935130">"Batal"</string>
<string name="yes" msgid="5362982303337969312">"Oke"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Memulai aplikasi."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Menyelesaikan boot."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> berjalan"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Ketuk untuk beralih ke aplikasi"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Beralih aplikasi?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Apl lain sudah berjalan dan harus dihentikan agar Anda dapat memulai yang baru."</string>
<string name="old_app_action" msgid="493129172238566282">"Kembali ke<xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Mulai <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Hentikan apl lama tanpa menyimpan."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> melampaui batas memori"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Informasi memori elah dikumpulkan; ketuk untuk membagikan"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Share tumpukan membuang?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proses <xliff:g id="PROC">%1$s</xliff:g> telah melampaui batas memori proses <xliff:g id="SIZE">%2$s</xliff:g>. Tumpukan sampah tersedia untuk Anda bagikan kepada pengembangnya. Hati-hati, tumpukan sampah ini hanya dapat memuat informasi pribadi yang dapat diakses oleh aplikasi."</string>
<string name="sendText" msgid="5209874571959469142">"Pilih tindakan untuk teks"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi tidak memiliki akses internet"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Ketuk untuk melihat opsi"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Tidak dapat tersambung ke Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" memiliki sambungan internet yang buruk."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Izinkan hubungan?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Memulai Wi-Fi Direct. Opsi ini akan mematikan hotspot/klien Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Tidak dapat memulai Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct aktif"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Ketuk untuk setelan"</string>
<string name="accept" msgid="1645267259272829559">"Terima"</string>
<string name="decline" msgid="2112225451706137894">"Tolak"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Undangan terkirim"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB untuk transfer foto"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB untuk MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Tersambung ke aksesori USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Ketuk untuk opsi lainnya."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Debugging USB terhubung"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Ketuk untuk menonaktifkan debug USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Mengambil laporan bug…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Bagikan laporan bug?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Membagikan laporan bug..."</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"<xliff:g id="NAME">%s</xliff:g> baru terdeteksi"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Untuk mentransfer foto dan media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> rusak"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> sudah rusak. Ketuk untuk memperbaiki."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> tidak didukung"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Perangkat tidak mendukung <xliff:g id="NAME">%s</xliff:g> ini. Ketuk untuk menyiapkan dalam format yang didukung."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> tiba-tiba dicabut"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Lingsirkan <xliff:g id="NAME">%s</xliff:g> sebelum mencabut agar data tidak hilang"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> dicabut"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Menyambungkan VPN selalu aktif..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN selalu aktif tersambung"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Kesalahan VPN selalu aktif"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Ketuk untuk mengonfigurasi"</string>
<string name="upload_file" msgid="2897957172366730416">"Pilih file"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Tidak ada file yang dipilih"</string>
<string name="reset" msgid="2448168080964209908">"Setel ulang"</string>
<string name="submit" msgid="1602335572089911941">"Kirim"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mode mobil diaktifkan"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Ketuk untuk keluar dari mode mobil."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering (Penambatan) atau hotspot aktif"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Ketuk untuk menyiapkan."</string>
<string name="back_button_label" msgid="2300470004503343439">"Kembali"</string>
<string name="next_button_label" msgid="1080555104677992408">"Selanjutnya"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Lewati"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Tambahkan akun"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Tambah"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Kurangi"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> sentuh &amp; tahan."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Geser ke atas untuk menambah dan ke bawah untuk mengurangi."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Tambah menit"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Kurangi menit"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Penyimpanan USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Edit"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Peringatan penggunaan data"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Ketuk untuk lihat penggunaan &amp; setelan."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Batas data 2G-3G terlampaui"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Batas data 4G terlampaui"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Batas data seluler terlampaui"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Batas data Wi-Fi terlampaui"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> melebihi batas yang ditentukan."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Data latar belakang dibatasi"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Ketuk untuk menghapus batasan."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Sertifikat keamanan"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Sertifikat ini valid."</string>
<string name="issued_to" msgid="454239480274921032">"Diterbitkan ke:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Pilih tahun"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> dihapus"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Kantor <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Untuk melepas pin layar ini, sentuh &amp; tahan tombol Kembali."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Untuk melepas pin layar ini, sentuh &amp; tahan tombol Ringkasan."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Pin dipasang ke aplikasi. Melepas pin tidak diizinkan di perangkat ini."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Layar disematkan"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Layar dicopot sematannya"</string>
diff --git a/core/res/res/values-is-rIS/strings.xml b/core/res/res/values-is-rIS/strings.xml
index fd80c84def93..91de51ddca15 100644
--- a/core/res/res/values-is-rIS/strings.xml
+++ b/core/res/res/values-is-rIS/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Sækja innihald glugga"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Kanna innihald glugga sem þú ert að nota."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Kveikja á snertikönnun"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Snert atriði verða lesin upphátt og hægt er að kanna skjáinn með bendingum."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Kveikja á auknu vefaðgengi"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Hægt er að setja upp skriftur til að bæta aðgengi að efni forrits."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Fylgjast með texta sem þú slærð inn"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Sláðu inn PUK-númerið og nýtt PIN-númer"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-númer"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nýtt PIN-númer"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Ýttu til að slá inn aðgangsorð"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Sláðu inn aðgangsorðið til að opna"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Sláðu inn PIN-númer til að opna"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Rangt PIN-númer."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Sumir kerfiseiginleikar kunna að vera óvirkir"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Ekki nægt geymslurými fyrir kerfið. Gakktu úr skugga um að 250 MB séu laus og endurræstu."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> er opið"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Ýttu til að fá frekari upplýsingar eða loka forritinu."</string>
<string name="ok" msgid="5970060430562524910">"Í lagi"</string>
<string name="cancel" msgid="6442560571259935130">"Hætta við"</string>
<string name="yes" msgid="5362982303337969312">"Í lagi"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Ræsir forrit."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Lýkur ræsingu."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> er í gangi"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Ýttu til að skipta yfir í forrit"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Skipta um forrit?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Annað forrit er þegar í gangi og það þarf að stöðva áður en hægt er að ræsa nýtt."</string>
<string name="old_app_action" msgid="493129172238566282">"Til baka í <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Ræsa <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Stöðva gamla forritið án þess að vista."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> er yfir minnishámarki"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Minnisgögnum hefur verið safnað, ýttu til að deila"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Deila minnisgögnum?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Ferlið <xliff:g id="PROC">%1$s</xliff:g> er komið yfir <xliff:g id="SIZE">%2$s</xliff:g> minnishámark sitt. Þú getur deilt minnisgögnum (heap dump) með þróunaraðilanum. Athugaðu að minnisgögnin kunna að innihalda allar þær persónuupplýsingar sem forritið hefur aðgang að um þig."</string>
<string name="sendText" msgid="5209874571959469142">"Veldu aðgerð fyrir texta"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi netið er ekki með tengingu við internetið"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Ýttu til að sjá valkosti"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Ekki var hægt að tengjast Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" er með lélegt netsamband."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Leyfa tengingu?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Ræsa Wi-Fi Direct. Þetta mun slökkva á Wi-Fi biðlara/aðgangsstað."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Ekki var hægt að ræsa Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Kveikt er á Wi-Fi Direct"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Ýttu til að fá stillingar"</string>
<string name="accept" msgid="1645267259272829559">"Samþykkja"</string>
<string name="decline" msgid="2112225451706137894">"Hafna"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Boðið var sent"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB fyrir myndaflutning"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB fyrir MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Tengt við USB-aukabúnað"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Ýttu til að sjá fleiri valkosti."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-villuleit tengd"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Ýttu til að slökkva á USB-villuleit."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Tekur við villutilkynningu…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Deila villutilkynningu?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Deilir villutilkynningu..."</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Nýtt <xliff:g id="NAME">%s</xliff:g> fannst"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Til að flytja myndir og aðrar skrár"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Skemmt <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> er skemmt. Ýttu til að laga."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Óstutt <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Þetta tæki styður ekki <xliff:g id="NAME">%s</xliff:g>. Ýttu til að setja upp með studdu sniði."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> fjarlægt án fyrirvara"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Aftengdu <xliff:g id="NAME">%s</xliff:g> áður en þú fjarlægir það til að koma í veg fyrir gagnatap"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> fjarlægt"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Sívirkt VPN tengist…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Sívirkt VPN tengt"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Villa í sívirku VPN"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Ýttu til að stilla"</string>
<string name="upload_file" msgid="2897957172366730416">"Velja skrá"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Engin skrá valin"</string>
<string name="reset" msgid="2448168080964209908">"Endurstilla"</string>
<string name="submit" msgid="1602335572089911941">"Senda"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Bílastilling virk"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Ýttu til að fara úr bílastillingu."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Kveikt á tjóðrun eða aðgangsstað"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Ýttu til að setja upp."</string>
<string name="back_button_label" msgid="2300470004503343439">"Til baka"</string>
<string name="next_button_label" msgid="1080555104677992408">"Áfram"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Sleppa"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Bæta reikningi við"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Upp"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Niður"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> snertu og haltu."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Strjúktu upp til að hækka og niður til að lækka."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Upp um mínútu"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Niður um mínútu"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-geymsla"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Breyta"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Viðvörun vegna gagnanotkunar"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Ýttu fyrir uppl. og stillingar"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Gagnahámarki 2G og 3G náð"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Gagnahámarki 4G náð"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Farsímagagnahámarki náð"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Gagnahámarki Wi-Fi náð"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> yfir tilgreindum mörkum."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Bakgrunnsgögn takmörkuð"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Ýttu til að eyða takmörkun."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Öryggisvottorð"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Þetta vottorð er gilt."</string>
<string name="issued_to" msgid="454239480274921032">"Gefið út fyrir:"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"Veldu ár"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> eytt"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> í vinnu"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Til að taka lásinn af þessari skjámynd skaltu halda inni bakkhnappinum."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Til að taka lásinn af þessari skjámynd skaltu halda Yfirlit inni."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Forritið er fest: Ekki er hægt að losa forrit í þessu tæki."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Skjár festur"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Skjár opnaður"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 75734ba37f43..69632747e685 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperare contenuti della finestra"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Esaminare i contenuti di una finestra con cui interagisci."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Attivare Esplora al tocco"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Gli elementi toccati verranno pronunciati ad alta voce e sarà possibile esplorare lo schermo utilizzando i gesti."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Attivare accessibilità web migliorata"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Potrebbero essere installati script per rendere più accessibili i contenuti delle app."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Osservare il testo digitato"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Inserisci il PUK e il nuovo codice PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Codice PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nuovo codice PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Tocca per inserire la password"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Inserisci password per sbloccare"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Inserisci PIN per sbloccare"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Codice PIN errato."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Alcune funzioni di sistema potrebbero non funzionare"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Memoria insufficiente per il sistema. Assicurati di avere 250 MB di spazio libero e riavvia."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> è in esecuzione"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Tocca per ulteriori informazioni o per interrompere l\'app."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Annulla"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Avvio applicazioni."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Conclusione dell\'avvio."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> in esecuzione"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Tocca per passare all\'app"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Cambiare applicazione?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Un\'altra applicazione già in esecuzione deve essere chiusa prima di poterne avviare un\'altra."</string>
<string name="old_app_action" msgid="493129172238566282">"Torna a <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Avvia <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Interrompi la vecchia applicazione senza salvare."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ha superato il limite di memoria"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Dump dell\'heap raccolto; tocca per condividere"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Condividere il dump dell\'heap?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Il processo <xliff:g id="PROC">%1$s</xliff:g> ha superato il suo limite di memoria pari a <xliff:g id="SIZE">%2$s</xliff:g>. È disponibile un dump dell\'heap che puoi condividere con lo sviluppatore. Presta attenzione: questo dump dell\'heap può contenere tue informazioni personali a cui l\'applicazione ha accesso."</string>
<string name="sendText" msgid="5209874571959469142">"Scegli un\'azione per il testo"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Connessione Wi-Fi priva di accesso Internet"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Tocca per le opzioni"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Impossibile connettersi alla rete Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ha una connessione Internet debole."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Consentire la connessione?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Avvia Wi-Fi Direct. Verrà disattivato il client/hotspot Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Avvio di Wi-Fi Direct non riuscito."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct è attivo"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Tocca per le impostazioni"</string>
<string name="accept" msgid="1645267259272829559">"Accetto"</string>
<string name="decline" msgid="2112225451706137894">"Rifiuto"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invito inviato"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB per il trasferimento di foto"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB per la modalità MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Collegato a un accessorio USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Tocca per altre opzioni."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Debug USB collegato"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Tocca per disattivare il debug USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Recupero della segnalazione di bug…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Condividere la segnalazione di bug?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Condivisione della segnalazione di bug…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Nuova <xliff:g id="NAME">%s</xliff:g> rilevata"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Per trasferire foto e altri file"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> danneggiata"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"L\'elemento <xliff:g id="NAME">%s</xliff:g> è danneggiato. Tocca per risolvere."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> non supportata"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Il dispositivo non supporta il seguente elemento: <xliff:g id="NAME">%s</xliff:g>. Tocca per configurare un formato supportato."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Rimozione imprevista della <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Per evitare di perdere dati, smonta la <xliff:g id="NAME">%s</xliff:g> prima di rimuoverla"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> rimossa"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Connessione a VPN sempre attiva…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN sempre attiva connessa"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Errore VPN sempre attiva"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Tocca per configurare"</string>
<string name="upload_file" msgid="2897957172366730416">"Scegli file"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nessun file è stato scelto"</string>
<string name="reset" msgid="2448168080964209908">"Reimposta"</string>
<string name="submit" msgid="1602335572089911941">"Invia"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Modalità automobile attivata"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Tocca per uscire dalla modalità automobile."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering oppure hotspot attivo"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tocca per impostare."</string>
<string name="back_button_label" msgid="2300470004503343439">"Indietro"</string>
<string name="next_button_label" msgid="1080555104677992408">"Avanti"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Ignora"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Aggiungi account"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Aumenta"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Riduci"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"Tieni premuto il numero <xliff:g id="VALUE">%s</xliff:g>."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Scorri verso l\'alto per aumentare il valore e verso il basso per diminuirlo."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aumenta minuti"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Riduci minuti"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Archivio USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Modifica"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Avviso sull\'utilizzo dei dati"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Tocca per uso e impostazioni."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Limite di dati 2G-3G raggiunto"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Limite di dati 4G raggiunto"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Limite dati cellulari raggiunto"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Limite dati Wi-Fi superato"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> oltre il limite specificato."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Dati in background limitati"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Tocca per rimuovere le limitazioni."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Certificato di sicurezza"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Questo certificato è valido."</string>
<string name="issued_to" msgid="454239480274921032">"Rilasciato a:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Seleziona anno"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> eliminato"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> lavoro"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Per sbloccare questa schermata tieni premuta l\'opzione Indietro."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Per sbloccare questa schermata tieni premuta l\'opzione Panoramica."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"L\'app è bloccata. Su questo dispositivo non è consentito lo sblocco."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Schermata bloccata"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Schermata sbloccata"</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 3059a49a4ccb..316626d84b9b 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -269,8 +269,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"אחזור תוכן של חלון"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"בדוק את התוכן של חלון שאיתו אתה מבצע אינטראקציה."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"הפעלה של \'גילוי באמצעות מגע\'"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"פריטים שעליהם תקיש ייאמרו בקול, ותוכל לנווט במסך באמצעות תנועות."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"הפעלה של גישה משופרת לאינטרנט"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ייתכן שסקריפטים יותקנו על מנת להקל את הגישה אל תוכן של אפליקציות."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"הצגת טקסט בזמן הקלדה"</string>
@@ -669,8 +668,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"‏הקלד את קוד ה-PUK וקוד ה-PIN החדש"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"‏קוד PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"‏קוד PIN חדש"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"הקש כדי להקליד את הסיסמה"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"הקלד סיסמה לביטול הנעילה"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"‏הקלד קוד PIN לביטול הנעילה"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"‏קוד PIN שגוי"</string>
@@ -954,8 +952,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"ייתכן שפונקציות מערכת מסוימות לא יפעלו"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"‏אין מספיק שטח אחסון עבור המערכת. ודא שיש לך שטח פנוי בגודל 250MB התחל שוב."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> פועל"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"הקש לקבלת מידע נוסף או כדי לעצור את האפליקציה."</string>
<string name="ok" msgid="5970060430562524910">"אישור"</string>
<string name="cancel" msgid="6442560571259935130">"ביטול"</string>
<string name="yes" msgid="5362982303337969312">"אישור"</string>
@@ -1029,8 +1026,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"מפעיל אפליקציות."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"מסיים אתחול."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> פועל"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"הקש כדי לעבור לאפליקציה"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"להחליף אפליקציות?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"אפליקציה אחרת כבר פועלת ועליך לעצור אותה לפני שתוכל להפעיל אפליקציה חדשה."</string>
<string name="old_app_action" msgid="493129172238566282">"חזור אל <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1038,8 +1034,7 @@
<string name="new_app_action" msgid="5472756926945440706">"הפעל את <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"עצור את האפליקציה הישן ללא שמירה."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> חורג מהגבלת הזיכרון"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"‏Dump של ערימה נאסף. הקש כדי לשתף"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"‏האם לשתף את נתוני ה-Dump של הערימה?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"‏התהליך <xliff:g id="PROC">%1$s</xliff:g> חרג ממגבלת זיכרון התהליך שלו, בגודל <xliff:g id="SIZE">%2$s</xliff:g>. נתונים על Dump של ערימה זמינים לך לשיתוף עם המפתח של התהליך. היזהר: ה-Dump של הערימה יכול להכיל מידע אישי הזמין לאפליקציה."</string>
<string name="sendText" msgid="5209874571959469142">"בחירת פעולה לביצוע עם טקסט"</string>
@@ -1079,8 +1074,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"‏אין ל-Wi-Fi גישה לאינטרנט"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"הקש לקבלת אפשרויות"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"‏אין אפשרות להתחבר ל-Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" אינו מחובר היטב לאינטרנט."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"האם להתיר את החיבור?"</string>
@@ -1090,8 +1084,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"‏הפעל Wi-Fi ישיר. פעולה זו תכבה את הנקודה לשיתוף אינטרנט ב-Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"‏לא ניתן להפעיל Wi-Fi ישיר"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"‏Wi-Fi ישיר מופעל"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"הקש לקבלת הגדרות"</string>
<string name="accept" msgid="1645267259272829559">"קבל"</string>
<string name="decline" msgid="2112225451706137894">"דחה"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ההזמנה נשלחה"</string>
@@ -1143,11 +1136,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"‏USB להעברת תמונות"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"‏USB ל-MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"‏מחובר לאביזר USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"הקש לקבלת אפשרויות נוספות."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"‏ניפוי באגים של USB מחובר"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"‏הקש כדי להשבית ניפוי באגים של USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"עיבוד דוח על באג..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"האם לשתף דוח על באג?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"שיתוף דוח על באג…"</string>
@@ -1167,11 +1158,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"זוהה <xliff:g id="NAME">%s</xliff:g> חדש"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"להעברת תמונות ומדיה"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> פגום"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> פגום. הקש כדי לתקן."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> לא נתמך"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"מכשיר זה אינו תומך ב-<xliff:g id="NAME">%s</xliff:g> זה. הקש כדי להגדיר בפורמט נתמך."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> הוסר באופן בלתי צפוי"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"בטל טעינה של <xliff:g id="NAME">%s</xliff:g> לפני הסרתו כדי למנוע אובדן נתונים"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> הוסר"</string>
@@ -1243,18 +1232,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"‏ה-VPN שמופעל תמיד, מתחבר..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"‏ה-VPN שפועל תמיד, מחובר"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"‏שגיאת VPN שמופעל תמיד"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"הקש כדי להגדיר"</string>
<string name="upload_file" msgid="2897957172366730416">"בחר קובץ"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"לא נבחר קובץ"</string>
<string name="reset" msgid="2448168080964209908">"איפוס"</string>
<string name="submit" msgid="1602335572089911941">"שלח"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"מצב מכונית מופעל"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"הקש כדי לצאת ממצב מכונית."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"שיתוף אינטרנט פעיל"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"הקש כדי להגדיר."</string>
<string name="back_button_label" msgid="2300470004503343439">"הקודם"</string>
<string name="next_button_label" msgid="1080555104677992408">"הבא"</string>
<string name="skip_button_label" msgid="1275362299471631819">"דלג"</string>
@@ -1289,8 +1275,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"הוסף חשבון"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"הוסף"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"הפחת"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> גע והחזק."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"הסט למעלה כדי להוסיף ולמטה כדי להפחית."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"הוסף דקה"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"הפחת דקה"</string>
@@ -1334,8 +1319,7 @@
<string name="storage_usb" msgid="3017954059538517278">"‏אחסון USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"ערוך"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"אזהרת שימוש בנתונים"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"הקש כדי להציג נתוני שימוש והגדרות."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"‏הגעת למגבלת הנתונים של 2G-3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"‏הגעת למגבלת הנתונים של 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"הגעת למגבלת הנתונים הסלולריים"</string>
@@ -1347,8 +1331,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"‏אירעה חריגה ממגבלת הנתונים של Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> מעל למגבלה שצוינה."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"נתוני הרקע מוגבלים"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"הקש כדי להסיר את ההגבלה."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"אישור אבטחה"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"אישור זה תקף."</string>
<string name="issued_to" msgid="454239480274921032">"הוקצה ל:"</string>
@@ -1566,10 +1549,8 @@
<string name="select_year" msgid="7952052866994196170">"בחר שנה"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> נמחק"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"עבודה <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"כדי לבטל את הצמדת המסך הזה, לחץ לחיצה ממושכת על הלחצן \'הקודם\'."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"כדי לבטל את הצמדת המסך הזה, לחץ לחיצה ממושכת על הלחצן \'סקירה\'."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"האפליקציה מוצמדת: ביטול ההצמדה אסור במכשיר הזה."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"המסך מוצמד"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"הצמדת המסך בוטלה"</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 984e24baf11b..d50e467a5e7f 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ウィンドウコンテンツの取得"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ユーザーがアクセスしているウィンドウのコンテンツを検査します。"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"タッチガイドの有効化"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"タップしたアイテムが読み上げられ、ジェスチャーで画面のガイドを利用できます。"</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"ウェブアクセシビリティ拡張の有効化"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"スクリプトをインストールしてアプリコンテンツにアクセスしやすくできます。"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"入力テキストの監視"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUKと新しいPINコードを入力"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUKコード"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"新しいPINコード"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"タップしてパスワードを入力"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"ロックを解除するにはパスワードを入力"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"ロックを解除するにはPINを入力"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PINコードが正しくありません。"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"一部のシステム機能が動作しない可能性があります"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"システムに十分な容量がありません。250MBの空き容量を確保して再起動してください。"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g>を実行しています"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"タップすると詳細が表示されるか、アプリが停止します。"</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"キャンセル"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"アプリを起動しています。"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"ブートを終了しています。"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g>を実行中"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"タップしてアプリを切り替えます"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"アプリを切り替えますか?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"別のアプリが既に実行中です。新しいアプリを起動する前に実行中のアプリを停止してください。"</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g>に戻る"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g>を起動"</string>
<string name="new_app_description" msgid="1932143598371537340">"古いアプリを保存せずに停止します。"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g>はメモリの上限を超えました"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"ヒープダンプが収集されました。タップして共有できます"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"ヒープダンプを共有しますか?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"プロセス<xliff:g id="PROC">%1$s</xliff:g>はプロセスメモリの上限<xliff:g id="SIZE">%2$s</xliff:g>を超えました。ヒープダンプをデベロッパーと共有できます。このヒープダンプには、アプリがアクセスできる個人情報が含まれている可能性があるのでご注意ください。"</string>
<string name="sendText" msgid="5209874571959469142">"アプリケーションを選択"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fiはインターネットに接続していません"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"タップしてその他のオプションを表示"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fiに接続できませんでした"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" はインターネット接続に問題があります。"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"接続を許可しますか?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Directを開始します。これによりWi-Fiクライアント/アクセスポイントがOFFになります。"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Directを開始できませんでした。"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi DirectはONです"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"タップして設定を表示"</string>
<string name="accept" msgid="1645267259272829559">"同意する"</string>
<string name="decline" msgid="2112225451706137894">"同意しない"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"招待状を送信しました"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USBを写真転送に使用"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USBをMIDIに使用"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USBアクセサリを接続しました"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"タップしてその他のオプションを表示します。"</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USBデバッグが接続されました"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"タップして USB デバッグを無効にします。"</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"バグレポートを取得しています…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"バグレポートを共有しますか?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"バグレポートの共有中…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"新しい<xliff:g id="NAME">%s</xliff:g>が検出されました"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"写真などのメディア転送用"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g>は破損しています"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g>は破損しています。タップして修正してください。"</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"対応していない<xliff:g id="NAME">%s</xliff:g>です"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"この端末はこの <xliff:g id="NAME">%s</xliff:g>に対応していません。タップして、対応している形式でセットアップしてください。"</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g>が不適切に取り外されました"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"データの喪失を防ぐため<xliff:g id="NAME">%s</xliff:g>を取り外す前にマウントを解除してください。"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g>が取り外されました"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPNに常時接続しています…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPNに常時接続しました"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"常時接続VPNのエラー"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"タップして設定"</string>
<string name="upload_file" msgid="2897957172366730416">"ファイルを選択"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ファイルが選択されていません"</string>
<string name="reset" msgid="2448168080964209908">"リセット"</string>
<string name="submit" msgid="1602335572089911941">"送信"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"運転モード中"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"タップして運転モードを終了します。"</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"テザリングまたはアクセスポイントが有効です"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"タップしてセットアップします。"</string>
<string name="back_button_label" msgid="2300470004503343439">"戻る"</string>
<string name="next_button_label" msgid="1080555104677992408">"次へ"</string>
<string name="skip_button_label" msgid="1275362299471631819">"スキップ"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"アカウントを追加"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"進めます"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"戻します"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> 回タップして押し続けます。"</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"上にスライドで進み、下にスライドで戻ります。"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"1分進めます"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"1分戻します"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USBストレージ"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"編集"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"データ使用の警告"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"タップして使用状況と設定を表示します。"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G~3Gデータの上限に達しました"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4Gデータの上限に達しました"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"モバイルデータの上限に達しました"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fiデータの上限を超えました"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"指定した上限を<xliff:g id="SIZE">%s</xliff:g>超えました。"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"バックグラウンドデータに上限あり"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"タップして制限を解除します。"</string>
<string name="ssl_certificate" msgid="6510040486049237639">"セキュリティ証明書"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"証明書は有効です。"</string>
<string name="issued_to" msgid="454239480274921032">"発行先:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"年を選択"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g>を削除しました"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"仕事の<xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"この画面の固定を解除するには [戻る] を押し続けます。"</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"この画面の固定を解除するには [概要] を押し続けます。"</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"アプリは固定されています。この端末では固定を解除できません。"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"画面を固定しました"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"画面固定を解除しました"</string>
diff --git a/core/res/res/values-ka-rGE/strings.xml b/core/res/res/values-ka-rGE/strings.xml
index d7cfd0be83e6..8d67d137ee20 100644
--- a/core/res/res/values-ka-rGE/strings.xml
+++ b/core/res/res/values-ka-rGE/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ფანჯრის კონტენტის მოძიება"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"შეამოწმეთ იმ ფანჯრის კონტექტი, რომელშიც მუშაობთ."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"„შეხებით აღმოჩენის“ ჩართვა"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"ერთეულები, რომლებსაც შეეხებით, წაიკითხება ხმამაღლა, ხოლო ეკრანის დათვალიერება ჟესტების მეშვეობით იქნება შესაძლებელი."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"ვებზე გამარტივებული წვდომის დამატებითი შესაძლებლობების ჩართვა"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"შესაძლებელია სკრიპტების ინსტალაცია აპის კონტენტის წვდომადობის უზრუნველსაყოფად."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"თქვენ მიერ აკრეფილ ტექსტზე დაკვირვება"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"დაბეჭდეთ PUK კოდი და ახალი PIN კოდი."</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK კოდი"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"ახალი PIN კოდი"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"შეეხეთ პაროლის ასაკრეფად"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"განსაბლოკად აკრიფეთ პაროლი"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"განსაბლოკად აკრიფეთ PIN კოდი"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"არასწორი PIN კოდი."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"სისტემის ზოგიერთმა ფუნქციამ შესაძლოა არ იმუშავოს"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"სისტემისათვის საკმარისი საცავი არ არის. დარწმუნდით, რომ იქონიოთ სულ მცირე 250 მბაიტი თავისუფალი სივრცე და დაიწყეთ ხელახლა."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> გაშვებულია"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"შეეხეთ მეტი ინფორმაციისთვის ან აპის მუშაობის შესაწყვეტად."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"გაუქმება"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"აპების ჩართვა"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"ჩატვირთვის დასასრული."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> გაშვებულია"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"შეეხეთ აპზე გადასართველად"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"გსურთ, აპების გადართვა?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"სხვა აპი არის უკვე გაშვებული, რომელიც უნდა შეჩერდეს ახლის დაწყებამდე."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g>-თან დაბრუნება"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"დასაწყისი <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"შეაჩერე ძველი აპი ცვლილებების შენახვის გარეშე."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g>-მა გადააჭარბა მეხსიერების ლიმიტს"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"გროვის ამონაწერი მომზადდა; შეეხეთ გასაზიარებლად"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"გავაზიაროთ გროვის ამონაწერი?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"პროცესმა <xliff:g id="PROC">%1$s</xliff:g> გადააჭარბა საპროცესო მეხსიერების <xliff:g id="SIZE">%2$s</xliff:g>-იან ლიმიტს. გროვის ამონაწერი ხელმისაწვდომია მის დეველოპერთან გასაზიარებლად. ფრთხილად: გროვის ამონაწერი შეიძლება შეიცავდეს ნებისმიერ თქვენს პირად ინფორმაციას, რომელზეც ამ აპლიკაციას წვდომა აქვს."</string>
<string name="sendText" msgid="5209874571959469142">"შეარჩიეთ ქმედება ტექსტისთვის."</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi-ს არ აქვს ინტერნეტზე წვდომა"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"შეეხეთ ვარიანტების სანახავად"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi-თან დაკავშირება ვერ მოხერხდა"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" აქვს ცუდი ინტერნეტ კავშირი."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"გსურთ კავშირის დაშვება?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"ჩართეთ Wi-Fi Direct. ეს გამოიწვევს Wi-Fi კლიენტისა/უსადენო ქსელის გამორთვას."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"ვერ მოხერხდა Wi-Fi Direct-ის გაშვება."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct ჩართულია"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"შეეხეთ პარამეტრების სანახავად"</string>
<string name="accept" msgid="1645267259272829559">"მიღება"</string>
<string name="decline" msgid="2112225451706137894">"უარყოფა"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"მოწვევა გაგზავნილია"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB ფოტოების გადაცემისთვის"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB MIDI-სთვის"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"დაკავშირებულია USB აქსესუართან"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"შეეხეთ დამატებითი ვარიანტების სანახავად."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB გამართვა შეერთებულია"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"შეეხეთ USB-გამართვის გასათიშად."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"მიმდინარეობს ხარვეზის შესახებ ანგარიშის შექმნა…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"გსურთ ხარვეზის შესახებ ანგარიშის გაზიარება?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"მიმდინარეობს ხარვეზის შესახებ ანგარიშის გაზიარება…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"აღმოჩენილია ახალი <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ფოტოებისა და მედიის გადასატანად"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"დაზიანებული <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> დაზიანებულია. შეეხეთ გასასწორებლად."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"მხარდაუჭერელი <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"ეს <xliff:g id="NAME">%s</xliff:g> მხარდაუჭერელია არ მოწყობილობაზე. შეეხეთ მხარდაჭერილ ფორმატში დასაყენებლად."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"მოულოდნელად მოხდა <xliff:g id="NAME">%s</xliff:g>-ის ამოღება"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"მონაცემთა დაკარგვის თავიდან ასაცილებლად, ფიზიკურად ამოღებამდე, სისტემურად მოხსენით <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> ამოღებულია"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"მიმდინარეობს მუდმივად ჩართული VPN-ის მიერთება…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"მუდმივად ჩართული VPN-ის მიერთებულია"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"შეცდომა მუდამ VPN-ზე"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"შეეხეთ პარამეტრების კონფიგურაციისთვის"</string>
<string name="upload_file" msgid="2897957172366730416">"ფაილის არჩევა"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ფაილი არჩეული არ არის"</string>
<string name="reset" msgid="2448168080964209908">"საწყისზე დაბრუნება"</string>
<string name="submit" msgid="1602335572089911941">"გაგზავნა"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"მანქანის რეჟიმი ჩართულია"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"შეეხეთ მანქანის რეჟიმიდან გამოსასვლელად."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"ინტერნეტის მიერთება ან უსადენო ქსელი აქტიურია."</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"შეეხეთ დასაყენებლად."</string>
<string name="back_button_label" msgid="2300470004503343439">"უკან"</string>
<string name="next_button_label" msgid="1080555104677992408">"მომდევნო"</string>
<string name="skip_button_label" msgid="1275362299471631819">"გამოტოვება"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"ანგარიშის დამატება &amp;raquo;"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"გაზრდა"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"შემცირება"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> — ხანგრძლივად შეეხეთ."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"აასრიალეთ ზემოთ გასაზრდელად და ჩაასრიალეთ ქვემოთ შესამცირებლად."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"ერთი წუთით წინ"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"წუთების შემცირება"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB მეხსიერება"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"რედაქტირება"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ინტერნეტის გამოყენების გაფრთხილება"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"შეეხეთ მოხმარებისა და პარამეტრების სანახავად."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G მონაცემთა ლიმიტი ამოიწურა"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G მონაცემთა ლიმიტი ამოიწურა"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"ფიჭურ მონაცემთა ლიმიტი ამოიწურა"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi‑Fi მონაცემთა ლიმიტი გადაჭარბებულია"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"ლიმიტი გადაჭარბებულია <xliff:g id="SIZE">%s</xliff:g>-ით."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"მონაცემთა ფონური გადაცემა შეზღუდულია"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"შეეხეთ შეზღუდვის მოსახსნელად."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"უსაფრთხოების სერტიფიკატი"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ეს სერტიფიკატი სწორია."</string>
<string name="issued_to" msgid="454239480274921032">"მიეცა:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"აირჩიეთ წელი"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> წაიშალა"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"სამსახური <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"ამ ეკრანის ჩამაგრების მოსახსნელად, ხანგრძლივად შეეხეთ ღილაკს „უკან“."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"ამ ეკრანის ჩამაგრების მოსახსნელად, ხანგრძლივად შეეხეთ ღილაკს „მიმოხილვა“."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"აპი მიმაგრებულია: მიმაგრების მოხსნა არ არის ნებადართული ამ მოწყობილობაზე."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"ეკრანი დაფიქსირდა"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"ეკრანს ფიქსაცია მოეხსნა"</string>
diff --git a/core/res/res/values-kk-rKZ/strings.xml b/core/res/res/values-kk-rKZ/strings.xml
index 41becf5320de..60671abb85b5 100644
--- a/core/res/res/values-kk-rKZ/strings.xml
+++ b/core/res/res/values-kk-rKZ/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Терезе мазмұнын оқып отыру."</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Ашық тұрған терезе мазмұнын тексеру."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Түртілген элементтерді дыбыстау функциясын қосу"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Түртілген элементтер дауыстап айтылады және экранды қимылдар арқылы зерттеуге болады."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Ғаламторға кірудің жетілдірілген әдісін қосу"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Қолданба мазұнына кіруді жеңілдету үшін скрипт орнатылуы мүмкін."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Терілген мәтінді тексеру"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK және жаңа PIN кодтарын теріңіз"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK коды"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Жаңа PIN коды"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Құпия сөзді енгізу үшін түртіңіз"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Бекітпесін ашу үшін құпия сөзді теріңіз"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Бекітпесін ашу үшін PIN кодын теріңіз"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Қате PIN код"</string>
@@ -862,36 +860,36 @@
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"қазір"</string>
<plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>м</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>м</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> м.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> м.</item>
</plurals>
<plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>с</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>с</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> с.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> с.</item>
</plurals>
<plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>к</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>к</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> к.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> к.</item>
</plurals>
<plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ж</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ж</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ж.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ж.</item>
</plurals>
<plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>м</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>м</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> м.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> м.</item>
</plurals>
<plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>с</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>с</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> с.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> с.</item>
</plurals>
<plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>к</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>к</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> к.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> к.</item>
</plurals>
<plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ж</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ж</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ж.</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ж.</item>
</plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Бейне ақаулығы"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Бұл бейне осы құрылғыға ағынын жіберуге жарамсыз."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Жүйенің кейбір функциялары жұмыс істемеуі мүмкін"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Жүйе үшін жад жеткіліксіз. 250 МБ бос орын бар екенін тексеріп, қайта іске қосыңыз."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> қосылған"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Қосымша ақпаратты қарау үшін немесе қолданбаны тоқтату үшін түртіңіз."</string>
<string name="ok" msgid="5970060430562524910">"Жарайды"</string>
<string name="cancel" msgid="6442560571259935130">"Бас тарту"</string>
<string name="yes" msgid="5362982303337969312">"Жарайды"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Қолданбалар іске қосылуда."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Қосуды аяқтауда."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> қосылған"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Қолданбаға ауысу үшін түртіңіз"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Қолданбаларды ауыстыру керек пе?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Жаңасын іске қосу алдында тоқтату керек басқа қолданба әлдеқашан жұмыс істеп жатыр."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> қолданбасына оралу"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> қолданбасын қосу"</string>
<string name="new_app_description" msgid="1932143598371537340">"Ескі қолданбаны сақтаусыз тоқтату."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> жад шегінен асты"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Үйінді дамп жиналды; бөлісу үшін түртіңіз"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Үйінді дамппен бөлісу қажет пе?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> процесі <xliff:g id="SIZE">%2$s</xliff:g> процесс жады шегінен асып кетті. Үйінді дамп оның әзірлеушісімен ​​бөлісуге қолжетімді. Абай болыңыз: бұл үйінді дампта бағдарлама кіре алатын кейбір жеке ақпараттарыңыз болуы мүмкін."</string>
<string name="sendText" msgid="5209874571959469142">"Мәтін үшін әрекет таңдау"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi желісінде интернет байланысы жоқ"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Опциялар үшін түртіңіз"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi желісіне қосыла алмады"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" Интернет байланысы нашар."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Қосылуға рұқсат ету керек пе?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Тікелей байланысын бастау. Бұл Wi-Fi клиент/хот-спотты өшіреді."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Тікелей байланысын қоса алмады."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Тікелей Wi-Fi қосулы"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Параметрлер үшін түртіңіз"</string>
<string name="accept" msgid="1645267259272829559">"Қабылдау"</string>
<string name="decline" msgid="2112225451706137894">"Бас тарту"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Шақыру жіберілді"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Фотосуретті тасымалдауға арналған USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI режиміне арналған USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB жабдығына қосылған"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Қосымша опциялар үшін түртіңіз."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB жөндеу қосылған"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB түзетуін өшіру үшін түртіңіз."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Қате туралы есеп алынуда…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Қате туралы есепті бөлісу керек пе?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Қате туралы есеп бөлісілуде…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Жаңа <xliff:g id="NAME">%s</xliff:g> анықталды"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Фотосуреттер мен медиа файлдарын тасымалдау үшін"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Бүлінген <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> бұзылды. Түзету үшін түртіңіз."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Қолданылмайтын <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Бұл құрылғы <xliff:g id="NAME">%s</xliff:g> картасына қолдау көрсетеді. Қолдау көрсетілетін пішімде орнату үшін түртіңіз."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> кенеттен шығарылды"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Деректер жоғалып қалмауы үшін <xliff:g id="NAME">%s</xliff:g> құрылғысын ажыратып барып, шығару керек"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> жоқ"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Әрқашан қосылған ВЖЖ жалғануда…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Әрқашан қосылған ВЖЖ жалғанған"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Әрқашан қосылған ВЖЖ қателігі"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Конфигурациялау үшін түртіңіз"</string>
<string name="upload_file" msgid="2897957172366730416">"Файлды таңдау"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ешқандай файл таңдалмаған"</string>
<string name="reset" msgid="2448168080964209908">"Қайта реттеу"</string>
<string name="submit" msgid="1602335572089911941">"Жіберу"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Автокөлік режимі қосылған"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Автокөлік режимінен шығу үшін түртіңіз."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Тетеринг немесе хотспот қосулы"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Реттеу үшін түртіңіз."</string>
<string name="back_button_label" msgid="2300470004503343439">"Артқа"</string>
<string name="next_button_label" msgid="1080555104677992408">"Келесі"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Аттап өту"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Есептік жазба қосу."</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Арттыру"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Азайту"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> түймесін басып тұрыңыз."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Арттыру үшін жоғары, азайту үшін төмен сырғытыңыз."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Минут арттыру"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Минут арттыру"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB жады"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Өзгерту"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Дерекқор қолдануға қатысты ескерту"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Қолданыс пен параметрлерді көру үшін түртіңіз."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G деректер шегіне жеттіңіз"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G деректер шегіне жеттіңіз"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Ұялы деректер шегіне жеттіңіз"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi дерекқор шектеуінен асып кетті"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Анықталған уақтыттан <xliff:g id="SIZE">%s</xliff:g> асты."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Фондық деректер шектелген"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Шектеуді жою үшін түртіңіз."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Қауіпсіздік сертификаты"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Бұл сертификат жарамды."</string>
<string name="issued_to" msgid="454239480274921032">"Кімге берілген:"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"Жыл таңдау"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> жойылды"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Жұмыс <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Осы экранды босату үшін \"Артқа\" түймесін басып тұрыңыз."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Осы экранды босату үшін \"Шолу\" түймесін басып тұрыңыз."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Бағдарлама белгіленді: Бұл құрылғыда белгіні алуға рұқсат берілмейді."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Экран түйрелді"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Экран босатылды"</string>
diff --git a/core/res/res/values-km-rKH/strings.xml b/core/res/res/values-km-rKH/strings.xml
index fde84f491dd6..2ac5017f829f 100644
--- a/core/res/res/values-km-rKH/strings.xml
+++ b/core/res/res/values-km-rKH/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ទៅ​យក​មាតិកា​បង្អួច"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ពិនិត្យ​មាតិកា​បង្អួច​ដែល​អ្នក​កំពុង​ទាក់ទង​ជា​មួយ។"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"បើក​ការ​រក​មើល​​ដោយ​ប៉ះ"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"ធាតុដែលបានប៉ះនឹងត្រូវបានអានឮៗ ហើយអេក្រង់នោះអាចត្រូវបានស្វែងរកដោយប្រើកាយវិការ។"</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"បើក​ការ​ចូល​ដំណើរការ​បណ្ដាញ​ដែល​បាន​ធ្វើ​ឲ្យ​ប្រសើរ"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ស្គ្រីប​អាច​ត្រូវ​បាន​ដំឡើង​ ដើម្បី​ធ្វើ​ឲ្យ​មាតិកា​កម្មវិធី​អាច​ចូល​ដំណើរការ​បាន​កាន់តែ​ច្រើន។"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"មើល​អត្ថបទ​ដែល​វាយ"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"បញ្ចូល​កូដ PUK និង​ PIN ថ្មី"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"កូដ PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"កូដ PIN ថ្មី"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"ប៉ះដើម្បីវាយបញ្ចូលពាក្យសម្ងាត់"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"បញ្ចូល​ពាក្យ​សម្ងាត់​ ​ដើម្បី​ដោះ​សោ"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"បញ្ចូល​កូដ PIN ដើម្បី​ដោះ​សោ"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"កូដ PIN មិន​ត្រឹមត្រូវ។"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"មុខងារ​ប្រព័ន្ធ​មួយ​ចំនួន​អាច​មិន​ដំណើរការ​"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"មិន​មាន​ទំហំ​ផ្ទុក​​គ្រប់​គ្រាន់​សម្រាប់​ប្រព័ន្ធ​។ សូម​ប្រាកដ​ថា​អ្នក​មាន​ទំហំ​ទំនេរ​ 250MB ហើយ​ចាប់ផ្ដើម​ឡើង​វិញ។"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> កំពុង​ដំណើរការ"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"ប៉ះសម្រាប់ព័ត៌មានបន្ថែម ឬដើម្បីបញ្ឈប់កម្មវិធី។"</string>
<string name="ok" msgid="5970060430562524910">"យល់​ព្រម​"</string>
<string name="cancel" msgid="6442560571259935130">"បោះ​បង់​"</string>
<string name="yes" msgid="5362982303337969312">"យល់​ព្រម​"</string>
@@ -1001,8 +998,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ចាប់ផ្ដើម​កម្មវិធី។"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"បញ្ចប់​ការ​ចាប់ផ្ដើម។"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> កំពុង​ដំណើរការ"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"ប៉ះដើម្បីប្តូរកម្មវិធី"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"ប្ដូរ​កម្មវិធី?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"កម្មវិធី​ផ្សេង​កំពុង​ដំណើរការ​រួច​ហើយ​ ដែល​តម្រូវ​ឲ្យ​បញ្ឈប់​មុន​ពេល​អ្នក​អាច​ចាប់ផ្ដើម​ថ្មី។"</string>
<string name="old_app_action" msgid="493129172238566282">"ត្រឡប់​ទៅ <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1010,8 +1006,7 @@
<string name="new_app_action" msgid="5472756926945440706">"ចាប់ផ្ដើម <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"បញ្ឈប់​កម្មវិធី​ចាស់​ដោយ​មិន​រក្សាទុក"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> លើសពីកម្រិតកំណត់មេម៉ូរី"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Heap dump ត្រូវបានប្រមូល សូមប៉ះដើម្បីចែករំលែក"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"ចែករំលែក heap dump?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"ដំណើរការ <xliff:g id="PROC">%1$s</xliff:g> បានលើសកម្រិតកំណត់មេម៉ូរីរបស់វាដែលមានទំហំ <xliff:g id="SIZE">%2$s</xliff:g>។ Heap dump មានផ្តល់ជូនដល់អ្នកដើម្បីចែករំលែកជាមួយអ្នកអភិវឌ្ឍន៍របស់វា។ ត្រូវប្រុងប្រយ័ត្ន៖ Heap dump នេះអាចផ្ទុកព័ត៌មានផ្ទាល់ខ្លួនរបស់អ្នកណាមួយ ដែលកម្មវិធីអាចចូលប្រើបាន។"</string>
<string name="sendText" msgid="5209874571959469142">"ជ្រើស​សកម្មភាព​សម្រាប់​អត្ថបទ"</string>
@@ -1047,8 +1042,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi មិនមានអ៊ិនធឺណិតនោះទេ"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"ប៉ះសម្រាប់ជម្រើស"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"មិន​​អាច​តភ្ជាប់​វ៉ាយហ្វាយ"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" មាន​ការ​តភ្ជាប់​អ៊ីនធឺណិត​មិន​ល្អ។"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"អនុញ្ញាត​ភ្ជាប់?"</string>
@@ -1058,8 +1052,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"ចាប់ផ្ដើម​វ៉ាយហ្វាយ​ផ្ទាល់។ វា​នឹង​បិទ​វ៉ាយហ្វាយ​ហតស្ពត។"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"មិន​អាច​ចាប់ផ្ដើម​វ៉ាយហ្វា​ដោយ​ផ្ទាល់។"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"បើក​​វ៉ាយហ្វាយ​ផ្ទាល់"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"ប៉ះសម្រាប់ការកំណត់"</string>
<string name="accept" msgid="1645267259272829559">"ទទួល"</string>
<string name="decline" msgid="2112225451706137894">"បដិសេធ"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"បា​ន​ផ្ញើ​លិខិត​អញ្ជើញ"</string>
@@ -1111,11 +1104,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB សម្រាប់ការផ្ទេររូបថត"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB សម្រាប់ MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"បាន​ភ្ជាប់​ឧបករណ៍​យូអេសប៊ី"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"ប៉ះសម្រាប់ជម្រើសជាច្រើនទៀត"</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"បាន​ភ្ជាប់​ការ​កែ​កំហុស​យូអេសប៊ី"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"ប៉ះដើម្បីបិទដំណើរការកែកំហុសយូអេសប៊ី"</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"កំពុងទទួលយករបាយការណ៍កំហុស…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"ចែករំលែករបាយការណ៍កំហុសឬ?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"កំពុងចែករំលែករបាយកំហុស…"</string>
@@ -1135,11 +1126,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"បានរកឃើញ <xliff:g id="NAME">%s</xliff:g> ថ្មី"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"សម្រាប់ផ្ទេររូបភាព និងមេឌៀ"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> ខូច"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> បានខូចហើយ សូមប៉ះដើម្បីជួសជុល។"</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> មិនគាំទ្រ"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"ឧបករណ៍នេះមិនគាំទ្រ <xliff:g id="NAME">%s</xliff:g> នេះទេ។ ប៉ះដើម្បីកំណត់ទម្រង់ដែលគាំទ្រ។"</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"បានដក <xliff:g id="NAME">%s</xliff:g> ចេញដោយមិនបានរំពឹងទុក"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ផ្តាច់ <xliff:g id="NAME">%s</xliff:g> មុនពេលដកចេញដើម្បីជៀងវាងការបាត់បង់ទិន្នន័យ"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"បានដក <xliff:g id="NAME">%s</xliff:g> ចេញ"</string>
@@ -1211,18 +1200,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"បើក​ការ​តភ្ជាប់ VPN ជា​និច្ច..។"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"ភ្ជាប់ VPN ជា​និច្ច"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"បើក​កំហុស VPN ជា​និច្ច"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"ប៉ះដើម្បីកំណត់រចនាសម្ព័ន្ធ"</string>
<string name="upload_file" msgid="2897957172366730416">"ជ្រើស​​ឯកសារ"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"គ្មាន​ឯកសារ​បាន​ជ្រើស"</string>
<string name="reset" msgid="2448168080964209908">"កំណត់​ឡើងវិញ"</string>
<string name="submit" msgid="1602335572089911941">"ដាក់​ស្នើ"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"បាន​បើក​របៀប​រថយន្ត​"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"ប៉ះដើម្បីចាកចេញពីរបៀបរថយន្ត"</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"ភ្ជាប់ ឬ​ហតស្ពត​សកម្ម"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"ប៉ះដើម្បីកំណត់"</string>
<string name="back_button_label" msgid="2300470004503343439">"ថយក្រោយ"</string>
<string name="next_button_label" msgid="1080555104677992408">"បន្ទាប់​"</string>
<string name="skip_button_label" msgid="1275362299471631819">"រំលង"</string>
@@ -1255,8 +1241,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"បន្ថែម​គណនី"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"បង្កើន"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"បន្ថយ"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> ប៉ះ និងសង្កត់ឲ្យជាប់"</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"រុញ​ឡើងលើ ដើម្បី​បង្កើន និង​ចុះក្រោម​ដើម្បី​បន្ថយ។"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"បង្កើន​នាទី"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"បន្ថយ​នាទី"</string>
@@ -1300,8 +1285,7 @@
<string name="storage_usb" msgid="3017954059538517278">"ឧបករណ៍​ផ្ទុក​យូអេសប៊ី"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"កែសម្រួល​"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ការព្រមាន​ប្រើ​ទិន្នន័យ"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"ប៉ះដើម្បីមើលការប្រើប្រាស់ និងការកំណត់"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"បាន​ដល់​ដែន​កំណត់​ទិន្នន័យ 2G-3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"បាន​ដល់​ដែន​កំណត់​ទិន្នន័យ 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"បាន​ដល់​ដែន​កំណត់​ទិន្នន័យ​ចល័ត"</string>
@@ -1313,8 +1297,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"លើស​ដែន​កំណត់​ទិន្នន័យ​វ៉ាយហ្វាយ"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> លើ​ដែន​កំណត់​បាន​បញ្ជាក់។"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"បាន​ដាក់​កម្រិត​ទិន្នន័យ​ផ្ទៃ​ខាង​ក្រោយ"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"ប៉ះដើម្បីយកការរឹតបន្តឹងចេញ"</string>
<string name="ssl_certificate" msgid="6510040486049237639">"វិញ្ញាបនបត្រ​សុវត្ថិភាព"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"វិញ្ញាបនបត្រ​នេះ​​​​ត្រឹមត្រូវ​។"</string>
<string name="issued_to" msgid="454239480274921032">"បាន​ចេញ​ឲ្យ​៖"</string>
@@ -1530,10 +1513,8 @@
<string name="select_year" msgid="7952052866994196170">"ជ្រើស​ឆ្នាំ"</string>
<string name="deleted_key" msgid="7659477886625566590">"បាន​លុប <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"កន្លែង​ធ្វើការ <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"ដើម្បីផ្តាច់អេក្រង់នេះ សូមប៉ះ និងសង្កត់ប៊ូតុងថយក្រោយឲ្យជាប់។"</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"ដើម្បីផ្តាច់អេក្រង់នេះ សូមប៉ះ និងសង្កត់ប៊ូតុងទិដ្ឋភាពឲ្យជាប់។"</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"កម្មវិធីនេះត្រូវបានខ្ទាស់។ មិនអនុញ្ញាតឲ្យដោះការខ្ទាស់នៅលើឧបករណ៍នេះទេ។"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"បាន​ភ្ជាប់​អេក្រង់"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"មិន​បាន​ភ្ជាប់​អេក្រង់"</string>
diff --git a/core/res/res/values-kn-rIN/strings.xml b/core/res/res/values-kn-rIN/strings.xml
index 59df73c2c8fa..58ffe9c65b4b 100644
--- a/core/res/res/values-kn-rIN/strings.xml
+++ b/core/res/res/values-kn-rIN/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ವಿಂಡೋ ವಿಷಯವನ್ನು ಹಿಂಪಡೆದುಕೊಳ್ಳುತ್ತದೆ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ನೀವು ಸಂವಹನ ನಡೆಸುತ್ತಿರುವ ವಿಂಡೋದ ವಿಷಯವನ್ನು ಪರೀಕ್ಷಿಸಿ."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ಸ್ಪರ್ಶಿಸುವ ಮೂಲಕ ಎಕ್ಸ್‌ಪ್ಲೋರ್ ಆನ್ ಮಾಡಿ"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"ಟ್ಯಾಪ್ ಮಾಡಲಾದ ಐಟಂಗಳನ್ನು ಗಟ್ಟಿಯಾಗಿ ಹೇಳಲಾಗುತ್ತದೆ ಮತ್ತು ಗೆಸ್ಚರ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪರದೆಯನ್ನು ಎಕ್ಸ್‌ಪ್ಲೋರ್ ಮಾಡಬಹುದಾಗಿದೆ."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"ವರ್ಧಿತ ವೆಬ್ ಪ್ರವೇಶಿಸುವಿಕೆ ಆನ್ ಆಗುವಿಕೆ"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ಅಪ್ಲಿಕೇಶನ್ ವಿಷಯ ಇನ್ನಷ್ಟು ಲಭ್ಯವಾಗುವಂತೆ ಮಾಡಲು ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಸ್ಥಾಪಿಸಬಹುದಾಗಿದೆ."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"ನೀವು ಟೈಪ್ ಮಾಡುವ ಪಠ್ಯವನ್ನು ಗಮನಿಸುತ್ತದೆ"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK ಮತ್ತು ಹೊಸ ಪಿನ್‌ ಕೋಡ್ ಟೈಪ್‌ ಮಾಡಿ"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK ಕೋಡ್"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"ಹೊಸ ಪಿನ್‌ ಕೋಡ್‌"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"ಪಾಸ್‌ವರ್ಡ್‌ ಟೈಪ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"ಅನ್‌ಲಾಕ್‌ ಮಾಡಲು ಪಾಸ್‌ವರ್ಡ್‌ ಟೈಪ್‌ ಮಾಡಿ"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"ಅನ್‌ಲಾಕ್‌ ಮಾಡಲು ಪಿನ್‌ ಟೈಪ್‌ ಮಾಡಿ"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"ತಪ್ಪಾದ ಪಿನ್‌ ಕೋಡ್."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"ಕೆಲವು ಸಿಸ್ಟಂ ಕಾರ್ಯವಿಧಾನಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸದೇ ಇರಬಹುದು"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"ಸಿಸ್ಟಂನಲ್ಲಿ ಸಾಕಷ್ಟು ಸಂಗ್ರಹಣೆಯಿಲ್ಲ. ನೀವು 250MB ನಷ್ಟು ಖಾಲಿ ಸ್ಥಳವನ್ನು ಹೊಂದಿರುವಿರಾ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಹಾಗೂ ಮರುಪ್ರಾರಂಭಿಸಿ."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಚಾಲನೆಯಲ್ಲಿದೆ"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ ಅಥವಾ ಅಪ್ಲಿಕೇಶನ್ ನಿಲ್ಲಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="ok" msgid="5970060430562524910">"ಸರಿ"</string>
<string name="cancel" msgid="6442560571259935130">"ರದ್ದುಮಾಡು"</string>
<string name="yes" msgid="5362982303337969312">"ಸರಿ"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"ಬೂಟ್ ಪೂರ್ಣಗೊಳಿಸಲಾಗುತ್ತಿದೆ."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> ರನ್ ಆಗುತ್ತಿದೆ"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"ಅಪ್ಲಿಕೇಶನ್‌ ಬದಲಾಯಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಬದಲಾಯಿಸುವುದೇ?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"ಮತ್ತೊಂದು ಅಪ್ಲಿಕೇಶನ್‌ ಈಗಾಗಲೇ ಚಾಲ್ತಿಯಲ್ಲಿದೆ ನೀವು ಹೊಸದೊಂದು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು ಅದನ್ನು ನಿಲ್ಲಿಸಬೇಕು."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> ಗೆ ಹಿಂತಿರುಗಿ"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> ಪ್ರಾರಂಭಿಸಿ"</string>
<string name="new_app_description" msgid="1932143598371537340">"ಉಳಿಸದೇ ಹಳೆಯ ಅಪ್ಲಿಕೇಶನ್ ನಿಲ್ಲಿಸಿ."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ಮೆಮೊರಿ ಮಿತಿಯನ್ನು ಮೀರಿದೆ"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"ಹೀಪ್ ಡಂಪ್ ಅನ್ನು ಸಂಗ್ರಹಿಸಲಾಗಿದೆ; ಹಂಚಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"ಹೀಪ್ ಡಂಪ್ ಹಂಚಿಕೊಳ್ಳುವುದೇ?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> ಪ್ರಕ್ರಿಯೆಯು <xliff:g id="SIZE">%2$s</xliff:g> ರ ಪ್ರಕ್ರಿಯೆ ಮೆಮೊರಿ ಮಿತಿಯನ್ನು ಮೀರಿದೆ. ನೀವು ಅದರ ಡೆವಲಪರ್ ಜೊತೆ ಹಂಚಿಕೊಳ್ಳಲು ಹೀಪ್ ಡಂಪ್ ಲಭ್ಯವಿದೆ. ಎಚ್ಚರಿಕೆ: ಈ ಹೀಪ್ ಡಂಪ್ ಅಪ್ಲಿಕೇಶನ್ ಪ್ರವೇಶ ಹೊಂದಿರುವ ನಿಮ್ಮ ಯಾವುದೇ ವೈಯಕ್ತಿಕ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿರಬಹುದು."</string>
<string name="sendText" msgid="5209874571959469142">"ಪಠ್ಯಕ್ಕೆ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"ವೈ-ಫೈ ಯಾವುದೇ ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿಲ್ಲ"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"ಆಯ್ಕೆಗಳಿಗೆ ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi ಗೆ ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ಕಳಪೆ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಹೊಂದಿದೆ."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"ಸಂಪರ್ಕವನ್ನು ಅನುಮತಿಸುವುದೇ?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi ಡೈರೆಕ್ಟ್ ಪ್ರಾರಂಭಿಸಿ. ಇದು Wi-Fi ಕ್ಲೈಂಟ್‌/ಹಾಟ್‌ಸ್ಪಾಟ್ ಅನ್ನು ಆಫ್ ಮಾಡುತ್ತದೆ."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi ಡೈರೆಕ್ಟ್ ಪ್ರಾರಂಭಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi ಡೈರೆಕ್ಟ್ ಆನ್ ಆಗಿದೆ"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="accept" msgid="1645267259272829559">"ಸ್ವೀಕರಿಸು"</string>
<string name="decline" msgid="2112225451706137894">"ನಿರಾಕರಿಸು"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ಆಹ್ವಾನವನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ಫೋಟೋ ವರ್ಗಾವಣೆಗೆ USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI ಗೆ USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB ಪರಿಕರಕ್ಕೆ ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"ಹೆಚ್ಚಿನ ಆಯ್ಕೆಗಳಿಗೆ ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB ಡೀಬಗಿಂಗ್‌‌ ಸಂಪರ್ಕ"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB ಡೀಬಗ್‌ ಮಾಡುವಿಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"ದೋಷದ ವರದಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳಲಾಗುತ್ತಿದೆ…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"ಬಗ್ ವರದಿಯನ್ನು ಹಂಚುವುದೇ?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"ಬಗ್ ವರದಿಯನ್ನು ಹಂಚಿಕೊಳ್ಳಲಾಗುತ್ತಿದೆ…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"ಹೊಸ <xliff:g id="NAME">%s</xliff:g> ಪತ್ತೆಯಾಗಿದೆ"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ಫೋಟೋಗಳು ಮತ್ತು ಮಾಧ್ಯಮವನ್ನು ವರ್ಗಾಯಿಸಲು"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> ದೋಷಪೂರಿತವಾಗಿದೆ"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> ದೋಷಪೂರಿತವಾಗಿದೆ. ಸರಿಪಡಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"ಬೆಂಬಲಿಸದಿರುವ <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"ಈ ಸಾಧನವು <xliff:g id="NAME">%s</xliff:g> ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. ಬೆಂಬಲಿತ ಫಾರ್ಮ್ಯಾಟ್‌‌ನಲ್ಲಿ ಹೊಂದಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ಅನಿರೀಕ್ಷಿತವಾಗಿ ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ಡೇಟಾ ನಷ್ಟವನ್ನು ತಪ್ಪಿಸಲು ತೆಗೆದುಹಾಕುವುದಕ್ಕೂ ಮುನ್ನ <xliff:g id="NAME">%s</xliff:g> ಅಳವಡಿಕೆಯನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"ಯಾವಾಗಲೂ-ಆನ್ VPN ಸಂಪರ್ಕಗೊಳ್ಳುತ್ತಿದೆ…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"ಯಾವಾಗಲೂ-ಆನ್ VPN ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"ಯಾವಾಗಲೂ-ಆನ್ VPN ದೋಷ"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಟ್ಯಾಪ್‌ ಮಾಡಿ"</string>
<string name="upload_file" msgid="2897957172366730416">"ಫೈಲ್ ಆಯ್ಕೆಮಾಡು"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ಯಾವುದೇ ಫೈಲ್ ಆಯ್ಕೆ ಮಾಡಿಲ್ಲ"</string>
<string name="reset" msgid="2448168080964209908">"ಮರುಹೊಂದಿಸು"</string>
<string name="submit" msgid="1602335572089911941">"ಸಲ್ಲಿಸು"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"ಕಾರ್ ಮೋಡ್ ಸಕ್ರಿಯವಾಗಿದೆ"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"ಕಾರ್ ಮೋಡ್‍ನಿಂದ ನಿರ್ಗಮಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"ಟೆಥರಿಂಗ್ ಅಥವಾ ಹಾಟ್‌ಸ್ಪಾಟ್ ಸಕ್ರಿಯವಾಗಿದೆ"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"ಹೊಂದಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="back_button_label" msgid="2300470004503343439">"ಹಿಂದೆ"</string>
<string name="next_button_label" msgid="1080555104677992408">"ಮುಂದಿನದು"</string>
<string name="skip_button_label" msgid="1275362299471631819">"ಸ್ಕಿಪ್‌"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"ಖಾತೆ ಸೇರಿಸು"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"ಹೆಚ್ಚಿಸಿ"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"ಕಡಿಮೆ ಮಾಡಿ"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> ಸ್ಪರ್ಶಿಸಿ &amp; ಹಿಡಿದಿಡಿ."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"ಹೆಚ್ಚಿಸಲು ಮೇಲಕ್ಕೆ ಮತ್ತು ಕಡಿಮೆ ಮಾಡಲು ಕೆಳಕ್ಕೆ ಸ್ಲೈಡ್ ಮಾಡಿ."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"ನಿಮಿಷವನ್ನು ಹೆಚ್ಚಿಸಿ"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"ನಿಮಿಷವನ್ನು ಕಡಿಮೆ ಮಾಡಿ"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB ಸಂಗ್ರಹಣೆ"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"ಸಂಪಾದಿಸು"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ಡೇಟಾ ಬಳಕೆಯ ಎಚ್ಚರಿಕೆ"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"ಬಳಕೆ ಮತ್ತು ಸೆಟ್ಟಿಂಗ್‍ಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G ಡೇಟಾ ಮೀತಿಯನ್ನು ತಲುಪಿದೆ"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G ಡೇಟಾ ಮೀತಿಯನ್ನು ತಲುಪಿದೆ"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"ಸೆಲ್ಯುಲಾರ್ ಡೇಟಾ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi ಡೇಟಾ ಮಿತಿ ಮೀರಿದೆ"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಮಿತಿ ಮೀರಿದೆ."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"ಹಿನ್ನೆಲೆ ಡೇಟಾವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"ನಿರ್ಬಂಧವನ್ನು ತೆಗೆದುಹಾಕಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"ಭದ್ರತಾ ಪ್ರಮಾಣಪತ್ರ"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ಈ ಪ್ರಮಾಣಪತ್ರವು ಮಾನ್ಯವಾಗಿದೆ."</string>
<string name="issued_to" msgid="454239480274921032">"ಇವರಿಗೆ ನೀಡಲಾಗಿದೆ:"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"ವರ್ಷವನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ಅಳಿಸಲಾಗಿದೆ"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"ಕೆಲಸ <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"ಈ ಪರದೆಯನ್ನು ಅನ್‌ಪಿನ್ ಮಾಡಲು, ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹಿಂಂದೆ ಒತ್ತಿ ಹಿಡಿಯಿರಿ."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"ಈ ಪರದೆಯನ್ನು ಅನ್‌ಪಿನ್ ಮಾಡಲು, ಅವಲೋಕನವನ್ನು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಒತ್ತಿ ಹಿಡಿಯಿರಿ."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"ಅಪ್ಲಿಕೇಶನ್ ಪಿನ್‌ ಮಾಡಲಾಗಿದೆ: ಈ ಸಾಧನದಲ್ಲಿ ಅನ್‌ಪಿನ್‌ ಮಾಡುವುದನ್ನು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"ಸ್ಕ್ರೀನ್‌ ಪಿನ್‌ ಮಾಡಲಾಗಿದೆ"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"ಸ್ಕ್ರೀನ್‌ ಅನ್‌ಪಿನ್‌ ಮಾಡಲಾಗಿದೆ"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 462523155e14..f9ec64d124b6 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"창 콘텐츠 가져오기"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"상호작용 중인 창의 콘텐츠를 검사합니다."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"터치하여 탐색 사용"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"항목을 탭하면 소리 내어 알려주며 동작을 사용하여 화면을 탐색할 수 있습니다."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"향상된 웹 접근성 기능 사용"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"스크립트를 설치하여 앱 콘텐츠에 더 간편하게 액세스할 수 있습니다."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"입력하는 텍스트 살펴보기"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK 및 새 PIN 코드 입력"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK 코드"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"새 PIN 코드"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"탭하여 비밀번호 입력"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"잠금 해제하려면 비밀번호 입력"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"잠금을 해제하려면 PIN 입력"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN 코드가 잘못되었습니다."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"일부 시스템 기능이 작동하지 않을 수 있습니다."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"시스템의 저장 공간이 부족합니다. 250MB의 여유 공간이 확보한 후 다시 시작하세요."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g>이(가) 실행 중입니다."</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"자세한 내용을 보거나 앱을 중지하려면 탭하세요."</string>
<string name="ok" msgid="5970060430562524910">"확인"</string>
<string name="cancel" msgid="6442560571259935130">"취소"</string>
<string name="yes" msgid="5362982303337969312">"확인"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"앱을 시작하는 중입니다."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"부팅 완료"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> 실행 중"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"앱을 전환하려면 탭하세요."</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"앱을 전환하시겠습니까?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"다른 앱이 이미 실행 중입니다. 새 앱을 시작하려면 실행 중인 앱을 중단해야 합니다."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g>(으)로 돌아가기"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> 시작"</string>
<string name="new_app_description" msgid="1932143598371537340">"저장하지 않고 이전 앱을 중단합니다."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g>에서 메모리 제한을 초과했습니다."</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"힙 덤프가 수집되었습니다. 공유하려면 탭하세요."</string>
<string name="dump_heap_title" msgid="5864292264307651673">"힙 덤프를 공유할까요?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"프로세스 <xliff:g id="PROC">%1$s</xliff:g>에서 프로세스 메모리 한도(<xliff:g id="SIZE">%2$s</xliff:g>)를 초과했습니다. 힙 덤프를 개발자와 공유할 수 있습니다. 주의: 애플리케이션이 액세스할 수 있는 개인 정보가 이 힙 덤프에 포함되어 있을 수 있습니다."</string>
<string name="sendText" msgid="5209874571959469142">"텍스트에 대한 작업 선택"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi가 인터넷에 연결되어 있지 않습니다."</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"탭하여 옵션 보기"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi에 연결할 수 없습니다"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" 인터넷 연결 상태가 좋지 않습니다."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"연결을 허용하시겠습니까?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Direct 작업을 시작합니다. 이 작업을 하면 Wi-Fi 클라이언트/핫스팟 작업이 중지됩니다."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct를 시작하지 못했습니다."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct 켜짐"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"탭하여 설정 보기"</string>
<string name="accept" msgid="1645267259272829559">"동의"</string>
<string name="decline" msgid="2112225451706137894">"거부"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"초대장을 보냈습니다."</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"사진 전송용 USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI용 USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB 액세서리에 연결됨"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"옵션을 더 보려면 탭하세요."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB 디버깅 연결됨"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB 디버깅을 사용하지 않으려면 탭하세요."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"버그 보고서 가져오는 중..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"버그 보고서를 공유하시겠습니까?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"버그 신고서 공유 중..."</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"새로운 <xliff:g id="NAME">%s</xliff:g> 감지됨"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"사진 및 미디어를 전송하는 데 사용합니다."</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"손상된 <xliff:g id="NAME">%s</xliff:g>입니다."</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g>이(가) 손상되었습니다. 해결하려면 탭하세요."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"지원되지 않는 <xliff:g id="NAME">%s</xliff:g>입니다."</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"이 기기는 <xliff:g id="NAME">%s</xliff:g>을(를) 지원하지 않습니다. 지원하는 형식으로 설정하려면 탭하세요."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g>이(가) 예기치 않게 삭제됨"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"데이터 손실을 피하려면 <xliff:g id="NAME">%s</xliff:g>을(를) 마운트 해제한 다음 삭제하세요."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> 삭제됨"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"연결 유지 VPN에 연결하는 중…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"연결 유지 VPN에 연결됨"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"연결 유지 VPN 오류"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"설정하려면 탭하세요."</string>
<string name="upload_file" msgid="2897957172366730416">"파일 선택"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"파일을 선택하지 않았습니다."</string>
<string name="reset" msgid="2448168080964209908">"초기화"</string>
<string name="submit" msgid="1602335572089911941">"제출"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"운전모드 사용"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"운전 모드를 종료하려면 탭하세요."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"테더링 또는 핫스팟 사용"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"설정하려면 탭하세요."</string>
<string name="back_button_label" msgid="2300470004503343439">"뒤로"</string>
<string name="next_button_label" msgid="1080555104677992408">"다음"</string>
<string name="skip_button_label" msgid="1275362299471631819">"건너뛰기"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"계정 추가"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"늘리기"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"줄이기"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> 길게 터치하세요."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"늘리려면 위로 슬라이드하고 줄이려면 아래로 슬라이드합니다."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"\'분\'을 늘립니다."</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"\'분\'을 줄입니다."</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB 저장소"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"수정"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"데이터 사용 경고"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"사용량 및 설정을 보려면 탭하세요."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G 데이터 한도에 도달함"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G 데이터 한도에 도달함"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"이동통신 데이터 한도에 도달함"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi 데이터 한도 초과됨"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> - 지정된 한도 초과"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"백그라운드 데이터 사용이 제한됨"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"제한을 삭제하려면 탭하세요."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"보안 인증서"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"유효한 인증서입니다."</string>
<string name="issued_to" msgid="454239480274921032">"발급 대상:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"연도 선택"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> 삭제됨"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"업무용 <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"이 화면을 고정 해제하려면 \'뒤로\'를 길게 터치합니다."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"이 화면을 고정 해제하려면 \'최근 사용\'을 길게 터치합니다."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"앱이 고정되었습니다. 이 기기에서는 고정 해제를 허용하지 않습니다."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"화면 고정됨"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"화면 고정 해제됨"</string>
diff --git a/core/res/res/values-ky-rKG/strings.xml b/core/res/res/values-ky-rKG/strings.xml
index 2e49ecc85dba..b2351820ce85 100644
--- a/core/res/res/values-ky-rKG/strings.xml
+++ b/core/res/res/values-ky-rKG/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Терезе мазмунун алуу"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Сиз иштеп жаткан терезенин мазмунун изилдөө."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Сыйпалап изилдөөнү жандыруу"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Тапталган нерселер угузулат жана экранды жаңсап изилдесе болот."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Жакшыртылган веб жеткиликтүүлүгүн жандыруу"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Колдонмонун мазмунун жеткиликтүүрөөк кылыш үчүн скрипттер орнотулушу мүмкүн."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Терип жаткан текстти текшерүү"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK жана жаңы PIN кодду териңиз"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-код"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Жаңы PIN код"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Сырсөздү терүү үчүн таптаңыз"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Кулпуну ачуу үчүн сырсөздү териңиз"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Кулпуну ачуу үчүн PIN кодду териңиз"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN-код туура эмес."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Системанын кээ бир функциялары иштебеши мүмкүн"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Тутумда сактагыч жетишсиз. 250МБ бош орун бар экенин текшерип туруп, өчүрүп күйгүзүңүз."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> иштөөдө"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Көбүрөөк маалымат үчүн же колдонмону токтотуш үчүн таптап коюңуз."</string>
<string name="ok" msgid="5970060430562524910">"Жарайт"</string>
<string name="cancel" msgid="6442560571259935130">"Жокко чыгаруу"</string>
<string name="yes" msgid="5362982303337969312">"Жарайт"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Колдонмолорду иштетип баштоо"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Жүктөө аякталууда."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> иштеп жатат"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Колдонмого которулуу үчүн таптап коюңуз"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Колдонмолор которуштурулсунбу?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Жаңы колдонмону иштетээрден мурун, учурда иштеп жатканын өчүрүшүңүз керек."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> колдонмосуна кайтуу"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> колдонмосун жүргүзүү"</string>
<string name="new_app_description" msgid="1932143598371537340">"Эски колдонмону сактабастан токтотуу."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> эстутум чегинен ашып кетти"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Үймө дамп топтолду; бөлүшүү үчүн таптап коюңуз"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Үймө дамп бөлүшүлсүнбү?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> процесси өзүнүн <xliff:g id="SIZE">%2$s</xliff:g> процесс чегинен ашып кетти. Үймө дамп сиз үчүн иштеп чыгуучу менен бөлүшүүгө даяр. Абайлаңыз: бул үймө дампта колдонмонун уруксаты бар жеке маалыматыңыз камтылышы мүмкүн."</string>
<string name="sendText" msgid="5209874571959469142">"Текст үчүн аракет тандаңыз"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi тармагы Интернетке туташпай турат"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Параметрлерди ачуу үчүн таптап коюңуз"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi менен туташуу түзүлбөдү"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" хотспотунун интернет байланышы начар."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Туташууга уруксатпы?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Дайректи иштетүү. Бул Wi-Fi клиентти/хотспотту өчүрөт."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Дайрект иштетилбеди."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct иштөөдө"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Жөндөөлөрдү ачуу үчүн таптап коюңуз"</string>
<string name="accept" msgid="1645267259272829559">"Кабыл алуу"</string>
<string name="decline" msgid="2112225451706137894">"Баш тартуу"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Чакыруу жөнөтүлдү"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Сүрөт өткөрүү үчүн USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI үчүн USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB аксессуарга байланышты"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Кошумча параметрлерди ачуу үчүн таптап коюңуз."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB мүчүлүштүктөрдү оңдоо туташтырылган"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB аркылуу мүчүлүштүктөрдү жоюу мүмкүнчүлүгүн өчүрүү үчүн таптап коюңуз."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Мүчүлүштүк тууралуу кабар алынууда…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Мүчүлүштүк тууралуу баяндама бөлүшүлсүнбү?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Мүчүлүштүк тууралуу баяндама бөлүшүлүүдө…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Жаңы <xliff:g id="NAME">%s</xliff:g> аныкталды"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Сүрөттөрдү жана медиа өткөрүү үчүн"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> бузулган"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> - бузук. Оңдоо үчүн таптап коюңуз."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> колдоого алынбайт"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Бул түзмөктө <xliff:g id="NAME">%s</xliff:g> колдоого алынбайт. Колдоого алынуучу форматта орнотуу үчүн таптап коюңуз."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> күтүүсүздөн алынып салынды"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Дайындарды жоготуунун алдын алуу үчүн чыгаруудан мурун <xliff:g id="NAME">%s</xliff:g> түзмөгүн бошотуңуз"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> алынды"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Дайым иштеген VPN туташууда…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Дайым иштеген VPN туташтырылды"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Дайым иштеген VPN\'де ката кетти"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Конфигурациялоо үчүн таптап коюңуз"</string>
<string name="upload_file" msgid="2897957172366730416">"Файл тандоо"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Эч файл тандалган жок"</string>
<string name="reset" msgid="2448168080964209908">"Баштапкы абалга келтирүү"</string>
<string name="submit" msgid="1602335572089911941">"Тапшыруу"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Унаа режими иштетилген"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Унаа режиминен чыгуу үчүн таптап коюңуз."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Жалгаштыруу же хотспот жандырылган"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Жөндөө үчүн таптап коюңуз."</string>
<string name="back_button_label" msgid="2300470004503343439">"Артка"</string>
<string name="next_button_label" msgid="1080555104677992408">"Кийинки"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Өткөрүп жиберүү"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Эсеп кошуу"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Жогорулатуу"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Төмөндөтүү"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> жолу басып, кармап туруңуз."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Жогорулатыш үчүн жогору, төмөндөтүш үчүн төмөн жылмыштырыңыз."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Мүнөттү жогорулатуу"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Мүнөттү төмөндөтүү"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB эстутуму"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Өзгөртүү"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Дайындарды колдонуу боюнча эскрт"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Колдонулушун жана жөндөөлөрүн көрүү үчүн таптаңыз."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G дайындар чегине жетти"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G дайындар чегине жетти"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Уюктук дайындар чегине жетти"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi трафик чегинен ашты"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Орнотулган чектөөдөн <xliff:g id="SIZE">%s</xliff:g> ашты."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Фондук трафик чектелген"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Чектөөнү алыш үчүн таптаңыз."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Коопсуздук тастыктамасы"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Бул тастыктама жарактуу."</string>
<string name="issued_to" msgid="454239480274921032">"Берилди:"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"Жылды тандаңыз"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> өчүрүлдү"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Жумуш <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Бул экранды бошотуу үчүн \"Артка\" баскычын басып, кармап туруңуз."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Бул экранды бошотуу үчүн \"Көз жүгүртүү\" баскычын басып, кармап туруңуз."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Колдонмо кадалган: Бул түзмөктө бошотууга уруксат жок."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Экран кадалды"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Экран бошотулду"</string>
diff --git a/core/res/res/values-lo-rLA/strings.xml b/core/res/res/values-lo-rLA/strings.xml
index c3e0da472235..c4da92cdbf4e 100644
--- a/core/res/res/values-lo-rLA/strings.xml
+++ b/core/res/res/values-lo-rLA/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ດຶງຂໍ້ມູນເນື້ອຫາໃນໜ້າຈໍ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ກວດກາເນື້ອຫາຂອງໜ້າຈໍທີ່ທ່ານກຳລັງມີປະຕິສຳພັນນຳ."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ເປີດໃຊ້ \"ການສຳຫຼວດໂດຍສຳພັດ\""</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"ລາຍການທີ່ແຕະຈະຖືກເວົ້າອອກມາ ແລະ ສາມາດສຳຫຼວດໜ້າຈໍໄດ້ດ້ວຍທ່າທາງໄດ້."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"ເປີດການເຂົ້າເຖິງເວັບທີ່ມີປະສິດທິພາບຫຼາຍຂຶ້ນ"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ສະຄຣິບອາດຖືກຕິດຕັ້ງ ເພື່ອເຮັດໃຫ້ເນື້ອຫາແອັບຯເຂົ້າເຖິງໄດ້ຫຼາຍຂຶ້ນ."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"ຕິດຕາມ​ເບິ່ງ​ຂໍ້​ຄວາມ​ທີ່​ທ່ານ​ພິມ"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"ພິມລະຫັດ PUK ແລະ​ລະ​ຫັດ PIN ອັນໃໝ່"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"ລະ​ຫັດ PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"ລະຫັດ PIN ໃໝ່"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"ແຕະເພື່ອພິມລະຫັດຜ່ານ"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"ພິມລະຫັດເພື່ອປົດລັອກ"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"ພິມລະຫັດ PIN ເພື່ອປົດລັອກ"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"ລະຫັດ PIN ບໍ່ຖືກຕ້ອງ."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"ການເຮັດວຽກບາງຢ່າງຂອງລະບົບບາງອາດຈະໃຊ້ບໍ່ໄດ້"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"​ບໍ່​ມີ​ບ່ອນ​ເກັບ​ຂໍ້​ມູນ​ພຽງ​ພໍ​ສຳ​ລັບ​ລະ​ບົບ. ກວດ​ສອບ​ໃຫ້​ແນ່​ໃຈ​ວ່າ​ທ່ານ​ມີ​ພື້ນ​ທີ່​ຫວ່າງ​ຢ່າງ​ໜ້ອຍ 250MB ​ແລ້ວລອງ​ໃໝ່."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ກຳລັງເຮັດວຽກຢູ່"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"ແຕະເພື່ອເບິ່ງຂໍ້ມູນເພີ່ມເຕີມ ຫຼື ເພື່ອຢຸດການເຮັດວຽກຂອງແອັບ."</string>
<string name="ok" msgid="5970060430562524910">"ຕົກລົງ"</string>
<string name="cancel" msgid="6442560571259935130">"ຍົກເລີກ"</string>
<string name="yes" msgid="5362982303337969312">"ຕົກລົງ"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ກຳລັງເປີດແອັບຯ."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"ກຳລັງສຳເລັດການເປີດລະບົບ."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> ກຳລັງເຮັດວຽກ"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"ແຕະເພື່ອສະລັບໄປຫາແອັບ"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"ສະລັບແອັບຯບໍ່?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"ທ່ານຈະຕ້ອງຢຸດນຳໃຊ້ແອັບຯໂຕອື່ນກ່ອນ ກ່ອນທີ່ທ່ານຈະເປີດໃຊ້ແອັບຯໃໝ່ໄດ້."</string>
<string name="old_app_action" msgid="493129172238566282">"ກັບໄປ <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"ເລີ່ມຕົ້ນ <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"ຢຸດແອັບຯເກົ່າໂດຍບໍ່ຕ້ອງບັນທຶກ."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ເກີນ​ຂີດ​ຄວາມ​ຈຳ​ແລ້ວ"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"ເກັບກຳຂໍ້ມູນ Head dump ແລ້ວ; ແຕະເພື່ອແບ່ງປັນ"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"ແບ່ງ​ປັນ​ການ​ເທກອງ​ບໍ?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"ຂະ​ບວນ​ການ <xliff:g id="PROC">%1$s</xliff:g> ເກີນ​ຂີດ​ຈຳ​ກັດ​ຄວາມ​ຈຳ​ຂະ​ບວນ​ການ​ຂອງ​ມັນ​ຂອງ <xliff:g id="SIZE">%2$s</xliff:g> ແລ້ວ. ການ​ເທກອງ​ມີ​ໃຫ້​ສຳ​ລັບ​ທ່ານ ເພື່ອ​ແບ່ງ​ປັນ​ກັບ​ຜູ້​ພ​ັດ​ທະ​ນາ​ຂອງ​ມັນ. ລະ​ວັງ: ການ​ເທກອງ​ນີ້​ສາ​ມາດ​ມີ​ຂໍ້​ມູນ​ສ່ວນ​ຕົວ​ໃດ​ໜຶ່ງ​ຂອງ​ທ່ານ ທີ່​ແອັບ​ພ​ລິ​ເຄ​ຊັນ​ມີ​ການ​ເຂົ້າ​ຫາ."</string>
<string name="sendText" msgid="5209874571959469142">"ເລືອກການເຮັດວຽກຂອງຂໍ້ຄວາມ"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi ບໍ່ມີການເຂົ້າເຖິງອິນເຕີເນັດ"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"ແຕະເພື່ອເບິ່ງຕົວເລືອກ"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"ບໍ່ສາມາດເຊື່ອມຕໍ່ Wi-Fi ໄດ້"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ມີສັນຍານອິນເຕີເນັດທີ່ບໍ່ດີ."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"​ອະ​ນຸ​ຍາດ​ການ​ເຊື່ອມ​ຕໍ່ຫຼື​ບໍ່?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"ເລີ່ມ Wi-Fi Direct. ນີ້ຈະເປັນການປິດ Wi-Fi client/hotspot."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"ບໍ່ສາມາດເລີ່ມ Wi-Fi Direct ໄດ້."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"ເປີດໃຊ້ Wi-Fi Direct ແລ້ວ"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"ແຕະເພື່ອເບິ່ງການຕັ້ງຄ່າ"</string>
<string name="accept" msgid="1645267259272829559">"ຍອມຮັບ"</string>
<string name="decline" msgid="2112225451706137894">"ປະຕິເສດ"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ການ​ເຊື້ອ​ເຊີນ​ຖືກສົ່ງໄປແລ້ວ"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB ສຳ​ລັບ​ການ​ໂອນ​ໄຟ​ລ໌"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB ສຳ​ລັບ MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"ເຊື່ອມຕໍ່ກັບອຸປະກອນເສີມ USB ແລ້ວ"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"ແຕະເພື່ອເບິ່ງຕົວເລືອກເພີ່ມເຕີມ."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"ເຊື່ອມຕໍ່ການດີບັ໊ກຜ່ານ USB ແລ້ວ"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"ແຕະເພື່ອປິດການດີບັກຜ່ານ USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"ກຳລັງຂໍລາຍງານຂໍ້ຜິດພາດ…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"ແບ່ງປັນລາຍງານບັນຫາບໍ?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"ກຳລັງແບ່ງປັນລາຍງານບັນຫາ…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"ກວດ​ພົບ <xliff:g id="NAME">%s</xliff:g> ໃໝ່​ແລ້ວ"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ສຳ​ລັບ​ການ​ໂອນ​ຮູບຖ່າຍ ແລະ​ມີ​ເດຍ"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"ເສຍຫາຍແລ້ວ <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> ເສຍຫາຍ. ແຕະເພື່ອສ້ອມແປງ."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"ບໍ່​ຮອງ​ຮັບ <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"ອຸປະກອນນີ້ບໍ່ຮອງຮັບ <xliff:g id="NAME">%s</xliff:g> ນີ້. ແຕະເພື່ອຕັ້ງຄ່າໃນຮູບແບບທີ່ຮອງຮັບ."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ຖືກ​ຖອດ​ອອກ​ໄປ​ແບບ​ບໍ່​ຄາດ​ຄິດ"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ຖອດ​ເຊື່ອມ​ຕໍ່ <xliff:g id="NAME">%s</xliff:g> ກ່ອນ​ເອົາ​ອອກ​ໄປ ເພື່ອ​ຫຼີກ​ເວັ້ນ​ການ​ເສຍ​ຂໍ້​ມູນ"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"ເອົາ <xliff:g id="NAME">%s</xliff:g> ອອກ​ໄປ​ແລ້ວ"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"ກຳລັງເຊື່ອມຕໍ່ Always-on VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"ເຊື່ອມຕໍ່ VPN ແບບເປີດຕະຫຼອດເວລາແລ້ວ"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"VPN ແບບເປີດຕະຫຼອດເກີດຄວາມຜິດພາດ"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"ແຕະເພື່ອຕັ້ງຄ່າ"</string>
<string name="upload_file" msgid="2897957172366730416">"ເລືອກໄຟລ໌"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ບໍ່ໄດ້ເລືອກໄຟລ໌ເທື່ອ"</string>
<string name="reset" msgid="2448168080964209908">"ຣີເຊັດ"</string>
<string name="submit" msgid="1602335572089911941">"ສົ່ງຂໍ້ມູນ"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"ໂຫມດຂັບລົດຖືກເປີດແລ້ວ"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"ແຕະເພື່ອອອກຈາກໂໝດລົດ."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"ເປີດ​ການ​ປ່ອຍ​ສັນຍານ ຫຼື​ຮັອດສະປອດ​ແລ້ວ"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"ແຕະເພື່ອຕັ້ງຄ່າ."</string>
<string name="back_button_label" msgid="2300470004503343439">"ກັບຄືນ"</string>
<string name="next_button_label" msgid="1080555104677992408">"ຕໍ່ໄປ"</string>
<string name="skip_button_label" msgid="1275362299471631819">"ຂ້າມ"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"ເພີ່ມບັນຊີ"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"ເພີ່ມ"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"ປັບລົງ"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> ແຕະຄ້າງໄວ້."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"ເລື່ອນຂຶ້ນເພື່ອເພີ່ມ ແລະເລື່ອນລົງເພື່ອຫຼຸດ."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"ເພີ່ມນາທີ"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"ປັບນາທີລົງ"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"ບ່ອນຈັດເກັບຂໍ້ມູນ USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"ແກ້ໄຂ"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ເຕືອນກ່ຽວກັບການນຳໃຊ້ຂໍ້ມູນ"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"ແຕະເພື່ອເບິ່ງການນຳໃຊ້ ແລະ ການຕັ້ງຄ່າ."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"ໃຊ້​ຂໍ້​ມູນ 2G-3G ຮອດ​ຈຳ​ນວນ​ທີ່​ຈຳ​ກັດ​ແລ້ວ"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"ໃຊ້​ຂໍ້​ມູນ 4G ຮອດ​ຈຳ​ນວນ​ທີ່​ຈຳ​ກັດ​ແລ້ວ"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"ໃຊ້​ຂໍ້​ມູນ​ອິນ​ເຕີ​ເນັດ​ມື​ຖື​ຮອດ​ຈຳ​ນວນ​ທີ່​ຈຳ​ກັດ​ແລ້ວ"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"ໝົດກໍານົດການນຳໃຊ້ຂໍ້ມູນ Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> ເກີນທີ່ກໍາ​ນົດໄວ້."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"ຂໍ້ມູນແບັກກຣາວຖືກຈຳກັດແລ້ວ"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"ແຕະເພື່ອລຶບຂໍ້ຈຳກັດອອກ."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"ໃບຮັບຮອງຄວາມປອດໄພ"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ໃບຮັບຮອງບໍ່ຖືກຕ້ອງ."</string>
<string name="issued_to" msgid="454239480274921032">"ອອກໃຫ້ແກ່:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"ເລືອກ​ປີ"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ຖືກລຶບແລ້ວ"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"​ບ່ອນ​ເຮັດ​ວຽກ <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"ກົດປຸ່ມກັບຄືນຄ້າງໄວ້ເພື່ອເຊົາປັກໝຸດໜ້າຈໍນີ້."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"ກົດປຸ່ມພາບຮວມຄ້າງໄວ້ເພື່ອເຊົາປັກໝຸດໜ້າຈໍນີ້."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"ແອັບ​ຖືກ​ປັກ​ໝຸດ​ແລ້ວ: ບໍ່​ອະ​ນຸ​ຍາດ​ໃຫ້​ຖອນ​ປັກ​ໝຸດ​ຢູ່​ເທິງ​ອຸ​ປະ​ກອນ​ນີ້."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"​ປັກ​ໝຸດ​ໜ້າ​ຈໍ​ແລ້ວ"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"ຍົກ​ເລີກ​ການ​ປັກ​ໝຸນ​​ຫນ້າ​ຈໍ​ແລ້ວ"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index ec3adf6bbe39..66d6bf86b446 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -269,8 +269,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Gauti lango turinį"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Tikrinti lango, su kuriuo sąveikaujate, turinį."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Įjungti „Naršyti paliečiant“"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Paliesti elementai bus ištariami garsiai. Be to, ekrane gali būti naršoma naudojant gestus."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Įjungti patobulintą žiniatinklio pasiekiamumą"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Gali būti įdiegti scenarijai, kad būtų lengviau pasiekti programų turinį."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Stebėti jūsų įvedamą tekstą"</string>
@@ -669,8 +668,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Įveskite PUK ir naują PIN kodus"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kodas"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Naujas PIN kodas"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Palieskite, kad įves. slaptaž."</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Jei norite atrakinti, įveskite slaptažodį"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Jei norite atrakinti, įveskite PIN kodą"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Neteisingas PIN kodas."</string>
@@ -954,8 +952,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Kai kurios sistemos funkcijos gali neveikti"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Sistemos saugykloje nepakanka vietos. Įsitikinkite, kad yra 250 MB laisvos vietos, ir paleiskite iš naujo."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ vykdoma"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Palieskite, kad gautumėte daugiau informacijos arba galėtumėte sustabdyti programą."</string>
<string name="ok" msgid="5970060430562524910">"Gerai"</string>
<string name="cancel" msgid="6442560571259935130">"Atšaukti"</string>
<string name="yes" msgid="5362982303337969312">"Gerai"</string>
@@ -1029,8 +1026,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Paleidžiamos programos."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Užbaigiamas paleidimas."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Vykdoma „<xliff:g id="APP">%1$s</xliff:g>“"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Palieskite, kad perjungtumėte į programą"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Perjungti programas?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Jau vykdoma kita programa, kurią reikia sustabdyti prieš paleidžiant naują."</string>
<string name="old_app_action" msgid="493129172238566282">"Grįžti į <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1038,8 +1034,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Paleisti „<xliff:g id="OLD_APP">%1$s</xliff:g>“"</string>
<string name="new_app_description" msgid="1932143598371537340">"Sustabdyti seną programą jos neišsaugant."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"„<xliff:g id="PROC">%1$s</xliff:g>“ viršijo atminties limitą"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Atminties išklotinės duomenys surinkti; palieskite, kad bendrintumėte"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Bendrinti atminties išklotinę?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Procesas „<xliff:g id="PROC">%1$s</xliff:g>“ viršijo atminties limitą <xliff:g id="SIZE">%2$s</xliff:g>. Atminties išklotinė pasiekiama, kad galėtumėte bendrinti su jos kūrėju. Būkite atsargūs: šioje atminties išklotinėje gali būti jūsų asmeninės informacijos, kurią gali pasiekti programa."</string>
<string name="sendText" msgid="5209874571959469142">"Pasirinkite teksto veiksmą"</string>
@@ -1079,8 +1074,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"„Wi-Fi“ tinkle nėra interneto ryšio"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Palieskite, kad būtų rodomos parinktys."</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nepavyko prisijungti prie „Wi-Fi“"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" turi prastą interneto ryšį."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Leisti prisijungti?"</string>
@@ -1090,8 +1084,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Paleiskite „Wi-Fi Direct“. Bus išjungta „Wi-Fi“ programa / viešosios interneto prieigos taškas."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Nepavyko paleisti „Wi-Fi Direct“."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"„Wi-Fi Direct“ įjungta"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Palieskite, kad būtų rodomi nustatymai"</string>
<string name="accept" msgid="1645267259272829559">"Sutikti"</string>
<string name="decline" msgid="2112225451706137894">"Atmesti"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Pakvietimas išsiųstas"</string>
@@ -1143,11 +1136,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB (nuotraukų perkėlimas)"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB (MIDI)"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Prijungta prie USB priedo"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Palieskite, kad būtų rodoma daugiau parinkčių."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB derinimas prijungtas"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Palieskite, kad išjungtumėte USB derinimą."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Pateikiamas pranešimas apie riktą…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Bendrinti pranešimą apie riktą?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Bendrinamas pranešimas apie riktą..."</string>
@@ -1167,11 +1158,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Aptikta nauja <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Norint perkelti nuotraukas ir mediją"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Saugykla (<xliff:g id="NAME">%s</xliff:g>) sugadinta"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> sugadinta. Palieskite, kad ištaisytumėte."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Nepalaikoma saugykla (<xliff:g id="NAME">%s</xliff:g>)"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Šis įrenginys nepalaiko šios <xliff:g id="NAME">%s</xliff:g>. Palieskite, kad nustatytumėte palaikomu formatu."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> netikėtai pašalinta"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Išmontuokite <xliff:g id="NAME">%s</xliff:g> prieš pašalindami, kad neprarastumėte duomenų."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Pašalinta <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1243,18 +1232,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Prisijungiama prie visada įjungto VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Prisijungta prie visada įjungto VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Visada įjungto VPN klaida"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Palieskite, kad konfigūruotumėte"</string>
<string name="upload_file" msgid="2897957172366730416">"Pasirinkti failą"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nepasirinktas joks failas"</string>
<string name="reset" msgid="2448168080964209908">"Atstatyti"</string>
<string name="submit" msgid="1602335572089911941">"Pateikti"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Įgalintas automobilio režimas"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Palieskite, kad išeitumėte iš automobilio režimo."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Susietas ar aktyvus"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Palieskite, kad nustatytumėte."</string>
<string name="back_button_label" msgid="2300470004503343439">"Atgal"</string>
<string name="next_button_label" msgid="1080555104677992408">"Kitas"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Praleisti"</string>
@@ -1289,8 +1275,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Pridėti paskyrą"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Padidinti"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Sumažinti"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> palieskite ir palaikykite."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Slinkite aukštyn, kad padidintumėte, ir žemyn, kad sumažintumėte."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Padidinti minučių skaičių"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Sumažinti minučių skaičių"</string>
@@ -1334,8 +1319,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB atmintis"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Redaguoti"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Įspėjimas dėl duomenų naudojimo"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Pal. ir perž. naud. i. bei nust."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Pasiektas 2G–3G duomenų apribojimas"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Pasiektas 4G duomenų apribojimas"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Pasiektas mobiliųjų duomenų apribojimas"</string>
@@ -1347,8 +1331,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Viršytas „Wi-Fi“ duomenų aprib."</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> viršyta nurodyta riba."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Apriboti foniniai duomenys"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Palieskite ir pašal. apribojimą."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Saugos sertifikatas"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Šis sertifikatas galioja."</string>
<string name="issued_to" msgid="454239480274921032">"Išduota:"</string>
@@ -1566,10 +1549,8 @@
<string name="select_year" msgid="7952052866994196170">"Pasirinkite metus"</string>
<string name="deleted_key" msgid="7659477886625566590">"Ištrinta: <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Darbo <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Kad atsegtumėte šį ekraną, palieskite ir palaikykite „Atgal“."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Kad atsegtumėte šį ekraną, palieskite ir palaikykite „Apžvalga“."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Programa prisegta: šiame įrenginyje negalima atsegti."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekrano prisegtas"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekranas atsegtas"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 716cc777102d..060d9b632e02 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -266,8 +266,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Izgūt loga saturu."</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Skatīt tā loga saturu, ar kuru mijiedarbojaties."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktivizēt funkciju “Pārlūkot pieskaroties”."</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Tiks izrunāti to vienumu nosaukumi, kuriem pieskarsieties, un ekrānu varēsiet pārlūkot ar žestiem."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Ieslēgt uzlaboto tīmekļa pieejamību."</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Var tikt instalēti skripti, lai padarītu lietotņu saturu pieejamāku."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Skatīt ierakstīto tekstu."</string>
@@ -666,8 +665,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Ievadiet PUK kodu un jaunu PIN kodu."</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kods"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Jauns PIN kods"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Pieskar., lai ievadītu paroli"</font>"."</string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Ievadiet paroli, lai atbloķētu."</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Lai atbloķētu, ievadiet PIN."</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN kods nav pareizs."</string>
@@ -939,8 +937,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Dažas sistēmas funkcijas var nedarboties."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Sistēmai pietrūkst vietas. Atbrīvojiet vismaz 250 MB vietas un restartējiet ierīci."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> darbojas"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Pieskarieties, lai iegūtu plašāku informāciju vai apturētu lietotnes darbību."</string>
<string name="ok" msgid="5970060430562524910">"Labi"</string>
<string name="cancel" msgid="6442560571259935130">"Atcelt"</string>
<string name="yes" msgid="5362982303337969312">"Labi"</string>
@@ -1014,8 +1011,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Notiek lietotņu palaišana."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Tiek pabeigta sāknēšana."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> darbojas"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Pieskarieties, lai pārslēgtos uz lietotni."</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Vai pārslēgt lietotnes?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Jau darbojas cita lietotne. Tās darbība ir jāaptur, lai varētu startēt jaunu lietotni."</string>
<string name="old_app_action" msgid="493129172238566282">"Atgriezties: <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1023,8 +1019,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Startēt: <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Aptur vecās lietotnes darbību, neko nesaglabājot."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Process <xliff:g id="PROC">%1$s</xliff:g> pārsniedza atmiņas ierobežojumu."</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Tika apkopots kaudzes izraksts. Pieskarieties, lai to kopīgotu."</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Vai kopīgot kaudzes izrakstu?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Process <xliff:g id="PROC">%1$s</xliff:g> pārsniedza procesu atmiņas ierobežojumu (<xliff:g id="SIZE">%2$s</xliff:g>). Tika apkopots kaudzes izraksts, ko varat kopīgot ar procesa izstrādātāju. Ņemiet vērā: kaudzes izrakstā var būt ietverta jūsu personas informācija, kurai var piekļūt lietojumprogramma."</string>
<string name="sendText" msgid="5209874571959469142">"Izvēlieties darbību tekstam"</string>
@@ -1062,8 +1057,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi tīklā nav piekļuves internetam."</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Pieskarieties, lai skatītu iespējas."</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nevarēja izveidot savienojumu ar Wi-Fi."</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ir slikts interneta savienojums."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Vai atļaut savienojumu?"</string>
@@ -1073,8 +1067,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Palaist programmu Wi-Fi Direct. Tādējādi tiks izslēgta Wi-Fi klienta/tīklāja darbība."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Nevarēja palaist programmu Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct ir ieslēgts"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Pieskarieties, lai skatītu iestatījumus."</string>
<string name="accept" msgid="1645267259272829559">"Piekrist"</string>
<string name="decline" msgid="2112225451706137894">"Noraidīt"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Ielūgums ir nosūtīts."</string>
@@ -1126,11 +1119,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB savienojums fotoattēlu pārsūtīšanai"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB savienojums MIDI režīmā"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Ir izveidots savienojums ar USB piederumu."</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Pieskarieties, lai skatītu citas iespējas."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB atkļūdošana ir pievienota."</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Pieskarieties, lai atspējotu USB atkļūdošanu."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Notiek kļūdas pārskata izveide…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Vai kopīgot kļūdas pārskatu?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Notiek kļūdas pārskata kopīgošana…"</string>
@@ -1150,11 +1141,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Tika atrasta jauna <xliff:g id="NAME">%s</xliff:g>."</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Fotoattēlu un satura pārsūtīšanai."</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Bojāts datu nesējs (<xliff:g id="NAME">%s</xliff:g>)"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"Datu nesējs <xliff:g id="NAME">%s</xliff:g> ir bojāts. Pieskarieties, lai labotu."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Neatbalstīts datu nesējs (<xliff:g id="NAME">%s</xliff:g>)"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Šī ierīce neatbalsta datu nesēju <xliff:g id="NAME">%s</xliff:g>. Pieskarieties, lai iestatītu to atbalstītā formātā."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> tika negaidīti izņemta"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Pirms izņemšanas atvienojiet <xliff:g id="NAME">%s</xliff:g>, lai nezaudētu datus."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> tika izņemta"</string>
@@ -1226,18 +1215,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Notiek savienojuma izveide ar vienmēr ieslēgtu VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Izveidots savienojums ar vienmēr ieslēgtu VPN."</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Kļūda saistībā ar vienmēr ieslēgtu VPN"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Pieskarieties, lai konfigurētu."</string>
<string name="upload_file" msgid="2897957172366730416">"Izvēlēties failu"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Neviens fails nav izvēlēts"</string>
<string name="reset" msgid="2448168080964209908">"Atiestatīt"</string>
<string name="submit" msgid="1602335572089911941">"Iesniegt"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Automobiļa režīms ir iespējots."</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Pieskarieties, lai izietu no automašīnas režīma."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Piesaiste vai tīklājs ir aktīvs."</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Pieskarieties, lai iestatītu."</string>
<string name="back_button_label" msgid="2300470004503343439">"Atpakaļ"</string>
<string name="next_button_label" msgid="1080555104677992408">"Tālāk"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Izlaist"</string>
@@ -1271,8 +1257,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Pievienot kontu"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Palielināt"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Samazināt"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g>: pieskarieties un turiet nospiestu."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Velciet uz augšu, lai palielinātu vērtību, un uz leju, lai to samazinātu."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Norādīt vēlākas minūtes"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Norādīt agrākas minūtes"</string>
@@ -1316,8 +1301,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB atmiņa"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Rediģēt"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Datu izmantošanas brīdinājums"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Piesk., lai sk. lietoj. un iest."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Sasniegts 2G-3G datu ierobež."</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Sasniegts 4G datu ierobežojums"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Sasniegts mob. datu ierobežojums"</string>
@@ -1329,8 +1313,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi datu ierobež. pārsniegts"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> virs norādītā ierobežojuma."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Fona dati ir ierobežoti."</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Pieskar., lai noņemtu ierobežoj."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Drošības sertifikāts"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Sertifikāts ir derīgs."</string>
<string name="issued_to" msgid="454239480274921032">"Izdots:"</string>
@@ -1547,10 +1530,8 @@
<string name="select_year" msgid="7952052866994196170">"Atlasiet gadu."</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> tika dzēsts."</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Darbā: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Lai atspraustu šo ekrānu, pieskarieties pogai “Atpakaļ” un turiet to."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Lai atspraustu šo ekrānu, pieskarieties pogai “Kopsavilkums” un turiet to."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Lietotne ir piesprausta. Atspraušana šajā ierīcē nav atļauta."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekrāns ir piesprausts"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekrāns ir atsprausts"</string>
diff --git a/core/res/res/values-mk-rMK/strings.xml b/core/res/res/values-mk-rMK/strings.xml
index 6261cfaaab0c..21dc29fe1523 100644
--- a/core/res/res/values-mk-rMK/strings.xml
+++ b/core/res/res/values-mk-rMK/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Врати содржина на прозорец"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Провери ја содржината на прозорецот со кој се комуницира."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Вклучи „Истражувај со допир“"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Допрените ставки ќе се изговорат на глас и екранот може да се истражува со движења."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Вклучи подобрена пристапност кон веб"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"За содржината на апликацијата да биде подостапна, може да се инсталираат скрипти."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Набљудувај го напишаниот текст"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Внесете ПУК и нов ПИН-код"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"ПУК код"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Нов ПИН-код"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Допрете за да внесете лозинка"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Впишете ја лозинката за да се отклучи"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Впишете ПИН за да се отклучи"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Погрешен ПИН код."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Некои системски функции може да не работат"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Нема доволно меморија во системот. Проверете дали има слободен простор од 250 МБ и рестартирајте."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> работи"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Допрете за повеќе информации или за сопирање на апликацијата."</string>
<string name="ok" msgid="5970060430562524910">"Во ред"</string>
<string name="cancel" msgid="6442560571259935130">"Откажи"</string>
<string name="yes" msgid="5362982303337969312">"Во ред"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Се стартуваат апликациите."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Подигањето завршува."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> работи"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Допрете за да се префрли на апликација"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Промени апликации?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Веќе работи една апликација што треба да ја запрете пред да стартувате нова."</string>
<string name="old_app_action" msgid="493129172238566282">"Врати се на <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Вклучи <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Запрете ја старата апликација без зачувување."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> го надмина ограничувањето на меморијата"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Сликата од меморијата е собрана. Допрете за споделување"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Сподели слика од меморија?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Процесот <xliff:g id="PROC">%1$s</xliff:g> го надмина ограничувањето на меморијата на својот процес од <xliff:g id="SIZE">%2$s</xliff:g>. Достапна ви е слика од меморијата да ја споделите со неговиот програмер. Бидете внимателни: сликата од меморијата може да содржи кои било од вашите лични информации до кои апликацијата има пристап."</string>
<string name="sendText" msgid="5209874571959469142">"Избери дејство за текст"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi нема пристап на интернет"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Допрете за опции"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Не можеше да се поврзе со Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" има слаба конекција на интернет."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Дозволете поврзување?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Започни Wi-Fi Direct. Ова ќе го исклучи Wi-Fi клиентот/хточката на пристап."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Не можеше да се стартува Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct е вклучена"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Допрете за поставки"</string>
<string name="accept" msgid="1645267259272829559">"Прифати"</string>
<string name="decline" msgid="2112225451706137894">"Одбиј"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Поканата е испратена"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"УСБ за пренос на фотографии"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"УСБ за МИДИ"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Поврзан со УСБ додаток"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Допрете за повеќе опции."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Поврзано е отстранување грешки преку УСБ"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Допрете за да се оневозможи отстранувањето грешки преку USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Се зема извештајот за грешки…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Да се сподели извештајот за грешки?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Се споделува извештај за грешки…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Откриена е нова <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"За пренесување фотографии и медиуми"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Оштетена <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> е оштетена. Допрете за поправање."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Неподдржана <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Уредот не ја поддржува оваа <xliff:g id="NAME">%s</xliff:g>. Допрете за поставување во поддржан формат."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> неочекувано е отстранета"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Откачете ја <xliff:g id="NAME">%s</xliff:g> пред да ја отстраните за да избегнете губење на податоците"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Отстранета <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Поврзување со секогаш вклучена VPN..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Поврзани со секогаш вклучена VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Грешка на секогаш вклучена VPN"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Допрете за конфигурирање"</string>
<string name="upload_file" msgid="2897957172366730416">"Избери датотека"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Не е избрана датотека"</string>
<string name="reset" msgid="2448168080964209908">"Ресетирај"</string>
<string name="submit" msgid="1602335572089911941">"Поднеси"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Овозможен е режим на автомобил"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Допрете за да излезете од автомобилски режим."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Поврзувањето или точката на пристап се активни"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Допрете за поставување."</string>
<string name="back_button_label" msgid="2300470004503343439">"Назад"</string>
<string name="next_button_label" msgid="1080555104677992408">"Следно"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Прескокни"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Додај сметка"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Зголеми"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Намали"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> допри и задржи."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Лизгај нагоре за да се зголеми и надолу за да се намали."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Зголеми минута"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Намали минута"</string>
@@ -1303,8 +1288,7 @@
<string name="storage_usb" msgid="3017954059538517278">"УСБ меморија"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Уреди"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Предупредување за користење податоци"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Допрете за употреба и поставки."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Постигна лимит за 2G-3G податоци"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Постигнат лимит за 4G податоци"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Постигна лимит за мобилни подат."</string>
@@ -1316,8 +1300,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Надминат лимит на Wi-Fi податоци"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> над назначената граница."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Подат. од заднина се ограничени"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Допрете за да се отст. огранич."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Сертификат за безбедност"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Овој сертификат е важечки."</string>
<string name="issued_to" msgid="454239480274921032">"Издадено на:"</string>
@@ -1533,10 +1516,8 @@
<string name="select_year" msgid="7952052866994196170">"Избери година"</string>
<string name="deleted_key" msgid="7659477886625566590">"Избришано <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Работа <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"За откачување на екранов, допрете и задржете Назад."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"За откачување на екранов, допрете и задржете Краток преглед."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Апликацијата е закачена: откачување не е дозволено на уредов."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Екранот е закачен"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Екранот е откачен"</string>
diff --git a/core/res/res/values-ml-rIN/strings.xml b/core/res/res/values-ml-rIN/strings.xml
index 074cd593e5fa..9149c4b10c95 100644
--- a/core/res/res/values-ml-rIN/strings.xml
+++ b/core/res/res/values-ml-rIN/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"വിൻഡോ ഉള്ളടക്കം വീണ്ടെടുക്കുക"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"നിങ്ങൾ സംവദിക്കുന്ന ഒരു വിൻഡോയുടെ ഉള്ളടക്കം പരിശോധിക്കുക."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"സ്‌പർശനം വഴി പര്യവേക്ഷണം ചെയ്യുക ഓൺ ചെയ്യുക"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"ടാപ്പുചെയ്ത ഇനങ്ങൾ ഉച്ചത്തിൽ പറയപ്പെടും, ജെസ്റ്ററുകൾ ഉപയോഗിച്ച് സ്‌ക്രീൻ അടുത്തറിയാവുന്നതാണ്."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"മെച്ചപ്പെടുത്തിയ വെബ് പ്രവേശനക്ഷമത ഓണാക്കുക"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"അപ്ലിക്കേഷൻ ഉള്ളടക്കം കൂടുതൽ ആക്‌സസ്സുചെയ്യാൻ കഴിയുന്നതാക്കാൻ സ്‌ക്രിപ്റ്റുകൾ ഇൻസ്റ്റാളുചെയ്യാനിടയുണ്ട്."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"നിങ്ങൾ ടൈപ്പുചെയ്യുന്ന വാചകം നിരീക്ഷിക്കുക"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK, പുതിയ പിൻ കോഡ് എന്നിവ ടൈപ്പുചെയ്യുക"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK കോഡ്"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"പുതിയ പിൻ കോഡ്"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"പാസ്‌വേഡ് ടൈപ്പുചെയ്യുന്നതിന് ടാപ്പുചെയ്യുക"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"അൺലോക്കുചെയ്യുന്നതിന് പാസ്‌വേഡ് ടൈപ്പുചെയ്യുക"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"അൺലോക്കുചെയ്യുന്നതിന് പിൻ ടൈപ്പുചെയ്യുക"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"പിൻ കോഡ് തെറ്റാണ്."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"ചില സിസ്റ്റം പ്രവർത്തനങ്ങൾ പ്രവർത്തിക്കണമെന്നില്ല."</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"സിസ്‌റ്റത്തിനായി മതിയായ സംഭരണമില്ല. 250MB സൗജന്യ സംഭരണമുണ്ടെന്ന് ഉറപ്പുവരുത്തി പുനരാരംഭിക്കുക."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> പ്രവർത്തിക്കുന്നു"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"കൂടുതൽ വിവരങ്ങൾക്ക് ലഭിക്കുന്നതിനോ ആപ്പ് നിർത്തുന്നതിനോ ടാപ്പുചെയ്യുക."</string>
<string name="ok" msgid="5970060430562524910">"ശരി"</string>
<string name="cancel" msgid="6442560571259935130">"റദ്ദാക്കുക"</string>
<string name="yes" msgid="5362982303337969312">"ശരി"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"അപ്ലിക്കേഷനുകൾ ആരംഭിക്കുന്നു."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"ബൂട്ട് ചെയ്യൽ പൂർത്തിയാകുന്നു."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> പ്രവർത്തിക്കുന്നു"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"ആപ്പിലേക്ക് മാറുന്നതിന് ടാപ്പുചെയ്യുക"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"അപ്ലിക്കേഷനുകൾ മാറണോ?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"നിങ്ങൾക്ക് പുതിയ ഒരു അപ്ലിക്കേഷൻ ആരംഭിക്കാനാവുന്നതിന് മുമ്പ്, ഇതിനകം പ്രവർത്തിക്കുന്ന മറ്റ് അപ്ലിക്കേഷൻ നിർത്തണം."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> എന്നതിലേക്ക് മടങ്ങുക"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> ആരംഭിക്കുക"</string>
<string name="new_app_description" msgid="1932143598371537340">"സംരക്ഷിക്കാതെ തന്നെ പഴയ അപ്ലിക്കേഷൻ നിർത്തുക."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> മെമ്മറി പരിധി കവിഞ്ഞു"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"ഹീപ്പ് ഡംപ് ശേഖരിച്ചു; പങ്കിടാൻ ടാപ്പുചെയ്യുക"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"ഹീപ്പ് ഡംപ് പങ്കിടണോ?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> പ്രോസസ്സ് അതിന്റെ മെമ്മറി പരിധിയായ <xliff:g id="SIZE">%2$s</xliff:g> കവിഞ്ഞു. അതിന്റെ ഡവലപ്പറുമായി പങ്കിടാൻ ഒരു ഹീപ്പ് ഡംപ് നിങ്ങൾക്ക് ലഭ്യമാണ്. ശ്രദ്ധിക്കുക: ഈ ഹീപ്പ് ഡംപിൽ അപ്ലിക്കേഷന് ആക്‌സസ്സുള്ള ഏതെങ്കിലും സ്വകാര്യ വിവരങ്ങൾ അടങ്ങിയിരിക്കാം."</string>
<string name="sendText" msgid="5209874571959469142">"വാചകസന്ദേശത്തിനായി ഒരു പ്രവർത്തനം തിരഞ്ഞെടുക്കുക"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi-യിൽ ഇന്റർനെറ്റ് ആക്‌സസ് ഇല്ല."</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"ഓപ്ഷനുകൾക്ക് ടാപ്പുചെയ്യുക"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi-ലേക്ക് കണക്‌റ്റുചെയ്യാൻ കഴിഞ്ഞില്ല"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" മോശം ഇന്റർനെറ്റ് കണക്ഷനാണുള്ളത്."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"കണക്ഷൻ അനുവദിക്കണോ?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"വൈഫൈ ഡയറക്റ്റ് ആരംഭിക്കുക. ഇത് വൈഫൈ ക്ലയന്റ്/ഹോട്ട്‌സ്‌പോട്ട് ഓഫാക്കും."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"വൈഫൈ ഡയറക്റ്റ് ആരംഭിക്കാനായില്ല."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"വൈഫൈ ഡയറക്‌ട് ഓണാണ്"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"ക്രമീകരണത്തിന് ടാപ്പുചെയ്യുക"</string>
<string name="accept" msgid="1645267259272829559">"അംഗീകരിക്കുക"</string>
<string name="decline" msgid="2112225451706137894">"നിരസിക്കുക"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ക്ഷണം അയച്ചു"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ഫോട്ടോ കൈമാറ്റത്തിനായുള്ള USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI-യ്‌ക്കായുള്ള USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"ഒരു USB ആക്‌സസ്സറി കണക്റ്റുചെയ്‌തു"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"കൂടുതൽ ഓപ്ഷനുകൾക്ക് ടാപ്പുചെയ്യുക."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB ഡീബഗ്ഗിംഗ് കണക്‌റ്റുചെയ്‌തു"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB ഡീബഗ്ഗിംഗ് പ്രവർത്തനരഹിതമാക്കാൻ ടാപ്പുചെയ്യുക."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"ബഗ് റിപ്പോർട്ട് എടുക്കുന്നു…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"ബഗ് റിപ്പോർട്ട് പങ്കിടണോ?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"ബഗ് റിപ്പോർട്ട് പങ്കിടുന്നു…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"പുതിയ <xliff:g id="NAME">%s</xliff:g> എന്നതിനെ തിരിച്ചറിഞ്ഞു"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ഫോട്ടോകളും മീഡിയയും ട്രാൻസ്‌ഫർ ചെയ്യാൻ"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"കേടായ <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> കേടായിരിക്കുന്നു. പരിഹരിക്കാൻ ടാപ്പുചെയ്യുക."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"പിന്തുണയില്ലാത്ത <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"ഈ ഉപകരണം <xliff:g id="NAME">%s</xliff:g> പിന്തുണയ്ക്കുന്നതല്ല. പിന്തുണയുള്ള ഫോർമാറ്റിൽ സജ്ജമാക്കുന്നതിന് ടാപ്പുചെയ്യുക."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> അപ്രതീക്ഷിതമായി നീക്കംചെയ്‌തു"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"വിവരങ്ങൾ നഷ്‌ടപ്പെടുന്നത് ഒഴിവാക്കാൻ നീക്കംചെയ്യുന്നതിനുമുമ്പ് <xliff:g id="NAME">%s</xliff:g> അൺ‌മൗണ്ടുചെയ്യുക"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> നീക്കംചെയ്‌തു"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"എല്ലായ്‌പ്പോഴും ഓണായിരിക്കുന്ന VPN കണക്റ്റുചെയ്യുന്നു…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"എല്ലായ്‌പ്പോഴും ഓണായിരിക്കുന്ന VPN കണക്റ്റുചെയ്‌തു"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"എല്ലായ്‌പ്പോഴും ഓണായിരിക്കുന്ന VPN പിശക്"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"കോൺഫിഗർ ചെയ്യുന്നതിന് ടാപ്പുചെയ്യുക"</string>
<string name="upload_file" msgid="2897957172366730416">"ഫയല്‍‌ തിരഞ്ഞെടുക്കുക"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ഫയലൊന്നും തിരഞ്ഞെടുത്തില്ല"</string>
<string name="reset" msgid="2448168080964209908">"പുനഃസജ്ജമാക്കുക"</string>
<string name="submit" msgid="1602335572089911941">"സമർപ്പിക്കുക"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"കാർ മോഡ് പ്രവർത്തനക്ഷമമാക്കി"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"കാർ മോഡിൽ നിന്ന് പുറത്തുകടക്കാൻ ടാപ്പുചെയ്യുക."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"ടെതറിംഗ് അല്ലെങ്കിൽ ഹോട്ട്സ്‌പോട്ട് സജീവമാണ്"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"സജ്ജമാക്കാൻ ടാപ്പുചെയ്യുക."</string>
<string name="back_button_label" msgid="2300470004503343439">"മടങ്ങുക"</string>
<string name="next_button_label" msgid="1080555104677992408">"അടുത്തത്"</string>
<string name="skip_button_label" msgid="1275362299471631819">"ഒഴിവാക്കുക"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"അക്കൗണ്ട് ചേർക്കുക"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"വർദ്ധിപ്പിക്കുക"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"കുറയ്‌ക്കുക"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> സ്‌പർശിച്ച് പിടിക്കുക."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"വർദ്ധിപ്പിക്കാൻ മുകളിലേയ്‌ക്കും കുറയ്‌ക്കാൻ താഴേയ്‌ക്കും സ്ലൈഡുചെയ്യുക"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"മിനിറ്റ് വർദ്ധിപ്പിക്കുക"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"മിനിറ്റ് കുറയ്‌ക്കുക"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB സ്റ്റോറേജ്"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"എഡിറ്റുചെയ്യുക"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ഡാറ്റ ഉപയോഗ മുന്നറിയിപ്പ്"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"ഉപയോഗവും ക്രമീകരണവും കാണാൻ ടാപ്പുചെയ്യുക."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G ഡാറ്റ പരിധിയിലെത്തി"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G ഡാറ്റ പരിധിയിലെത്തി"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"സെല്ലുലാർ ഡാറ്റ പരിധിയിലെത്തി"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"വൈഫൈ ഡാറ്റ പരിധി കവിഞ്ഞു"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"നിശ്ചിത പരിധിയിലും <xliff:g id="SIZE">%s</xliff:g> കൂടുതലാണ്."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"പശ്ചാത്തല ഡാറ്റ പരിമിതപ്പെടുത്തി"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"നിയന്ത്രണം നീക്കംചെയ്യാൻ ടാപ്പുചെയ്യുക."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"സുരക്ഷ സർട്ടിഫിക്കറ്റ്"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ഈ സര്‍ട്ടിഫിക്കറ്റ് സാധുതയുള്ളതാണ്."</string>
<string name="issued_to" msgid="454239480274921032">"ഇതിലേക്ക് നൽകി:"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"വർഷം തിരഞ്ഞെടുക്കുക"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ഇല്ലാതാക്കി"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"ഔദ്യോഗികം <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"ഈ സ്‌ക്രീൻ അൺപിൻ ചെയ്യാൻ, ബാക്ക് ബട്ടൺ സ്‌പർശിച്ച് പിടിക്കുക"</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"ഈ സ്‌ക്രീൻ അൺപിൻ ചെയ്യാൻ, ചുരുക്കവിവരണം സ്‌പർശിച്ച് പിടിക്കുക."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"അപ്ലിക്കേഷൻ പിൻ ചെയ്‌തു: ഈ ഉപകരണത്തിൽ അൺപിൻ ചെയ്യാനാവില്ല."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"സ്ക്രീൻ പിൻ ചെയ്തു"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"സ്ക്രീൻ അൺപിൻ ചെയ്തു"</string>
diff --git a/core/res/res/values-mn-rMN/strings.xml b/core/res/res/values-mn-rMN/strings.xml
index 4444062b4223..6c345cf1035b 100644
--- a/core/res/res/values-mn-rMN/strings.xml
+++ b/core/res/res/values-mn-rMN/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Цонхны контентыг авах"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Таны харилцан үйлчлэх цонхны контентоос шалгах."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Хүрч танихыг асаах"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Товшсон зүйлсийг чангаар хэлэх ба дэлгэцийг дохио ашиглан таних боломжтой."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Сайжруулсан веб хандалтыг асаах"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Апп контентод илүү хялбар хандуулахын тулд скриптыг суулгана."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Бичсэн текстээ ажиглах"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK-г бичээд шинэ PIN код оруулна уу"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK код"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Шинэ PIN код"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Нууц үг шивэх бол товшино уу"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Тайлах нууц үгийг бичнэ үү"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Тайлах PIN-г оруулна уу"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Буруу PIN код."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Зарим систем функц ажиллахгүй байна"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Системд хангалттай сан байхгүй байна. 250MБ чөлөөтэй зай байгаа эсэхийг шалгаад дахин эхлүүлнэ үү."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ажиллаж байна"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Илүү мэдээлэл авах эсвэл апп-г зогсоохын тулд товшино уу."</string>
<string name="ok" msgid="5970060430562524910">"Тийм"</string>
<string name="cancel" msgid="6442560571259935130">"Цуцлах"</string>
<string name="yes" msgid="5362982303337969312">"Тийм"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Апп-г эхлүүлж байна."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Эхлэлийг дуусгаж байна."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> ажиллаж байна"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Апп руу шилжүүлэх бол товшино уу"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Апп сэлгэх үү?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Та шинэ апп-г ажиллуулахын өмнө зогсоох ёстой өөр апп ажиллаж байна."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g>-руу буцах"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> эхлүүлэх"</string>
<string name="new_app_description" msgid="1932143598371537340">"Хуучин апп-г хадгалахгүйгээр зогсооно уу."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> санах ойн хязгаараас давсан"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Хэт их мэдээлэл цуглуулсан байна. Хуваалцахын тулд товшино уу"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Хэт их хуримтлагдсан мэдээллийг хуваалцах уу?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Энэ үйл явц <xliff:g id="PROC">%1$s</xliff:g> нь үйл ажиллагааны санах ойн хязгаар болох <xliff:g id="SIZE">%2$s</xliff:g> хэмжээг давсан байна. Та хэт их хуримтлагдсан мэдээллийг тэдгээрийн өөрсдийнх нь хөгжүүлэгчтэй хуваалцах боломжтой. Болгоомжтой байгаарай: энэхүү хэт их хуримтлагдсан мэдээлэлд аппликейшнаас нэвтрэх боломжтой таны хувийн мэдээлэл агуулагдсан байж болно."</string>
<string name="sendText" msgid="5209874571959469142">"Текст илгээх үйлдлийг сонгох"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi-д интернет холболт байхгүй байна"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Сонголт хийхийн тулд товшино уу"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi-д холбогдож чадсангүй"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" Интернет холболт муу байна."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Холболтыг зөвшөөрөх үү?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Шуудыг эхлүүлнэ үү. Энэ нь Wi-Fi клиент/холболтын цэг унтраана."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Шуудыг эхлүүлж чадсангүй."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Шууд асав"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Тохиргоо хийхийн тулд товшино уу"</string>
<string name="accept" msgid="1645267259272829559">"Зөвшөөрөх"</string>
<string name="decline" msgid="2112225451706137894">"Татгалзах"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Урилга илгээгдсэн"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Фото зураг шилжүүлэх USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI-ийн USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB төхөөрөмжид холбогдов"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Бусад сонголтыг харахын тулд товшино уу."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB дебаг холбогдсон"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB-н алдаа засварлахыг идэвхгүй болгохын тулд товшино уу."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Алдааны тайланг авч байна..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Алдааны тайланг хуваалцах уу?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Алдааны тайланг хуваалцаж байна..."</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Шинэ <xliff:g id="NAME">%s</xliff:g> илэрлээ"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Зураг, медиа шилжүүлэхэд зориулсан"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> гэмтсэн"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> эвдэрсэн байна. Засахын тулд товшино уу."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Дэмжээгүй <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Энэ төхөөрөмж нь <xliff:g id="NAME">%s</xliff:g>-г дэмждэггүй. Дэмжигдсэн хэлбэршүүлэлтэд тохируулахын тулд товшино уу."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g>-ыг гэнэт гаргасан байна"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Өгөгдөл алдагдахаас сэргийлж <xliff:g id="NAME">%s</xliff:g>-ыг гаргахаас өмнө салга"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g>-ыг гаргасан"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Байнгын VPN-д холбогдож байна..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Байнга VPN холбоотой"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Байнгын VPN алдаа"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Тохируулахын тулд товшино уу"</string>
<string name="upload_file" msgid="2897957172366730416">"Файл сонгох"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Сонгосон файл байхгүй"</string>
<string name="reset" msgid="2448168080964209908">"Бүгдийг цэвэрлэх"</string>
<string name="submit" msgid="1602335572089911941">"Илгээх"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Машины горим идэвхтэй болов"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Машины горимоос гарахын тулд товшино уу."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Модем болгох эсвэл идэвхтэй цэг болгох"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Тохируулахын тулд товшино уу."</string>
<string name="back_button_label" msgid="2300470004503343439">"Буцах"</string>
<string name="next_button_label" msgid="1080555104677992408">"Дараах"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Алгасах"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Аккаунт нэмэх"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Өсөх"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Бууруулах"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> хүрээд, хүлээнэ үү."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Өсгөх бол дээшээ бууруулах бол доошоо гулсуулна уу."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Минут өсгөх"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Минутыг бууруулах"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB сан"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Засах"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Дата хэрэглээний анхааруулга"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Хэрэглээ, тохиргоог харах бол товш."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G дата хязгаарт хүрсэн"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G дата хязгаарт хүрсэн"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Үүрэн дата хязгаарт хүрсэн"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi дата хязгаар хэтрэв"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> заасан хязгаарыг давав."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Арын дата хязгаарлагдсан"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Хязгаарлалтыг устгах бол товш."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Аюулгүй сертификат"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Сертификат хүчинтэй."</string>
<string name="issued_to" msgid="454239480274921032">"Гаргуулсан:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Жилийг сонгоно уу"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> устсан"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Ажлын <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Энэ дэлгэцийг эхэнд нээхийг болиулахын тулд Буцах товчлуурыг дараад, хүлээнэ үү."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Энэ дэлгэцийг эхэнд нээхийг болиулахын тулд Тоймыг дараад, хүлээнэ үү."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"App-ыг тусгайлан тэмдэглэсэн байна: Энэ төхөөрөмж дээр тусгайлан тэмдэглэсэн сонголтыг устгах боломжгүй."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Дэлгэцийг тогтоосон"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Дэлгэцийг сулласан"</string>
diff --git a/core/res/res/values-mr-rIN/strings.xml b/core/res/res/values-mr-rIN/strings.xml
index e04b108f6db0..3fa1fdf3be32 100644
--- a/core/res/res/values-mr-rIN/strings.xml
+++ b/core/res/res/values-mr-rIN/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"विंडो सामग्री पुनर्प्राप्त करा"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"आपण परस्‍परसंवाद करीत असलेल्‍या विंडोची सामग्री तपासा."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"स्पर्श करून अन्वेषण चालू करा"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"टॅप केलेले आयटम मोठ्‍याने बोलले जातील आणि जेश्चरचा वापर करून स्क्रीन एक्सप्लोर केली जाऊ शकते."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"वर्धित केलेली वेब प्रवेशयोग्यता चालू करा"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"अ‍ॅप सामग्री अधिक प्रवेशयोग्‍य बनविण्‍यासाठी कदाचित स्‍क्रिप्‍ट स्‍थापित केली जाऊ शकतात."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"आपण टाइप करता त्या मजकुराचे निरीक्षण करा"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK आणि नवीन पिन कोड टाइप करा"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK कोड"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"नवीन पिन कोड"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"संकेतशब्द टाइप करण्यासाठी टॅप करा"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"अनलॉक करण्यासाठी संकेतशब्द टाइप करा"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"अनलॉक करण्यासाठी पिन टाइप करा"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"अयोग्य पिन कोड."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"काही सिस्टम कार्ये कार्य करू शकत नाहीत"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"सिस्टीमसाठी पुरेसे संचयन नाही. आपल्याकडे 250MB मोकळे स्थान असल्याचे सुनिश्चित करा आणि रीस्टार्ट करा."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> चालत आहे"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"अधिक माहितीसाठी किंवा अ‍ॅप थांबविण्यासाठी टॅप करा."</string>
<string name="ok" msgid="5970060430562524910">"ठीक"</string>
<string name="cancel" msgid="6442560571259935130">"रद्द करा"</string>
<string name="yes" msgid="5362982303337969312">"ठीक"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"अॅप्स प्रारंभ करत आहे."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"बूट समाप्त होत आहे."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> चालत आहे"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"अॅपवर स्विच करण्यासाठी टॅप करा"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"अॅप्स स्विच करायचे?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"आपण एक नवीन प्रारंभ करण्यापूर्वी आधीपासून चालणारा दुसरा अॅप थांबविणे आवश्यक आहे."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> कडे परत"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> प्रारंभ करा"</string>
<string name="new_app_description" msgid="1932143598371537340">"जतन न करता जुना अॅप थांबवा."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ने मेमेरी मर्यादा वाढविली"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"हीप डंप संकलित केला गेला आहे; सामायिक करण्यासाठी टॅप करा"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"हीप डंप सामायिक करायचे?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> प्रक्रियेने त्याची <xliff:g id="SIZE">%2$s</xliff:g> ची प्रक्रिया मेमरी मर्यादा ओलांडली आहे. त्याच्या विकासकासह सामायिक करण्यासाठी आपल्याकरिता हीप डंप उपलब्ध आहे. सावधगिरी बाळगा: या हीप डंपमध्ये आपली कोणतीही वैयक्तिक माहिती असू शकते ज्यात अनुप्रयोग प्रवेश करू शकतो."</string>
<string name="sendText" msgid="5209874571959469142">"मजकुरासाठी क्रिया निवडा"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"वाय-फाय मध्‍ये इंटरनेट प्रवेश नाही"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"पर्यायांसाठी टॅप करा"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"वाय-फाय ला कनेक्ट करू शकलो नाही"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" खराब इंटरनेट कनेक्शन आहे."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"कनेक्शनला अनुमती द्यायची?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"वाय-फाय थेट प्रारंभ करा. हे वाय-फाय क्लायंट/हॉटस्पॉट बंद करेल."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"वाय-फाय थेट प्रारंभ करू शकलो नाही."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"वाय-फाय थेट चालू आहे"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"सेटिंग्जसाठी टॅप करा"</string>
<string name="accept" msgid="1645267259272829559">"स्वीकार करा"</string>
<string name="decline" msgid="2112225451706137894">"नकार द्या"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"आमंत्रण पाठविले"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"फोटो स्थानांतरणासाठी USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI साठी USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB उपसाधनावर कनेक्ट केले"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"अधिक पर्यायांसाठी टॅप करा."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB डीबग करणे कनेक्‍ट केले"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB डीबग करणे अक्षम करण्यासाठी टॅप करा."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"दोष अहवाल घेत आहे..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"बग अहवाल सामायिक करायचा?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"दोष अहवाल सामायिक करीत आहे..."</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"नवीन <xliff:g id="NAME">%s</xliff:g> आढळले"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"फोटो आणि मीडिया स्थानांतरित करण्‍यासाठी"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> दूषित झालेले"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> दूषित आहे. निराकरण करण्यासाठी टॅप करा."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> असमर्थित"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"हे डिव्हाइस <xliff:g id="NAME">%s</xliff:g> ला समर्थन देत नाही. समर्थित स्वरूपनामध्ये सेट करण्यासाठी टॅप करा."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> अनपेक्षितरित्या काढले"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"डेटा गमावणे टाळण्‍यासाठी काढण्‍यापूर्वी <xliff:g id="NAME">%s</xliff:g> अनमाउंट करा"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> काढले"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPN कनेक्ट करणे नेहमी-चालू…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN कनेक्ट केलेले नेहमी-चालू"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"VPN त्रुटी नेहमी-चालू"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"कॉन्फिगर करण्यासाठी टॅप करा"</string>
<string name="upload_file" msgid="2897957172366730416">"फाईल निवडा"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"फाईल निवडली नाही"</string>
<string name="reset" msgid="2448168080964209908">"रीसेट करा"</string>
<string name="submit" msgid="1602335572089911941">"सबमिट करा"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"कार मोड सक्षम केला"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"कार मोडमधून बाहेर पडण्यासाठी टॅप करा."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"टिथरिंग किंवा हॉटस्पॉट सक्रिय"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"सेट करण्यासाठी टॅप करा."</string>
<string name="back_button_label" msgid="2300470004503343439">"परत"</string>
<string name="next_button_label" msgid="1080555104677992408">"पुढील"</string>
<string name="skip_button_label" msgid="1275362299471631819">"वगळा"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"खाते जोडा"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"वाढवा"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"कमी करा"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> स्पर्श करा आणि धरुन ठेवा."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"वाढवण्यासाठी वर आणि कमी करण्यासाठी खाली स्लाइड करा."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"मिनिट वाढवा"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"मिनिट कमी करा"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB संचयन"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"संपादित करा"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"डेटा वापर चेतावणी"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"वापर आणि सेटिंग्ज पाहण्यासाठी टॅप करा."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G डेटा मर्यादा गाठली"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G डेटा मर्यादा गाठली"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"सेल्‍युलर डेटा मर्यादा गाठली"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"वाय-फाय डेटा मर्यादा ओलांडली"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"निर्दिष्ट केलेल्या मर्यादेबाहेर <xliff:g id="SIZE">%s</xliff:g>."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"पार्श्वभूमी डेटा प्रतिबंधित केला"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"प्रतिबंध काढण्यासाठी टॅप करा."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"सुरक्षितता प्रमाणपत्र"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"हे प्रमाणपत्र वैध आहे."</string>
<string name="issued_to" msgid="454239480274921032">"यावर जारी केले:"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"वर्ष निवडा"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> हटविली"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"कार्य <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"ही स्क्रीन अनपिन करण्यासाठी, परत ला स्पर्श करा आणि धरून ठेवा."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"ही स्क्रीन अनपिन करण्यासाठी, विहंगावलोकनास स्पर्श करा आणि धरून ठेवा."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"अॅप पिन केलेला आहे: या डिव्हाइसवर अनपिन करण्यास अनुमती नाही."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"स्क्रीन पिन केली"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"स्क्रीन अनपिन केली"</string>
diff --git a/core/res/res/values-ms-rMY/strings.xml b/core/res/res/values-ms-rMY/strings.xml
index e4dd4879aef9..b49fca9ef333 100644
--- a/core/res/res/values-ms-rMY/strings.xml
+++ b/core/res/res/values-ms-rMY/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Dapatkan kembali kandungan tetingkap"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Periksa kandungan tetingkap yang berinteraksi dengan anda."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Hidupkan Jelajah melalui Sentuhan"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Item yang diketik akan dituturkan dengan lantang dan skrin boleh dijelajah menggunakan gerak isyarat."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Hidupkan kebolehcapaian web dipertingkat"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skrip boleh dipasang untuk menjadikan kandungan apl lebih mudah diakses."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Perhatikan teks yang anda taip"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Taip PUK dan kod PIN baharu"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kod PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Kod PIN Baharu"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Ketik untuk menaip kata laluan"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Taip kata laluan untuk membuka kunci"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Taip PIN untuk membuka kunci"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Kod PIN salah."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Beberapa fungsi sistem mungkin tidak berfungsi"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Tidak cukup storan untuk sistem. Pastikan anda mempunyai 250MB ruang kosong dan mulakan semula."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> sedang berjalan"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Ketik untuk mendapatkan maklumat lanjut atau menghentikan apl."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Batal"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Memulakan apl."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"But akhir."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> dijalankan"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Ketik untuk beralih ke apl"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Tukar apl?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Apl lain sudah pun dijalankan yang mesti dihentikan sebelum anda boleh memulakan yang baharu."</string>
<string name="old_app_action" msgid="493129172238566282">"Kembali ke <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Mulakan <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Hentikan apl lama tanpa menyimpan."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> melebihi had memori"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Longgokan timbunan telah dikumpulkan; ketik untuk berkongsi"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Kongsikan longgokan timbunan?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proses <xliff:g id="PROC">%1$s</xliff:g> telah melebihi had memori proses sebanyak <xliff:g id="SIZE">%2$s</xliff:g>. Longgokan timbunan tersedia untuk anda kongsikan dengan pembangun aplikasi. Sila berhati-hati: longgokan timbunan ini boleh mengandungi sebarang maklumat peribadi anda yang boleh diakses oleh aplikasi itu."</string>
<string name="sendText" msgid="5209874571959469142">"Pilih tindakan untuk teks"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi tiada akses Internet"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Ketik untuk mendapatkan pilihan"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Tidak boleh menyambung kepada Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" mempunyai sambungan internet yang kurang baik."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Benarkan sambungan?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Mulakan Wi-Fi Langsung. Hal ini akan mematikan pengendalian klien/liputan Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Tidak dapat memulakan Wi-Fi Langsung."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct dihidupkan"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Ketik untuk mendapatkan tetapan"</string>
<string name="accept" msgid="1645267259272829559">"Terima"</string>
<string name="decline" msgid="2112225451706137894">"Tolak"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Jemputan dihantar"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB untuk pemindahan foto"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB untuk MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Disambungkan kepada aksesori USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Ketik untuk mendapatkan lagi pilihan."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Penyahpepijatan USB disambungkan"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Ketik untuk melumpuhkan penyahpepijatan USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Mengambil laporan pepijat…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Kongsi laporan pepijat?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Berkongsi laporan pepijat…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"<xliff:g id="NAME">%s</xliff:g> baharu dikesan"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Untuk memindahkan foto dan media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> rosak"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> rosak. Ketik untuk membetulkannya."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> tidak disokong"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Peranti ini tidak menyokong <xliff:g id="NAME">%s</xliff:g> ini. Ketik untuk menyediakannya dalam format yang disokong."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ditanggalkan tanpa dijangka"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Nyahlekap <xliff:g id="NAME">%s</xliff:g> sebelum menanggalkannya untuk mengelakkan kehilangan data"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> dialih keluar"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPN sentiasa hidup sedang disambungkan..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN sentiasa hidup telah disambungkan"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Ralat VPN sentiasa hidup"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Ketik untuk membuat konfigurasi"</string>
<string name="upload_file" msgid="2897957172366730416">"Pilih fail"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Tiada fail dipilih"</string>
<string name="reset" msgid="2448168080964209908">"Tetapkan semula"</string>
<string name="submit" msgid="1602335572089911941">"Serah"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mod kereta didayakan"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Ketik untuk keluar daripada mod kereta."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Penambatan atau titik panas aktif"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Ketik untuk membuat persediaan."</string>
<string name="back_button_label" msgid="2300470004503343439">"Kembali"</string>
<string name="next_button_label" msgid="1080555104677992408">"Seterusnya"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Langkau"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Tambah akaun"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Tingkatkan"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Kurangkan"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> ketik &amp; tahan."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Luncurkan ke atas untuk meningkatkan dan ke bawah untuk mengurangkan."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Tingkatkan minit"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Kurangkan minit"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Storan USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Edit"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Amaran penggunaan data"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Ketik utk lihat p\'gunaan &amp; ttpn."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Mencapai had data 2G-3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Mencapai had data 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mencapai had data selular"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Melebihi had data Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> melebihi had yang ditentukan."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Data latar belakang terhad"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Ketik untuk alih keluar sekatan."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Sijil keselamatan"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Sijil ini sah."</string>
<string name="issued_to" msgid="454239480274921032">"Dikeluarkan kepada:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Pilih tahun"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> dipadamkan"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Kerja <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Untuk menyahsematkan skrin ni, ketik &amp; tahan Kembali."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Untuk menyahsematkan skrin ini, ketik &amp; tahan Ikhtisar."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Apl disemat: Nyahsemat tidak dibenarkan pada peranti ini."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Skrin disemat"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Skrin dinyahsemat"</string>
diff --git a/core/res/res/values-my-rMM/strings.xml b/core/res/res/values-my-rMM/strings.xml
index f22d37eafa05..bb054d84185c 100644
--- a/core/res/res/values-my-rMM/strings.xml
+++ b/core/res/res/values-my-rMM/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ဝင်းဒိုးမှာပါရှိသည်များကို ထုတ်ယူခြင်း"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"သင် အပြန်အလှန်လုပ်နေသော ဝင်းဒိုးမှာပါရှိသည်များကို သေချာစွာ ကြည့်ရှုစစ်ဆေးပါ"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ထိတို့ခြင်းဖြင့် ရှာဖွေပေးနိုင်တာကို ဖွင့်လိုက်ပါ"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"တို့လိုက်သည့်အရာများကို အသံထွက်ဖတ်ပေးပါလိမ့်မည်။ လက်ဟန်အမူအရာများကို အသုံးပြု၍ မျက်နှာပြင်ကို လေ့လာနိုင်ပါသည်။"</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"ပိုမိုကောင်းမွန်သော ဝက်ဘ်အများသုံးစွဲနိုင်မှုကို ဖွင့်ရန်"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"အပလီကေးရှင်းကို ပိုမိုပြည့်စုံစေရန် စကရစ်များကို သွင်းနိုင်ပါတယ်"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"ရိုက်သောစာများကို သေချာစွာ စစ်ဆေးပါ"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK နှင့် PIN ကုဒ် အသစ်ကို ရိုက်ထည့်ပါ"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK နံပါတ်"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"PIN ကုဒ် အသစ်"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"စကားဝှက်ကိုရိုက်ရန် တို့ပါ"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"သော့ဖွင့်ရန် စကားဝှက်ကို ရိုက်ထည့်ပါ"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"သော့ဖွင့်ရန် PIN ကို ရိုက်ထည့်ပါ"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"ပင်နံပါတ်မှားနေပါသည်"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"တချို့ စနစ်လုပ်ငန်းများ အလုပ် မလုပ်ခြင်း ဖြစ်နိုင်ပါသည်"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"စနစ်အတွက် သိုလှောင်ခန်း မလုံလောက်ပါ။ သင့်ဆီမှာ နေရာလွတ် ၂၅၀ MB ရှိတာ စစ်ကြည့်ပြီး စတင်ပါ။"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> က အလုပ်လုပ်နေသည်။"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"နောက်ထပ်အချက်အလက်များကို ကြည့်ရန် သို့မဟုတ် အက်ပ်ကိုရပ်တန့်ရန် တို့ပါ။"</string>
<string name="ok" msgid="5970060430562524910">"ကောင်းပြီ"</string>
<string name="cancel" msgid="6442560571259935130">"ထားတော့"</string>
<string name="yes" msgid="5362982303337969312">"ကောင်းပြီ"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"appများကို စတင်နေ"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"လုပ်ငန်းစနစ်ထည့်သွင်း၍ ပြန်လည်စတင်ရန် ပြီးပါပြီ"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> က အလုပ်လုပ်နေသည်"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"အက်ပ်သို့ပြောင်းရန် တို့ပါ"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"appများကို ပြောင်းမလား?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"အခြား app တစ်ခု အလုပ်လုပ်နေ၍ သင်က အသစ် တစ်ခုကို မစမီ ၎င်းကို ရပ်ပစ်ရမည်။"</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g>သို့ပြန်သွားရန်"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g>စတင်ပါ"</string>
<string name="new_app_description" msgid="1932143598371537340">"app အဟောင်းကို မသိမ်းဆည်းဘဲ ရပ်လိုက်ပါ။"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> သိမ်းထားနိုင်မှု အကန့်အသတ် ကျော်လွန်နေ"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"သိမ်းဆည်းနိုင်မှု ပမာဏကျော်လွန်သွားပါပြီ။ မျှဝေရန် တို့ပါ"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"အရေးပေါ် သိမ်းထားပေးမှု ကို မျှဝေမလား။"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> လုပ်ဆောင်နိုင်မှုသည် <xliff:g id="SIZE">%2$s</xliff:g>ရှိသည့် သိမ်းထားနိုင်မှု ပမာဏထက်ကျော်လွန်သွားသည်။ စက်လုပ်ဆောင်ရည်မြင့်တင်ပေးသူနှင့် မျှဝေမှုလုပ်ရန် အရေးပေါ်သိမ်းထားပေးမှု ရမည်။"</string>
<string name="sendText" msgid="5209874571959469142">"စာတိုအတွက် လုပ်ဆောင်ချက် ရေးပါ"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"ဝိုင်-ဖို်ငတွင် အင်တာနက် ဝင်ရောက်သုံးခွင့် မရှိပါ"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"အခြားရွေးချယ်စရာများကိုကြည့်ရန် တို့ပါ"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"ဝိုင်ဖိုင်ကိုချိတ်ဆက်မရပါ"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" အင်တာနက် ဆက်သွယ်မှု ကောင်းကောင်းမရှိပါ"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"ချိတ်ဆက်မှုကို ခွင့်ပြုမလား?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"တိုက်ရိုက်ဝိုင်ဖိုင်ကို စတင်ပါ။ ၎င်းသည် ဝိုင်ဖိုင် ဟော့စပေါ့ကို ရပ်ဆိုင်းစေမှာ ဖြစ်ပါသည်။"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"တိုက်ရိုက်ဝိုင်ဖိုင်ကို စတင်လို့ မရပါ"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"ဝိုင်ဖိုင် တိုက်ရိုက် ကိုဖွင့်ထားသည်"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"ဆက်တင်များအတွက် တို့ပါ"</string>
<string name="accept" msgid="1645267259272829559">"လက်ခံရန်"</string>
<string name="decline" msgid="2112225451706137894">"လက်မခံပါ"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ဖိတ်ကြားချက် ပို့ပြီး"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ဓာတ်ပုံလွှဲပြောင်းရန်အတွက် USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI အတွက် USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USBတွဲဖက်ပစ္စည်းအား ချိတ်ဆက်ထားသည်"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"နောက်ထပ်ရွေးချယ်စရာများအတွက် တို့ပါ။"</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB အမှားစစ်ခြင်းအား ချိတ်ဆက်ထားသည်"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB ဆက်သွယ်ရေးစနစ်ကို ပိတ်ရန် တို့ပါ။"</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"ချွတ်ယွင်းချက် အစီရင်ခံစာပြုစုနေသည်..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"ချွတ်ယွင်းချက် အစီရင်ခံစာကို မျှဝေမလား။"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"ချွတ်ယွင်းမှုအစီရင်ခံစာ မျှဝေနေသည်…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"<xliff:g id="NAME">%s</xliff:g> အသစ်တွေ့ရှိပါသည်"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ဓာတ်ပုံနှင့် မီဒီယာများ လွှဲပြောင်းရန်အတွက်"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"ပျက်စီးနေသော <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> ပျက်နေပါသည်။ ပြင်ရန် တို့ပါ။"</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"ပံ့ပိုးထားခြင်း မရှိသော <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"ဤစက်ပစ္စည်းတွင် <xliff:g id="NAME">%s</xliff:g> ကိုအသုံးပြု၍မရပါ။ အသုံးပြု၍ရသော စနစ်ပုံစံသို့သတ်မှတ်ရန် တို့ပါ။"</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> မမျှော်လင့်ဘဲ ဖယ်ရှားခဲ့သည်"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ဒေတာဆုံးရှုံးခြင်းမှ ကာကွယ်ရန် မဖယ်ရှားမှီ <xliff:g id="NAME">%s</xliff:g> ကိုဖြုတ်ပါ။"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> ဖယ်ရှားလိုက်ပြီ"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"အမြဲတမ်းဖွင့်ထား VPN ဆက်သွယ်နေစဉ်…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"အမြဲတမ်းဖွင့်ထား VPN ဆက်သွယ်မှုရှိ"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"အမြဲတမ်းဖွင့်ထား VPN အမှား"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"ပြင်ဆင်သတ်မှတ်ရန် တို့ပါ"</string>
<string name="upload_file" msgid="2897957172366730416">"ဖိုင်ရွေးချယ်ရန်"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"မည်သည့်ဖိုင်ကိုမှမရွေးပါ"</string>
<string name="reset" msgid="2448168080964209908">"ပြန်လည်စတင်စေရန်"</string>
<string name="submit" msgid="1602335572089911941">"တင်​ပြရန်​"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"ကားထဲတွင်အသုံးပြုနိုင်သောစနစ် ရရှိနိုင်သည်"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"ကားမောင်းနှင်ခြင်းမုဒ်မှ ထွက်ရန် တို့ပါ။"</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"တဆင့်ပြန်လည်လွှင့်ခြင်း သို့မဟုတ် ဟော့စပေါ့ ဖွင့်ထားသည်"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"စနစ်ထည့်သွင်းရန် တို့ပါ။"</string>
<string name="back_button_label" msgid="2300470004503343439">"နောက်သို့"</string>
<string name="next_button_label" msgid="1080555104677992408">"နောက်"</string>
<string name="skip_button_label" msgid="1275362299471631819">"ကျော်"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"အကောင့်ထပ်ထည့်ရန်"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"တိုးရန်"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"လျှော့ရန်"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> ထိပြီးဖိထားပါ။"</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"တိုးရန် အပေါ်သို့ ပွတ်ဆွဲပြီး၊ လျှော့ရန် အောက်သို့ ပွတ်ဆွဲပါ"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"မိနစ်တိုးရန်"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"မိနစ်လျော့ရန်"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USBဖြင့် သိမ်းဆည်း"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"ပြင်ဆင်ရန်"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ဒေတာအသုံးပြုမှုသတိပေးချက်"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"အသုံးပြုမှုနှင့် ဆက်တင်များကိုကြည့်ရန် တို့ပါ။"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G ဒေတာ ကန့်သတ်ချက် ပြည့်မီသွားပြီ"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G ဒေတာ ကန့်သတ်ချက် ပြည့်မီသွားပြီ"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"ဆယ်လူလာ ဒေတာ ကန့်သတ်ချက် ပြည့်မီသွားပြီ"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"သတ်မှတ်ဝိုင်ဖိုင်ဒေတာထက်ကျော်နေ"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"သက်မှတ်နှုန်းထက် <xliff:g id="SIZE">%s</xliff:g> ကျော်နေပါသည်"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"နောက်ခံဒေတာ ကန့်သတ်ထားသည်"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"ကန့်သတ်ချက်ကိုဖယ်ရှားရန် တို့ပါ။"</string>
<string name="ssl_certificate" msgid="6510040486049237639">"လုံခြံုမှုဆိုင်ရာ အသိအမှတ်ပြုလက်မှတ်"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ဤအသိအမှတ်ပြုလက်မှတ်မှာ တရားဝင်သည်"</string>
<string name="issued_to" msgid="454239480274921032">"ထုတ်ပေးသည်-"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"ခုနှစ်ကို ရွေးပါ"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ကို ဖျက်ပြီးပါပြီ"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"အလုပ် <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"ဤမျက်နှာပြင်ကို ပင်ဖြုတ်ရန် \"နောက်သို့\" ကိုထိပြီးဖိထားပါ။"</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"ဤမျက်နှာပြင်ကို ပင်ဖြုတ်ရန် \"ခြုံငုံကြည့်ခြင်း\" ကိုထိပြီးဖိထားပါ။"</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Appကို ပင်ထိုးထားသည်။ ပင်ဖျက်ခြင်းကို ဒီစက်မှာ မရနိုင်ပါ။"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"မျက်နှာပြင်ကို ပင်ထိုးထား"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"မျက်နှာပြင် ပင်ထိုးမှု ဖြတ်လိုက်ပြီ"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index ebb37da6a2b7..f3ec24b8e47d 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"hente innhold i vinduer"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Den analyserer innholdet i vinduer du samhandler med."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"slå på berøringsutforsking"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Elementer du trykker på, leses høyt, og skjermen kan utforskes ved bruk av bevegelser."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"slå på forbedret nettilgjengelighet"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skript kan installeres for å gjøre appinnhold mer tilgjengelig."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"observere teksten du skriver inn"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Skriv inn PUK-kode og ny personlig kode"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-kode"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Ny PIN-kode"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Trykk for å skrive inn passord"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Skriv inn passord for å låse opp"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Skriv inn PIN-kode for å låse opp"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Feil personlig kode."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Enkelte systemfunksjoner fungerer muligens ikke slik de skal"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Det er ikke nok lagringsplass for systemet. Kontrollér at du har 250 MB ledig plass, og start på nytt."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> kjører"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Trykk for å få mer informasjon eller for å stoppe appen."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Avbryt"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Starter apper."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Ferdigstiller oppstart."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> kjører"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Trykk for å bytte til appen"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Vil du bytte app?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"En annen app kjører og må stoppes før du kan starte en ny app."</string>
<string name="old_app_action" msgid="493129172238566282">"Gå tilbake til <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Start <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Stopp den gamle appen uten å lagre."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> er over minnegrensen"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Minnedumpen («heap dump») er samlet inn – trykk for å dele"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Vil du dele minnedumpen («heap dump»)?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g>-prosessen er <xliff:g id="SIZE">%2$s</xliff:g> over grensen for prosessminne. En minnedump («heap dump») er tilgjengelig for deling med utvikleren. Vær forsiktig – denne minnedumpen kan inneholde noen av de personlige opplysningene dine som appen har tilgang til."</string>
<string name="sendText" msgid="5209874571959469142">"Velg handling for tekst"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi har ikke Internett-tilgang"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Trykk for å få alternativer"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Kan ikke koble til Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" har en dårlig Internett-tilkobling."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Vil du tillat tilkoblingen?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Start Wi-Fi Direct. Dette deaktiverer Wi-Fi-klienten/-sonen."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Kunne ikke starte Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct er slått på"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Trykk for å få innstillinger"</string>
<string name="accept" msgid="1645267259272829559">"Godta"</string>
<string name="decline" msgid="2112225451706137894">"Avslå"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitasjonen er sendt"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB for bildeoverføring"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB for MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Koblet til et USB-tilbehør"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Trykk for å få flere alternativ."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-feilsøking tilkoblet"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Trykk for å slå av feilsøking via USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Kjører feilrapport …"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Vil du dele feilrapporten?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Deler feilrapporten …"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"<xliff:g id="NAME">%s</xliff:g> ble oppdaget"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"For overføring av bilder og medier"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Skadet <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> er skadet. Trykk for å løse problemet."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> som ikke støttes"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Denne enheten støtter ikke <xliff:g id="NAME">%s</xliff:g>. Trykk for å konfigurere i et støttet format."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ble uventet fjernet"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Løs ut <xliff:g id="NAME">%s</xliff:g> før du fjerner den for å unngå tap av data"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> ble fjernet."</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Alltid-på VPN kobler til ..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Alltid-på VPN er tilkoblet"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Alltid-på VPN-feil"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Trykk for å konfigurere"</string>
<string name="upload_file" msgid="2897957172366730416">"Velg fil"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ingen fil er valgt"</string>
<string name="reset" msgid="2448168080964209908">"Tilbakestill"</string>
<string name="submit" msgid="1602335572089911941">"Send inn"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Bilmodus er aktivert"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Trykk for avslutte bilmodus."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Internettdeling eller trådløs sone er aktiv"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Trykk for å konfigurere."</string>
<string name="back_button_label" msgid="2300470004503343439">"Tilbake"</string>
<string name="next_button_label" msgid="1080555104677992408">"Neste"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Hopp over"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Legg til konto"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Øk"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Reduser"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> – trykk og hold"</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Dra opp for å øke og ned for å redusere."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Øk minutter"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Reduser minutter"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-lagring"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Rediger"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Advarsel for høyt dataforbruk"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Trykk for å se bruken og innstillingene."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Datagrensen for 2G-3G er nådd"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Datagrensen for 4G er nådd"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Grensen for mobildata er nådd"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi-datagrense overskredet"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> over angitt grense."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Bakgrunnsdata er begrenset"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Trykk for å fjerne begrensningen."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Sikkerhetssertifikat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Sertifikatet er gyldig."</string>
<string name="issued_to" msgid="454239480274921032">"Utstedt til:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Velg året"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> er slettet"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Jobb-<xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"For å løsne denne skjermen, trykk og hold inne Tilbake."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"For å løsne denne skjermen, trykk og hold inne Oversikt."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Appen er festet – du kan ikke løsne apper på denne enheten."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Skjermen er festet"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Skjermen er løsnet"</string>
diff --git a/core/res/res/values-ne-rNP/strings.xml b/core/res/res/values-ne-rNP/strings.xml
index e8098aceebc8..a8d7a4eb36c0 100644
--- a/core/res/res/values-ne-rNP/strings.xml
+++ b/core/res/res/values-ne-rNP/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"विन्डो सामग्रीको पुनःबहाली गर्नुहोस्।"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"तपाईँको अन्तरक्रिया भइरहेको विन्डोको सामग्रीको निरीक्षण गर्नुहोस्।"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"छोएर गरिने खोजलाई सुचारु गर्नुहोस्"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"ट्याप गरिएका वस्तुहरू चर्को स्वरमा बोलिने छन् र इसाराहरूको प्रयोग गरेर स्क्रिनमा अन्वेषण गर्न सकिन्छ।"</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"उच्च वेब पहुँचलाई सुचारु गर्नुहोस्"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"अनुप्रयोगको सामग्रीलाई थप पहुँचयोग्य बनाउन लिपिहरू स्थापना गर्न सक्नु हुन्छ।"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"आफुले टाइप गरेको पाठको निरीक्षण गर्नुहोस्"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK र नयाँ PIN कोड टाइप गर्नुहोस्"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK कोड"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"नयाँ PIN कोड"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"पासवर्ड टाइप गर्न ट्याप गर्नुहोस्"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"अनलक गर्न पासवर्ड टाइप गर्नुहोस्।"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"अनलक गर्न PIN कोड टाइप गर्नुहोस्"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"गलत PIN कोड।"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"सायद केही प्रणाली कार्यक्रमहरूले काम गर्दैनन्"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"प्रणालीको लागि पर्याप्त भण्डारण छैन। तपाईँसँग २५० मेगा बाइट ठाउँ खाली भएको निश्चित गर्नुहोस् र फेरि सुरु गर्नुहोस्।"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> चलिरहेको छ"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"थप जानकारीका लागि वा अनुप्रयोगलाई बन्द गर्न ट्याप गर्नुहोस्।"</string>
<string name="ok" msgid="5970060430562524910">"ठिक छ"</string>
<string name="cancel" msgid="6442560571259935130">"रद्द गर्नुहोस्"</string>
<string name="yes" msgid="5362982303337969312">"ठिक छ"</string>
@@ -1005,8 +1002,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"सुरुवात अनुप्रयोगहरू।"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"बुट पुरा हुँदै।"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> चलिरहेको छ"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"अनुप्रयोगमा स्विच गर्न ट्याप गर्नुहोस्"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"अनुप्रयोगहरू स्विच गर्ने हो?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"अर्को अनुप्रयोग पहिले नै चालु छ जुन तपाईंले एउटा नयाँ सुरु गर्नु अघि बन्द गर्नुपर्ने हुन्छ।"</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> मा फर्कनुहोस्"</string>
@@ -1014,8 +1010,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> सुरु गर्नुहोस्"</string>
<string name="new_app_description" msgid="1932143598371537340">"बचत नगरी पुरानो अनुप्रयोग रोक्नुहोस्।"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ले मेमोरी सीमा नाघ्यो"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"हिप डम्पलाई संग्रह गरिएको छ, साझेदारी गर्न छुनुहोस्"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"हिप डम्प साझेदारी गर्नुहुन्छ?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"प्रक्रिया <xliff:g id="PROC">%1$s</xliff:g>ले यसको प्रक्रिया मेमोरी सीमा <xliff:g id="SIZE">%2$s</xliff:g> नाघेको छ। तपाईँको लागि विकासकर्तासँग साझेदारी गर्न एउटा हिप डम्प उपलब्ध छ। होसियार हुनुहोस्: यो हिप डम्पमा अनुप्रयोगको पहुँच भएको तपाईँको कुनै पनि व्यक्तिगत जानकारी हुन सक्छ।"</string>
<string name="sendText" msgid="5209874571959469142">"पाठको लागि एउटा प्रकार्य छान्नुहोस्"</string>
@@ -1051,8 +1046,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi मा इन्टरनेट पहुँच छैन"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"विकल्पहरूका लागि ट्याप गर्नुहोस्"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"वाइ-फाइसँग जडान गर्न सकेन"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" कमजोर इन्टरनेट जडान छ।"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"जडान अनुमति दिने हो?"</string>
@@ -1062,8 +1056,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"वाइफाइ सिधा सुरु गर्नुहोस्। यसले वाइफाइ ग्राहक/हट्स्पटलाई बन्द गराउने छ।"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"वाइफाइ सिधा सुरु हुन सकेन।"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"वाइफाइ प्रत्यक्ष खुल्ला छ"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"सेटिङहरूका लागि ट्याप गर्नुहोस्"</string>
<string name="accept" msgid="1645267259272829559">"स्वीकार्नुहोस्"</string>
<string name="decline" msgid="2112225451706137894">"अस्वीकार गर्नुहोस्"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"निमन्त्रणा पठाइएको"</string>
@@ -1115,11 +1108,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"तस्बिर स्थानान्तरणको लागि USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI को लागि USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB सहायकमा जोडिएको छ"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"थप विकल्पहरूका लागि ट्याप गर्नुहोस्।"</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB डिबग गर्ने जडित छ"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB डिबगिङलाई असक्षम गर्न ट्याप गर्नुहोस्।"</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"बग रिपोर्ट लिँदै..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"बग रिपोर्टलाई साझेदारी गर्ने हो?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"बग रिपोर्टलाई साझेदारी गर्दै ..."</string>
@@ -1139,11 +1130,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"नयाँ <xliff:g id="NAME">%s</xliff:g> भेटियो"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"तस्बिरहरू र मिडिया स्थानान्तरणका लागि"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"बिग्रेको <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> त्रुटिपूर्ण छ। समाधान गर्न ट्याप गर्नुहोस्।"</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"असमर्थित <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"यस यन्त्रले यस <xliff:g id="NAME">%s</xliff:g> लाई समर्थन गर्दैन। एक समर्थित ढाँचामा सेट अप गर्न ट्याप गर्नुहोस्।"</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> अप्रत्याशित रूपमा निकालियो"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"डेटा हराउनबाट जोगाउन निकाल्नु अघि <xliff:g id="NAME">%s</xliff:g> अनमाउन्ट गर्नुहोस्"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"निकालियो <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1215,18 +1204,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPN जडान सधै जोड्दै…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"सधैँ खुल्ला हुने VPN जोडिएको"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"सधैँ भरि VPN त्रुटिमा"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"कन्फिगर गर्न ट्याप गर्नुहोस्"</string>
<string name="upload_file" msgid="2897957172366730416">"फाइल छान्नुहोस्"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"कुनै फाइल छानिएको छैन"</string>
<string name="reset" msgid="2448168080964209908">"पुनःसेट गर्नु"</string>
<string name="submit" msgid="1602335572089911941">"पेस गर्नुहोस्"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"कार मोड सक्षम पारियो।"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"कार मोडबाट बाहिर निस्कन ट्याप गर्नुहोस्।"</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"टेथर गर्ने वा हटस्पट सक्रिय"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"सेट अप गर्न ट्याप गर्नुहोस्।"</string>
<string name="back_button_label" msgid="2300470004503343439">"पछाडि"</string>
<string name="next_button_label" msgid="1080555104677992408">"अर्को"</string>
<string name="skip_button_label" msgid="1275362299471631819">"छोड्नुहोस्"</string>
@@ -1259,8 +1245,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"खाता थप गर्नुहोस्"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"बढाउनुहोस्"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"घटाउनुहोस्"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> छोइराख्नुहोस्।"</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"बढाउन माथि र घटाउन तल सार्नुहोस्।"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"मिनेट बढाउनुहोस्"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"मिनेट घटाउनुहोस्"</string>
@@ -1304,8 +1289,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB भण्डारण"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"सम्पादन गर्नुहोस्"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"डेटा प्रयोग चेतावनी"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"प्रयोग र सेटिङहरू हेर्न ट्याप गर्नुहोस्।"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G डेटा सीमा पुग्यो"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G डेटा सीमा पुग्यो"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"सेलुलर डेटा सीमा पुग्यो"</string>
@@ -1317,8 +1301,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"वाइफाइ डेटा SIMा नाघ्यो"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> उल्लेखित सीमा भन्दा बढी छ।"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"पृष्ठभूमिका डेटा प्रतिबन्धित गरिएको छ"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"सीमिततालाई हटाउन ट्याप गर्नुहोस्।"</string>
<string name="ssl_certificate" msgid="6510040486049237639">"सुरक्षा प्रमाणपत्र"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"प्रमाणपत्र मान्य छ।"</string>
<string name="issued_to" msgid="454239480274921032">"द्वारा जारी गरिएको:"</string>
@@ -1534,10 +1517,8 @@
<string name="select_year" msgid="7952052866994196170">"वर्ष चयन गर्नुहोस्"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> हटाइयो"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"कार्य <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"यस स्क्रिनलाई अनपिन गर्न पछाडि बटनलाई छोइराख्नुहोस्।"</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"यस स्क्रिनलाई अनपिन गर्न परिदृश्य बटनलाई छोइराख्नुहोस्।"</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"अनुप्रयोग पिन गरियो: यस यन्त्रमा अनपिन गर्ने अनुमति छैन।"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"स्क्रिन पिन गरियो"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"स्क्रिन अनपिन गरियो"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index ba9c7ce2a55c..e87331d39605 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Inhoud van vensters ophalen"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"De inhoud inspecteren van een venster waarmee je interactie hebt."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"\'Verkennen via aanraking\' inschakelen"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Aangetikte items worden hardop benoemd en het scherm kan worden verkend door middel van gebaren."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Verbeterde internettoegankelijkheid inschakelen"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Er kunnen scripts worden geïnstalleerd om app-inhoud toegankelijker te maken."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Tekst observeren die u typt"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Geef de PUK-code en de nieuwe pincode op"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-code"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nieuwe pincode"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Tik om het wachtwoord te typen"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Typ het wachtwoord om te ontgrendelen"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Typ pincode om te ontgrendelen"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Onjuiste pincode."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Bepaalde systeemfuncties werken mogelijk niet"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Onvoldoende opslagruimte voor het systeem. Zorg ervoor dat je 250 MB vrije ruimte hebt en start opnieuw."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> wordt uitgevoerd"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Tik voor meer informatie of om de app te stoppen."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Annuleren"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Apps starten."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Opstarten afronden."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> wordt uitgevoerd"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Tik om over te schakelen naar de app"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Schakelen tussen apps?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Er wordt al een andere app uitgevoerd die moet worden gestopt voordat u een nieuwe app kunt starten."</string>
<string name="old_app_action" msgid="493129172238566282">"Terug naar <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> starten"</string>
<string name="new_app_description" msgid="1932143598371537340">"De oude app stoppen zonder opslaan."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> heeft geheugenlimiet overschreden"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Heap dump is verzameld. Tik om te delen."</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Heap dump delen?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Het proces <xliff:g id="PROC">%1$s</xliff:g> heeft de procesgeheugenlimiet overschreden met <xliff:g id="SIZE">%2$s</xliff:g>. Een heap dump is voor u beschikbaar om te delen met de betreffende ontwikkelaar. Let op: Deze heap dump kan persoonlijke gegevens bevatten waartoe de app toegang heeft."</string>
<string name="sendText" msgid="5209874571959469142">"Een actie voor tekst selecteren"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wifi-netwerk heeft geen internettoegang"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Tik voor opties"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Kan geen verbinding maken met wifi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" heeft een slechte internetverbinding."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Verbinding toestaan?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wifi Direct starten. Hierdoor wordt de wifi-client/hotspot uitgeschakeld."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Kan Wifi Direct niet starten."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wifi Direct is actief"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Tik voor instellingen"</string>
<string name="accept" msgid="1645267259272829559">"Accepteren"</string>
<string name="decline" msgid="2112225451706137894">"Weigeren"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Uitnodiging verzonden"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB voor foto-overdracht"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB voor MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Aangesloten op een USB-accessoire"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Tik voor meer opties."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-foutopsporing verbonden"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Tik om USB-foutopsporing uit te schakelen."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Bugrapport genereren…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Bugrapport delen?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Bugrapport delen…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Nieuwe <xliff:g id="NAME">%s</xliff:g> gedetecteerd"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Voor overzetten van foto\'s en media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> beschadigd"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> is beschadigd. Tik om te verhelpen."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> niet ondersteund"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Dit apparaat biedt geen ondersteuning voor deze <xliff:g id="NAME">%s</xliff:g>. Tik om te configureren in een ondersteunde indeling."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> is onverwacht verwijderd"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Ontkoppel <xliff:g id="NAME">%s</xliff:g> voordat u deze verwijdert om gegevensverlies te voorkomen"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> verwijderd"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Always-on VPN-verbinding maken…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Always-on VPN-verbinding"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Fout met Always-on VPN"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Tik om te configureren"</string>
<string name="upload_file" msgid="2897957172366730416">"Bestand kiezen"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Geen bestand geselecteerd"</string>
<string name="reset" msgid="2448168080964209908">"Resetten"</string>
<string name="submit" msgid="1602335572089911941">"Verzenden"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Automodus ingeschakeld"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Tik om de automodus te sluiten."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering of hotspot actief"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tik om in te stellen."</string>
<string name="back_button_label" msgid="2300470004503343439">"Vorige"</string>
<string name="next_button_label" msgid="1080555104677992408">"Volgende"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Overslaan"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Account toevoegen"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Verhogen"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Verlagen"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"Tik op <xliff:g id="VALUE">%s</xliff:g> en houd vast."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Veeg omhoog om te verhogen en omlaag om te verlagen."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Hogere waarde voor minuten"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Lagere waarde voor minuten"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-opslag"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Bewerken"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Waarschuwing v. gegevensgebruik"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Tik voor gebruik en instellingen"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Gegevenslimiet van 2G-3G bereikt"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Gegevenslimiet van 4G bereikt"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mobiele gegevenslimiet bereikt"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wifi-datalimiet overschreden"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> meer dan limiet."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Achtergrondgegevens beperkt"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Tik om beperking te verwijderen."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Beveiligingscertificaat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Dit certificaat is geldig."</string>
<string name="issued_to" msgid="454239480274921032">"Uitgegeven voor:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Jaar selecteren"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> verwijderd"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Werk <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Tik op Terug en houd vast om dit scherm los te maken."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Tik op Overzicht en houd vast om dit scherm los te maken."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"App is vastgezet: losmaken is niet toegestaan op dit apparaat."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Scherm vastgezet"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Scherm losgemaakt"</string>
diff --git a/core/res/res/values-pa-rIN/strings.xml b/core/res/res/values-pa-rIN/strings.xml
index 070128d0ebd9..65aff9e59cc8 100644
--- a/core/res/res/values-pa-rIN/strings.xml
+++ b/core/res/res/values-pa-rIN/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ਵਿੰਡੋ ਸਮੱਗਰੀ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ਇੱਕ ਵਿੰਡੋ ਦੀ ਸਮੱਗਰੀ ਦੀ ਜਾਂਚ ਕਰੋ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਇੰਟਰੈਕਟ ਕਰ ਰਹੇ ਹੋ।"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ਐਕਸਪਲੋਰ ਬਾਇ ਟਚ ਚਾਲੂ ਕਰੋ"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"ਟੈਪ ਕੀਤੀਆਂ ਆਈਟਮਾਂ ਨੂੰ ਉੱਚੀ ਆਵਾਜ਼ ਵਿੱਚ ਬੋਲਿਆ ਜਾਵੇਗਾ ਅਤੇ ਸਕ੍ਰੀਨ ਦੀ ਸੰਕੇਤਾਂ ਦੀ ਵਰਤੋਂ ਨਾਲ ਪੜਚੋਲ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।"</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"ਵਧੀ ਹੋਈ ਵੈਬ ਪਹੁੰਚਯੋਗਤਾ ਚਾਲੂ ਕਰੋ"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ਐਪ ਸਮੱਗਰੀ ਨੂੰ ਵੱਧ ਪਹੁੰਚਯੋਗ ਬਣਾਉਣ ਲਈ ਸਕ੍ਰਿਪਟਾਂ ਇੰਸਟੌਲ ਨਹੀਂ ਕੀਤੀਆਂ ਜਾ ਸਕਦੀਆਂ।"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"ਜੋ ਟੈਕਸਟ ਤੁਸੀਂ ਟਾਈਪ ਕਰਦੇ ਹੋ, ਉਸਦਾ ਨਿਰੀਖਣ ਕਰੋ"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK ਅਤੇ ਨਵਾਂ PIN ਕੋਡ ਟਾਈਪ ਕਰੋ"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK ਕੋਡ"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"ਨਵਾਂ PIN ਕੋਡ"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"ਪਾਸਵਰਡ ਟਾਈਪ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"ਅਨਲੌਕ ਕਰਨ ਲਈ ਪਾਸਵਰਡ ਟਾਈਪ ਕਰੋ"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"ਅਨਲੌਕ ਕਰਨ ਲਈ PIN ਟਾਈਪ ਕਰੋ"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"ਗ਼ਲਤ PIN ਕੋਡ।"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"ਕੁਝ ਸਿਸਟਮ ਫੰਕਸ਼ਨ ਕੰਮ ਨਹੀਂ ਵੀ ਕਰ ਸਕਦੇ"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"ਸਿਸਟਮ ਲਈ ਪੂਰੀ ਸਟੋਰੇਜ ਨਹੀਂ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡੇ ਕੋਲ 250MB ਖਾਲੀ ਸਪੇਸ ਹੈ ਅਤੇ ਰੀਸਟਾਰਟ ਕਰੋ।"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਚੱਲ ਰਿਹਾ ਹੈ"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"ਹੋਰ ਜਾਣਕਾਰੀ ਜਾਂ ਐਪ ਨੂੰ ਬੰਦ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="ok" msgid="5970060430562524910">"ਠੀਕ"</string>
<string name="cancel" msgid="6442560571259935130">"ਰੱਦ ਕਰੋ"</string>
<string name="yes" msgid="5362982303337969312">"ਠੀਕ"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ਐਪਸ ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ।"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"ਬੂਟ ਪੂਰਾ ਕਰ ਰਿਹਾ ਹੈ।"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> ਚੱਲ ਰਿਹਾ ਹੈ"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"ਵਾਪਸ ਐਪ \'ਤੇ ਬਦਲਣ ਲਈ ਟੈਪ ਕਰੋ"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"ਕੀ ਐਪਸ ਸਵਿਚ ਕਰਨੇ ਹਨ?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"ਦੂਜਾ ਐਪ ਪਹਿਲਾਂ ਹੀ ਚੱਲ ਰਿਹਾ ਹੈ, ਜਿਸਨੂੰ ਤੁਹਾਡੇ ਵੱਲੋਂ ਇੱਕ ਨਵਾਂ ਐਪ ਚਾਲੂ ਕਰ ਸਕਣ ਤੋਂ ਪਹਿਲਾਂ ਹੀ ਰੋਕਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।"</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> ਤੇ ਵਾਪਸ ਜਾਓ"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> ਨੂੰ ਚਾਲੂ ਕਰੋ"</string>
<string name="new_app_description" msgid="1932143598371537340">"ਸੁਰੱਖਿਅਤ ਕੀਤੇ ਬਿਨਾਂ ਪੁਰਾਣਾ ਐਪ ਬੰਦ ਕਰੋ।"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ਦੀ ਮੈਮਰੀ ਸੀਮਾ ਵਧ ਗਈ ਹੈ"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"ਹੀਪ ਡੰਪ ਇਕੱਤਰ ਕੀਤਾ ਗਿਆ; ਸਾਂਝਾ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"ਕੀ ਹੀਪ ਡੰਪ ਸ਼ੇਅਰ ਕਰਨਾ ਹੈ?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"ਪ੍ਰਕਿਰਿਆ <xliff:g id="PROC">%1$s</xliff:g> ਦੀ ਆਪਣੀ ਪ੍ਰਕਿਰਿਆ ਮੈਮਰੀ ਸੀਮਾ<xliff:g id="SIZE">%2$s</xliff:g> ਵਧ ਗਈ ਹੈ। ਇਸਦੇ ਵਿਕਾਸਕਾਰ ਨਾਲ ਸ਼ੇਅਰ ਕਰਨ ਲਈ ਤੁਹਾਡੇ ਲਈ ਇੱਕ ਹੀਪ ਡੰਪ ਉਪਲਬਧ ਹੈ। ਸਾਵਧਾਨ ਰਹੋ: ਇਸ ਹੀਪ ਡੰਪ ਵਿੱਚ ਤੁਹਾਡੀ ਕੋਈ ਵੀ ਨਿੱਜੀ ਜਾਣਕਾਰੀ ਹੋ ਸਕਦੀ ਹੈ, ਜਿਸਤੇ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਪਹੁੰਚ ਹੈ।"</string>
<string name="sendText" msgid="5209874571959469142">"ਟੈਕਸਟ ਲਈ ਇੱਕ ਕਿਰਿਆ ਚੁਣੋ"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi ਦੀ ਕੋਈ ਇੰਟਰਨੈਟ ਪਹੁੰਚ ਨਹੀਂ ਹੈ"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"ਵਿਕਲਪਾਂ ਲਈ ਟੈਪ ਕਰੋ"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕਰ ਸਕਿਆ"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ਇਸਦਾ ਇੱਕ ਖ਼ਰਾਬ ਇੰਟਰਨੈਟ ਕਨੈਕਸ਼ਨ ਹੈ।"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"ਕੀ ਕਨੈਕਸ਼ਨ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi ਡਾਇਰੈਕਟ ਚਾਲੂ ਕਰੋ। ਇਹ Wi-Fi ਕਲਾਈਂਟ/ਹੌਟਸਪੌਟ ਨੂੰ ਬੰਦ ਕਰ ਦੇਵੇਗਾ।"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi ਡਾਇਰੈਕਟ ਚਾਲੂ ਨਹੀਂ ਕਰ ਸਕਿਆ।"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi ਡਾਇਰੈਕਟ ਚਾਲੂ ਹੈ।"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"ਸੈਟਿੰਗਾਂ ਲਈ ਟੈਪ ਕਰੋ"</string>
<string name="accept" msgid="1645267259272829559">"ਸਵੀਕਾਰ ਕਰੋ"</string>
<string name="decline" msgid="2112225451706137894">"ਅਸਵੀਕਾਰ ਕਰੋ"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ਸੱਦਾ ਭੇਜਿਆ"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ਫੋਟੋ ਟ੍ਰਾਂਸਫ਼ਰ ਲਈ USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI ਲਈ USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"ਇੱਕ USB ਐਕਸੈਸਰੀ ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"ਹੋਰ ਵਿਕਲਪਾਂ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB ਡੀਬਗਿੰਗ ਕਨੈਕਟ ਕੀਤੀ"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB ਡੀਬੱਗਿੰਗ ਨੂੰ ਅਯੋਗ ਬਣਾਉਣ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"ਬੱਗ ਰਿਪਰੋਟ ਪ੍ਰਾਪਤ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"ਕੀ ਬੱਗ ਰਿਪੋਰਟ ਸਾਂਝੀ ਕਰਨੀ ਹੈ?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"ਬੱਗ ਰਿਪੋਰਟ ਸਾਂਝੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"ਨਵੇਂ <xliff:g id="NAME">%s</xliff:g> ਦਾ ਪਤਾ ਲਗਾਇਆ ਗਿਆ"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ਫੋਟੋਆਂ ਅਤੇ ਮੀਡੀਆ ਨੂੰ ਟ੍ਰਾਂਸਫ਼ਰ ਕਰਨ ਲਈ"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"ਕਰਪਟਿਡ <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> ਗ਼ਲਤ ਹੈ। ਠੀਕ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"ਅਸਮਰਥਿਤ <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"ਇਹ ਡੀਵਾਈਸ ਇਸ <xliff:g id="NAME">%s</xliff:g> ਨੂੰ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੀ ਹੈ। ਕਿਸੇ ਸਮਰਥਿਤ ਫੌਰਮੈਟ ਵਿੱਚ ਸਥਾਪਤ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ਨੂੰ ਅਚਨਚੇਤ ਹਟਾਇਆ ਗਿਆ"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ਡੇਟਾ ਦੇ ਨੁਕਸਾਨ ਤੋਂ ਬੱਚਣ ਲਈ ਹਟਾਉਣ ਤੋਂ ਪਹਿਲਾਂ <xliff:g id="NAME">%s</xliff:g> ਅਨਮਾਊਂਟ ਕਰੋ"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"ਹਟਾਇਆ <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"ਹਮੇਸ਼ਾਂ-ਚਾਲੂ VPN ਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"ਹਮੇਸ਼ਾਂ-ਚਾਲੂ VPN ਕਨੈਕਟ ਕੀਤਾ"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"ਹਮੇਸ਼ਾਂ-ਚਾਲੂ VPN ਅਸ਼ੁੱਧੀ"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"ਸੰਰੂਪਣ ਲਈ ਟੈਪ ਕਰੋ"</string>
<string name="upload_file" msgid="2897957172366730416">"ਫਾਈਲ ਚੁਣੋ"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ਕੋਈ ਫਾਈਲ ਨਹੀਂ ਚੁਣੀ ਗਈ"</string>
<string name="reset" msgid="2448168080964209908">"ਰੀਸੈਟ ਕਰੋ"</string>
<string name="submit" msgid="1602335572089911941">"ਪ੍ਰਸਤੁਤ ਕਰੋ"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"ਕਾਰ ਮੋਡ ਸਮਰਥਿਤ"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"ਕਾਰ ਮੋਡ ਤੋਂ ਬਾਹਰ ਜਾਣ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"ਟੀਥਰਿਗ ਜਾਂ ਹੌਟਸਪੌਟ ਸਕਿਰਿਆ"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"ਸਥਾਪਤ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="back_button_label" msgid="2300470004503343439">"ਪਿੱਛੇ"</string>
<string name="next_button_label" msgid="1080555104677992408">"ਅਗਲਾ"</string>
<string name="skip_button_label" msgid="1275362299471631819">"ਛੱਡੋ"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"ਖਾਤਾ ਜੋੜੋ"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"ਵਧਾਓ"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"ਘਟਾਓ"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> ਸਪਰਸ਼ ਕਰੋ &amp; ਦਬਾਈ ਰੱਖੋ।"</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"ਵਧਾਉਣ ਲਈ ਉੱਪਰ ਅਤੇ ਘਟਾਉਣ ਲਈ ਹੇਠਾਂ ਸਲਾਈਡ ਕਰੋ।"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"ਮਿੰਟ ਵਧਾਓ"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"ਮਿੰਟ ਘਟਾਓ"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB ਸਟੋਰੇਜ"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"ਸੰਪਾਦਿਤ ਕਰੋ"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ਡਾਟਾ ਵਰਤੋਂ ਚਿਤਾਵਨੀ"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"ਵਰਤੋਂ ਅਤੇ ਸੈਟਿੰਗਾਂ ਨੂੰ ਵੇਖਣ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G ਡਾਟਾ ਸੀਮਾ ਪੂਰੀ ਹੋ ਗਈ"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G ਡਾਟਾ ਸੀਮਾ ਪੂਰੀ ਹੋਈ"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"ਸੈਲਿਊਲਰ ਡਾਟਾ ਸੀਮਾ ਪੂਰੀ ਹੋ ਗਈ"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi ਡਾਟਾ ਸੀਮਾ ਵਧ ਗਈ"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> ਤੋਂ ਵੱਧ ਨਿਰਦਿਸ਼ਟ ਸੀਮਾ।"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"ਪਿਛੋਕੜ ਡਾਟਾ ਪ੍ਰਤਿਬੰਧਿਤ"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"ਪਾਬੰੰਦੀ ਹਟਾਉਣ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="ssl_certificate" msgid="6510040486049237639">"ਸੁਰੱਖਿਆ ਸਰਟੀਫਿਕੇਟ"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ਇਹ ਸਰਟੀਫਿਕੇਟ ਪ੍ਰਮਾਣਿਕ ਹੈ।"</string>
<string name="issued_to" msgid="454239480274921032">"ਨੂੰ ਜਾਰੀ ਕੀਤਾ ਗਿਆ:"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"ਸਾਲ ਚੁਣੋ"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ਹਟਾਇਆ ਗਿਆ"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"ਕੰਮ <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"ਇਸ ਸਕ੍ਰੀਨ ਨੂੰ ਅਨਪਿੰਨ ਕਰਨ ਲਈ, ਸਪਰਸ਼ ਕਰੋ &amp; ਦਬਾਈ ਰੱਖੋ।"</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"ਇਸ ਸਕ੍ਰੀਨ ਨੂੰ ਅਨਪਿੰਨ ਕਰਨ ਲਈ, ਸਪਰਸ਼ ਕਰੋ &amp; ਰੂਪਰੇਖਾ ਨੂੰ ਦਬਾਈ ਰੱਖੋ।"</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"ਐਪ ਪਿੰਨਡ ਹੈ: ਇਸ ਡਿਵਾਈਸ ਤੇ ਅਨਪਿਨ ਕਰਨ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ।"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"ਸਕ੍ਰੀਨ ਪਿੰਨ ਕੀਤੀ"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"ਸਕ੍ਰੀਨ ਅਨਪਿਨ ਕੀਤੀ"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 69da1af404cd..a44f943093ab 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -269,8 +269,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pobieranie zawartości okna"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Sprawdzanie zawartości okna, z którego korzystasz."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Włączenie czytania dotykiem"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Klikane elementy będą wymawiane na głos, a ekran można przeglądać, używając gestów."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Włączenie ułatwień dostępu w internecie"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Można zainstalować skrypty, by zawartość aplikacji była łatwiej dostępna."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Obserwowanie wpisywanego tekstu"</string>
@@ -669,8 +668,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Wpisz kod PUK i nowy kod PIN."</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kod PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nowy PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Kliknij, by wpisać hasło"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Wpisz hasło, aby odblokować."</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Wpisz kod PIN, aby odblokować."</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Błędny kod PIN"</string>
@@ -954,8 +952,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Niektóre funkcje systemu mogą nie działać"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Za mało pamięci w systemie. Upewnij się, że masz 250 MB wolnego miejsca i uruchom urządzenie ponownie."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> jest uruchomiona"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Kliknij, by dowiedzieć się więcej lub zatrzymać aplikację."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Anuluj"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -1029,8 +1026,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Uruchamianie aplikacji."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Kończenie uruchamiania."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Działa <xliff:g id="APP">%1$s</xliff:g>"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Kliknij, by przełączyć na aplikację"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Czy przełączyć aplikacje?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Działa już inna aplikacja, którą trzeba zatrzymać, aby możliwe było uruchomienie nowej."</string>
<string name="old_app_action" msgid="493129172238566282">"Powrót do aplikacji <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1038,8 +1034,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Uruchom <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Zatrzymaj starą aplikację bez zapisywania."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Proces <xliff:g id="PROC">%1$s</xliff:g> przekroczył limit pamięci"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Pobrano zrzut sterty – kliknij, by go udostępnić"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Udostępnić zrzut stosu?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proces <xliff:g id="PROC">%1$s</xliff:g> przekroczył swój limit pamięci, który wynosi <xliff:g id="SIZE">%2$s</xliff:g>. Możesz udostępnić zrzut stosu programiście procesu. Uwaga: ten zrzut może zawierać wszelkie dane osobowe, do których aplikacja ma dostęp."</string>
<string name="sendText" msgid="5209874571959469142">"Wybierz czynność, jaka ma zostać wykonana na tekście"</string>
@@ -1079,8 +1074,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Sieć Wi-Fi nie ma dostępu do internetu"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Kliknij, by wyświetlić opcje"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nie można połączyć się z siecią Wi-Fi."</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ma powolne połączenie internetowe."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Zezwolić na połączenie?"</string>
@@ -1090,8 +1084,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Uruchom Wi-Fi Direct. Spowoduje to wyłączenie klienta lub punktu dostępu Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Nie można uruchomić Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct włączone"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Kliknij, by wyświetlić ustawienia"</string>
<string name="accept" msgid="1645267259272829559">"Akceptuj"</string>
<string name="decline" msgid="2112225451706137894">"Odrzuć"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Wysłano zaproszenie"</string>
@@ -1143,11 +1136,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB w trybie przesyłania zdjęć"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB w trybie MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Podłączono akcesorium USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Kliknij, by wyświetlić więcej opcji."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Podłączono moduł debugowania USB"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Kliknij, by wyłączyć debugowanie USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Zgłaszam błąd…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Udostępnić raport o błędzie?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Udostępniam raport o błędzie…"</string>
@@ -1167,11 +1158,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Wykryto nowy nośnik: <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Do przenoszenia zdjęć i multimediów"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Nośnik <xliff:g id="NAME">%s</xliff:g> uszkodzony"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g>: uszkodzenie. Kliknij, by naprawić."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Nośnik <xliff:g id="NAME">%s</xliff:g> nieobsługiwany"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"To urządzenie nie obsługuje <xliff:g id="NAME">%s</xliff:g>. Kliknij, by użyć obsługiwanego formatu."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g>: nieoczekiwane wyjęcie"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Odłącz nośnik <xliff:g id="NAME">%s</xliff:g> przed jego wyjęciem, by uniknąć utraty danych"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Wyjęto: <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1243,18 +1232,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Łączę ze stałą siecią VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Połączono ze stałą siecią VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Błąd stałej sieci VPN"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Kliknij, by skonfigurować"</string>
<string name="upload_file" msgid="2897957172366730416">"Wybierz plik"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nie wybrano pliku"</string>
<string name="reset" msgid="2448168080964209908">"Resetuj"</string>
<string name="submit" msgid="1602335572089911941">"Prześlij"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Tryb samochodowy włączony"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Kliknij, by zakończyć tryb samochodowy."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Aktywny tethering lub punkt dostępu"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Kliknij, by skonfigurować."</string>
<string name="back_button_label" msgid="2300470004503343439">"Wróć"</string>
<string name="next_button_label" msgid="1080555104677992408">"Dalej"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Pomiń"</string>
@@ -1289,8 +1275,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Dodaj konto"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Zwiększ"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Zmniejsz"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> dotknij i przytrzymaj."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Przesuń w górę, by zwiększyć, i w dół, by zmniejszyć."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Zmień minutę na późniejszą"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Zmień minutę na wcześniejszą"</string>
@@ -1334,8 +1319,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Nośnik USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Edytuj"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Ostrzeżenie o transmisji danych"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Kliknij, by wyświetlić użycie i ustawienia."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Osiągnięto limit danych 2G/3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Osiągnięto limit danych 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Osiągnięto limit danych komórkowych"</string>
@@ -1347,8 +1331,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Przekroczono limit danych Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> ponad określony limit"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Dane w tle są ograniczone"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Kliknij, by usunąć ograniczenie."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Certyfikat zabezpieczeń"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Certyfikat jest ważny."</string>
<string name="issued_to" msgid="454239480274921032">"Wystawiony dla:"</string>
@@ -1566,10 +1549,8 @@
<string name="select_year" msgid="7952052866994196170">"Wybierz rok"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> usunięte"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (praca)"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Aby odpiąć ten ekran, naciśnij i przytrzymaj Wstecz."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Aby odpiąć ten ekran, naciśnij i przytrzymaj Przegląd."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikacja jest przypięta. Nie możesz jej odpiąć na tym urządzeniu."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekran przypięty"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekran odpięty"</string>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index b935cdb15c30..a99a86fb5c7d 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar cont. da janela"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecionar o conteúdo da janela com a qual você está interagindo."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ativar Explorar por toque"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Itens tocados serão falados em voz alta, e a tela poderá ser explorada por meio de gestos."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Ativar acessibilidade na Web aprimorada"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Scripts podem ser instalados para tornar o conteúdo do app mais acessível."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observar o texto digitado"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Insira o PUK e o novo código PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Código PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novo código PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Toque para digitar a senha"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Digite a senha para desbloquear"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Insira o PIN para desbloquear"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorreto."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Algumas funções do sistema podem não funcionar"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Não há armazenamento suficiente para o sistema. Certifique-se de ter 250 MB de espaço livre e reinicie."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> está em execução"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Toque para ver mais informações ou parar o app."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Cancelar"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando apps."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Concluindo a inicialização."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> em execução"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Toque para alternar para o app"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Alternar entre apps?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Outro app já está em execução e deve ser interrompido antes que você inicie um novo app."</string>
<string name="old_app_action" msgid="493129172238566282">"Voltar para <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Iniciar <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Parar o app antigo sem salvar."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> excedeu o limite de memória"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"O despejo de heap foi coletado. Toque para compartilhar"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Compartilhar despejo de heap?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"O processo <xliff:g id="PROC">%1$s</xliff:g> excedeu seu limite de memória de <xliff:g id="SIZE">%2$s</xliff:g>. Um despejo de heap está disponível para compartilhamento com o desenvolvedor. Tenha cuidado: esse despejo de heap pode conter informações pessoais às quais o aplicativo tem acesso."</string>
<string name="sendText" msgid="5209874571959469142">"Escolha uma ação para o texto"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"O Wi-Fi não tem acesso à Internet"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Toque para ver opções"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Não foi possível se conectar a redes Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" tem uma conexão de baixa qualidade com a Internet."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Permitir conexão?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Iniciar o Wi-Fi Direct. Isso desativará o ponto de acesso/cliente Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Não foi possível iniciar o Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct ativado"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Toque para ver as configurações"</string>
<string name="accept" msgid="1645267259272829559">"Aceitar"</string>
<string name="decline" msgid="2112225451706137894">"Recusar"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Convite enviado"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferência de fotos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectado a um acessório USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Toque para ver mais opções."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depuração USB conectada"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Toque para desativar a depuração do USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Gerando relatório do bug..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Compartilhar relatório do bug?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Compartilhando relatório do bug…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Novo <xliff:g id="NAME">%s</xliff:g> detectado"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Para transferir fotos e mídia"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> corrompido"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> está corrompido. Toque para corrigir."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> não compatível"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Este dispositivo não é compatível com esse <xliff:g id="NAME">%s</xliff:g>. Toque para configurar em um formato compatível."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> foi removido inesperadamente"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Desconecte <xliff:g id="NAME">%s</xliff:g> antes da remoção para evitar a perda de dados"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Mídia <xliff:g id="NAME">%s</xliff:g> removida."</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPN sempre ativa conectando..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN sempre ativa conectada"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Erro na VPN sempre ativa"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Toque para configurar"</string>
<string name="upload_file" msgid="2897957172366730416">"Escolher arquivo"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nenhum arquivo escolhido"</string>
<string name="reset" msgid="2448168080964209908">"Redefinir"</string>
<string name="submit" msgid="1602335572089911941">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Modo carro ativado"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Toque para sair do modo carro."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Vínculo ou ponto de acesso ativo"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Toque para configurar."</string>
<string name="back_button_label" msgid="2300470004503343439">"Voltar"</string>
<string name="next_button_label" msgid="1080555104677992408">"Avançar"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Ignorar"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Adicionar conta"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Aumentar"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Diminuir"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> toque e mantenha pressionado."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Deslize para cima para aumentar e para baixo para diminuir."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aumentar minuto"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Diminuir minuto"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Armazenamento USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Editar"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Aviso sobre uso de dados"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Toque para ver uso e config."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Limite de dados 2G-3G atingido"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Limite de dados 4G atingido"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Limite de dados celular atingido"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Limite de dados Wi-Fi excedido"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> acima do limite especificado."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Dados de segundo plano restritos"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Toque para remover a restrição."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Certificado de segurança"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Este certificado é válido."</string>
<string name="issued_to" msgid="454239480274921032">"Emitido para:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Selecione o ano"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> excluído"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Trabalho: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Para liberar esta tela, toque no botão \"Voltar\" e mantenha-o pressionado."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Para liberar esta tela, toque no botão \"Visão geral\" e mantenha-o pressionado."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"O app está fixado. A liberação não é permitida neste dispositivo."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Tela fixada"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Tela liberada"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index fba59bd1ca39..c7088ae1a53c 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Obter conteúdo da janela"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecionar o conteúdo de uma janela com a qual está a interagir."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ativar Explorar Através do Toque"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Os itens em que tocar serão pronunciados em voz alta e o ecrã poderá ser explorado através de gestos."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Ativar a acessibilidade Web melhorada"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Poderão ser instalados scripts para tornar o conteúdo da aplicação mais acessível."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observar o texto que escreve"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Escreva o PUK e o novo código PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Código PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novo código PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Toque p/ escr. a palavra-passe"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Escreva a palavra-passe para desbloquear"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Escreva o PIN para desbloquear"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorreto."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Algumas funções do sistema poderão não funcionar"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Não existe armazenamento suficiente para o sistema. Certifique-se de que tem 250 MB de espaço livre e reinicie."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> em execução"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Toque para obter mais informações ou para parar a aplicação."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Cancelar"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"A iniciar aplicações"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"A concluir o arranque."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> em execução"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Toque para mudar para a aplicação"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Mudar de aplicação?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Já está em execução outra aplicação, que terá de ser parada para que possa iniciar uma nova."</string>
<string name="old_app_action" msgid="493129172238566282">"Regressar a <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Iniciar <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Parar a aplicação antiga sem guardar."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> excedeu o limite da memória"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Foi recolhida a captura da área dinâmica para dados. Toque para partilhar."</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Pretende partilhar a captura da área dinâmica para dados?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"O processo <xliff:g id="PROC">%1$s</xliff:g> excedeu o respetivo limite de memória do processo de <xliff:g id="SIZE">%2$s</xliff:g>. Está disponível uma captura da área dinâmica para dados para partilhar com o respetivo programador. Tenha atenção: esta captura da área dinâmica para dados pode conter algumas das suas informações pessoais a que a aplicação tem acesso."</string>
<string name="sendText" msgid="5209874571959469142">"Escolha uma ação para o texto"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"O Wi-Fi não tem acesso à Internet"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Toque para obter mais opções"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Não foi possível ligar a Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" tem uma ligação à internet fraca."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Permitir ligação?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Iniciar o Wi-Fi Direct. Esta opção desativará o cliente/zona Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Não foi possível iniciar o Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"O Wi-Fi Direct está ativado"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Toque para aceder às definições"</string>
<string name="accept" msgid="1645267259272829559">"Aceitar"</string>
<string name="decline" msgid="2112225451706137894">"Recusar"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Convite enviado"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferência de fotos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Ligado a um acessório USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Toque para obter mais opções."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depuração USB ligada"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Toque para desativar a depuração USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"A criar relatório de erro…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Pretende partilhar o relatório de erro?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"A partilhar relatório de erro…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Novo <xliff:g id="NAME">%s</xliff:g> detetado"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Transf. fotos, conteúdos multimédia."</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> danificado"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"O <xliff:g id="NAME">%s</xliff:g> está corrompido. Toque para o corrigir."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> não suportado"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Este dispositivo não é compatível com este <xliff:g id="NAME">%s</xliff:g>. Toque para o configurar num formato compatível."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> foi removido inesperadamente"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Desmontar o <xliff:g id="NAME">%s</xliff:g> antes da remoção para evitar a perda de dados"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> removido"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"A ligar VPN sempre ativa..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN sempre ativa ligada"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Erro da VPN sempre ativa"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Toque para configurar"</string>
<string name="upload_file" msgid="2897957172366730416">"Escolher ficheiro"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Não foi selecionado nenhum ficheiro"</string>
<string name="reset" msgid="2448168080964209908">"Repor"</string>
<string name="submit" msgid="1602335572089911941">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Modo automóvel ativado"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Toque para sair do modo automóvel."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Ligação ponto a ponto ou hotspot activos"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Toque para configurar."</string>
<string name="back_button_label" msgid="2300470004503343439">"Anterior"</string>
<string name="next_button_label" msgid="1080555104677992408">"Seguinte"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Ignorar"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Adicionar conta"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Aumentar"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Diminuir"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"Toque sem soltar em <xliff:g id="VALUE">%s</xliff:g>."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Deslizar para cima para aumentar e para baixo para diminuir."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aumentar minutos"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Diminuir minutos"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Armazenamento USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Editar"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Aviso de utilização de dados"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Toque para ver a utiliz. e def."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Limite de dados 2G/3G atingido"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Limite de dados 4G atingido"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Limite de dados móveis atingido"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Limite de dados Wi-Fi excedido"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> acima do limite especificado."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Dados em seg. plano restringidos"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Toque para remover a restrição."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Certificado de segurança"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Este certificado é válido."</string>
<string name="issued_to" msgid="454239480274921032">"Emitido para:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Selecionar ano"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> eliminado"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> de trabalho"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Para soltar este ecrã, toque sem soltar em Anterior."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Para soltar este ecrã, toque sem soltar em Vista geral."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"A aplicação está fixa: não é permitido soltá-la neste dispositivo."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ecrã fixo"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ecrã solto"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index b935cdb15c30..a99a86fb5c7d 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar cont. da janela"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecionar o conteúdo da janela com a qual você está interagindo."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ativar Explorar por toque"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Itens tocados serão falados em voz alta, e a tela poderá ser explorada por meio de gestos."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Ativar acessibilidade na Web aprimorada"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Scripts podem ser instalados para tornar o conteúdo do app mais acessível."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observar o texto digitado"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Insira o PUK e o novo código PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Código PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Novo código PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Toque para digitar a senha"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Digite a senha para desbloquear"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Insira o PIN para desbloquear"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Código PIN incorreto."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Algumas funções do sistema podem não funcionar"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Não há armazenamento suficiente para o sistema. Certifique-se de ter 250 MB de espaço livre e reinicie."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> está em execução"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Toque para ver mais informações ou parar o app."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Cancelar"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Iniciando apps."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Concluindo a inicialização."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> em execução"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Toque para alternar para o app"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Alternar entre apps?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Outro app já está em execução e deve ser interrompido antes que você inicie um novo app."</string>
<string name="old_app_action" msgid="493129172238566282">"Voltar para <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Iniciar <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Parar o app antigo sem salvar."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> excedeu o limite de memória"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"O despejo de heap foi coletado. Toque para compartilhar"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Compartilhar despejo de heap?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"O processo <xliff:g id="PROC">%1$s</xliff:g> excedeu seu limite de memória de <xliff:g id="SIZE">%2$s</xliff:g>. Um despejo de heap está disponível para compartilhamento com o desenvolvedor. Tenha cuidado: esse despejo de heap pode conter informações pessoais às quais o aplicativo tem acesso."</string>
<string name="sendText" msgid="5209874571959469142">"Escolha uma ação para o texto"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"O Wi-Fi não tem acesso à Internet"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Toque para ver opções"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Não foi possível se conectar a redes Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" tem uma conexão de baixa qualidade com a Internet."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Permitir conexão?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Iniciar o Wi-Fi Direct. Isso desativará o ponto de acesso/cliente Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Não foi possível iniciar o Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct ativado"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Toque para ver as configurações"</string>
<string name="accept" msgid="1645267259272829559">"Aceitar"</string>
<string name="decline" msgid="2112225451706137894">"Recusar"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Convite enviado"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para transferência de fotos"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectado a um acessório USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Toque para ver mais opções."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depuração USB conectada"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Toque para desativar a depuração do USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Gerando relatório do bug..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Compartilhar relatório do bug?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Compartilhando relatório do bug…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Novo <xliff:g id="NAME">%s</xliff:g> detectado"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Para transferir fotos e mídia"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> corrompido"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> está corrompido. Toque para corrigir."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> não compatível"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Este dispositivo não é compatível com esse <xliff:g id="NAME">%s</xliff:g>. Toque para configurar em um formato compatível."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> foi removido inesperadamente"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Desconecte <xliff:g id="NAME">%s</xliff:g> antes da remoção para evitar a perda de dados"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Mídia <xliff:g id="NAME">%s</xliff:g> removida."</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"VPN sempre ativa conectando..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN sempre ativa conectada"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Erro na VPN sempre ativa"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Toque para configurar"</string>
<string name="upload_file" msgid="2897957172366730416">"Escolher arquivo"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nenhum arquivo escolhido"</string>
<string name="reset" msgid="2448168080964209908">"Redefinir"</string>
<string name="submit" msgid="1602335572089911941">"Enviar"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Modo carro ativado"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Toque para sair do modo carro."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Vínculo ou ponto de acesso ativo"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Toque para configurar."</string>
<string name="back_button_label" msgid="2300470004503343439">"Voltar"</string>
<string name="next_button_label" msgid="1080555104677992408">"Avançar"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Ignorar"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Adicionar conta"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Aumentar"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Diminuir"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> toque e mantenha pressionado."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Deslize para cima para aumentar e para baixo para diminuir."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aumentar minuto"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Diminuir minuto"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Armazenamento USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Editar"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Aviso sobre uso de dados"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Toque para ver uso e config."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Limite de dados 2G-3G atingido"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Limite de dados 4G atingido"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Limite de dados celular atingido"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Limite de dados Wi-Fi excedido"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> acima do limite especificado."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Dados de segundo plano restritos"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Toque para remover a restrição."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Certificado de segurança"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Este certificado é válido."</string>
<string name="issued_to" msgid="454239480274921032">"Emitido para:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Selecione o ano"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> excluído"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Trabalho: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Para liberar esta tela, toque no botão \"Voltar\" e mantenha-o pressionado."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Para liberar esta tela, toque no botão \"Visão geral\" e mantenha-o pressionado."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"O app está fixado. A liberação não é permitida neste dispositivo."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Tela fixada"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Tela liberada"</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 24c8fc5e5293..2175c32fb904 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -266,8 +266,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperează conținutul ferestrei"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspectează conținutul unei ferestre cu care interacționați."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activează funcția Explorați prin atingere"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Elementele atinse vor fi rostite cu voce tare, iar ecranul poate fi explorat utilizând gesturi."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activează accesibilitatea web îmbunătățită"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Pot fi instalate scripturi pentru a face conținutul aplicațiilor mai accesibil."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Remarcă textul pe care îl introduceți"</string>
@@ -666,8 +665,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Introduceți codul PUK și noul cod PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Codul PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Noul cod PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Atingeți ca să introduceți parola"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Introduceți parola pentru a debloca"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Introduceți codul PIN pentru a debloca"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Cod PIN incorect."</string>
@@ -939,8 +937,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Este posibil ca unele funcții de sistem să nu funcționeze"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Spațiu de stocare insuficient pentru sistem. Asigurați-vă că aveți 250 MB de spațiu liber și reporniți."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> rulează acum"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Atingeți pentru mai multe informații sau pentru a opri aplicația."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Anulați"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -1014,8 +1011,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Se pornesc aplicațiile."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Se finalizează pornirea."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Rulează <xliff:g id="APP">%1$s</xliff:g>"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Atingeți ca să comutați la aplicație"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Comutați între aplicații?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"O altă aplicație rulează deja și trebuie oprită înainte a putea porni o aplicație nouă."</string>
<string name="old_app_action" msgid="493129172238566282">"Reveniți la <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1023,8 +1019,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Porniți <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Opriți vechea aplicație fără să salvați."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> a depășit limita de memorie"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Datele privind memoria au fost culese; atingeți pentru a trimite"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Trimiteți datele privind memoria?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Procesul <xliff:g id="PROC">%1$s</xliff:g> și-a depășit limita de memorie de <xliff:g id="SIZE">%2$s</xliff:g>. Sunt disponibile datele privind memoria, pe care le puteți trimite dezvoltatorului. Atenție: aceste date privind memoria pot conține informațiile personale la care aplicația are acces."</string>
<string name="sendText" msgid="5209874571959469142">"Alegeți o acțiune pentru text"</string>
@@ -1062,8 +1057,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Rețeaua Wi-Fi nu are acces la internet"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Atingeți pentru opțiuni"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nu se poate conecta la Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" are o conexiune la internet slabă."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Permiteți conectarea?"</string>
@@ -1073,8 +1067,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Porniți Wi-Fi Direct. Acest lucru va dezactiva clientul/hotspotul Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct nu a putut porni."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct este activat"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Atingeți pentru setări"</string>
<string name="accept" msgid="1645267259272829559">"Acceptați"</string>
<string name="decline" msgid="2112225451706137894">"Refuzați"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Invitația a fost trimisă."</string>
@@ -1126,11 +1119,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Conexiune USB pentru transferul fotografiilor"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"Conexiune USB pentru MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Conectat la un accesoriu USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Atingeți pentru mai multe opțiuni."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Depanarea USB este conectată"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Atingeți ca să dezactivați remedierea erorilor prin USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Se creează un raport de eroare…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Trimiteți raportul de eroare?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Se trimite raportul de eroare…"</string>
@@ -1150,11 +1141,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"A fost detectat un nou <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Pentru a transfera fotografii și fișiere media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> este deteriorat"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> este deteriorat. Atingeți pentru a remedia."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> necompatibil"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Dispozitivul nu este compatibil cu acest <xliff:g id="NAME">%s</xliff:g>. Atingeți pentru configurare într-un format compatibil."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> scos pe neașteptate"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Demontați <xliff:g id="NAME">%s</xliff:g> înainte de a-l scoate pentru a nu pierde datele"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> scos"</string>
@@ -1226,18 +1215,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Se efectuează conectarea la rețeaua VPN activată permanent…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Conectat(ă) la rețeaua VPN activată permanent"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Eroare de rețea VPN activată permanent"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Atingeți ca să configurați"</string>
<string name="upload_file" msgid="2897957172366730416">"Alegeți un fișier"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nu au fost găsite fișiere"</string>
<string name="reset" msgid="2448168080964209908">"Resetați"</string>
<string name="submit" msgid="1602335572089911941">"Trimiteți"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mod Mașină activat"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Atingeți ca să ieșiți din modul Mașină."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering sau hotspot activ"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Atingeți ca să configurați."</string>
<string name="back_button_label" msgid="2300470004503343439">"Înapoi"</string>
<string name="next_button_label" msgid="1080555104677992408">"Înainte"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Omiteți"</string>
@@ -1271,8 +1257,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Adăugați un cont"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Creșteți"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Reduceți"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> atingeți lung."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Glisați în sus pentru a crește și în jos pentru a reduce."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Creșteți valoarea pentru minute"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Reduceți valoarea pentru minute"</string>
@@ -1316,8 +1301,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Dsipozitiv de stocare USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Editați"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Avertisment de utiliz. a datelor"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Atingeți ca să vedeți utilizarea/setările."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Ați atins limita de date 2G-3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Ați atins limita de date 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Ați atins limita de date mobile"</string>
@@ -1329,8 +1313,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"S-a depășit limita de date Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> peste limita specificată."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Datele de fundal restricționate"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Atingeți ca să eliminați restricția."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Certificat de securitate"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Certificatul este valid."</string>
<string name="issued_to" msgid="454239480274921032">"Emis către:"</string>
@@ -1547,10 +1530,8 @@
<string name="select_year" msgid="7952052866994196170">"Selectați anul"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> a fost șters"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> de serviciu"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Pentru a anula fixarea acestui ecran, atingeți lung opțiunea Înapoi."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Pentru a anula fixarea acestui ecran, atingeți lung opțiunea Recente."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplicația este fixată: Anularea fixării nu este permisă pe acest dispozitiv."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ecran fixat"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Fixarea ecranului anulată"</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 2d1a0dad7180..3f1123901a31 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -269,8 +269,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Получать содержимое окна"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Анализировать содержимое активного окна."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Включать аудиоподсказки"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Озвучивать нажимаемые элементы и разрешать управление устройством с помощью жестов."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Включать спец. возможности для Интернета"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Могут быть установлены дополнительные скрипты."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Обрабатывать набираемый текст"</string>
@@ -669,8 +668,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Введите PUK-код и новый PIN-код"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-код"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Новый PIN-код"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Нажмите для ввода пароля"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Введите пароль"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Введите PIN-код"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Неверный PIN-код."</string>
@@ -954,8 +952,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Некоторые функции могут не работать"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Недостаточно свободного места для системы. Освободите не менее 250 МБ дискового пространства и перезапустите устройство."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" выполняется"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Нажмите, чтобы получить дополнительные данные или выключить приложение."</string>
<string name="ok" msgid="5970060430562524910">"ОК"</string>
<string name="cancel" msgid="6442560571259935130">"Отмена"</string>
<string name="yes" msgid="5362982303337969312">"ОК"</string>
@@ -1029,8 +1026,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Запуск приложений."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Окончание загрузки..."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Приложение <xliff:g id="APP">%1$s</xliff:g> запущено"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Нажмите, чтобы перейти в приложение."</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Переключение приложений"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Выполняется другое приложение, которое необходимо остановить перед запуском нового."</string>
<string name="old_app_action" msgid="493129172238566282">"Вернуться к приложению <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1038,8 +1034,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Запустить приложение <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Остановить старое приложение без сохранения изменений."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Объем памяти процесса \"<xliff:g id="PROC">%1$s</xliff:g>\" превышен"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Создан дамп кучи. Нажмите, чтобы отправить его."</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Отправить дамп кучи?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Процесс \"<xliff:g id="PROC">%1$s</xliff:g>\" превысил объем памяти (<xliff:g id="SIZE">%2$s</xliff:g>). При необходимости отправьте созданный дамп кучи разработчику. Обратите внимание, что файл может содержать личные данные, доступные приложению."</string>
<string name="sendText" msgid="5209874571959469142">"Выберите действие для текста"</string>
@@ -1079,8 +1074,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Сеть Wi-Fi не подключена к Интернету"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Нажмите, чтобы показать варианты."</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Не удалось подключиться к сети Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" – плохое интернет-соединение."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Разрешить подключение?"</string>
@@ -1090,8 +1084,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Начать соединение через Wi-Fi Direct. Модуль Wi-Fi будет отключен."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Не удалось запустить Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct включен"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Нажмите, чтобы открыть настройки."</string>
<string name="accept" msgid="1645267259272829559">"Принять"</string>
<string name="decline" msgid="2112225451706137894">"Отклонить"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Приглашение отправлено"</string>
@@ -1143,11 +1136,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Передача фото через USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI через USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB-устройство подключено"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Нажмите, чтобы показать дополнительные параметры."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Отладка по USB разрешена"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Нажмите, чтобы отключить отладку по USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Подготовка отчета об ошибке"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Разрешить доступ к информации об ошибке?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Отправка отчета об ошибке"</string>
@@ -1167,11 +1158,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Обнаружена новая карта \"<xliff:g id="NAME">%s</xliff:g>\""</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Для переноса фотографий и других файлов"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> не работает"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g>: носитель поврежден. Нажмите, чтобы устранить неполадки."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> не поддерживается"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Устройство не поддерживает этот носитель (<xliff:g id="NAME">%s</xliff:g>). Нажмите, чтобы настроить."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Карта \"<xliff:g id="NAME">%s</xliff:g>\" извлечена неправильно"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Перед тем как извлечь карту \"<xliff:g id="NAME">%s</xliff:g>\", отключите ее, чтобы избежать потери данных."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Карта \"<xliff:g id="NAME">%s</xliff:g>\" извлечена"</string>
@@ -1243,18 +1232,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Подключение…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Подключено"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Ошибка"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Нажмите, чтобы настроить."</string>
<string name="upload_file" msgid="2897957172366730416">"Выбрать файл"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Не выбран файл"</string>
<string name="reset" msgid="2448168080964209908">"Сбросить"</string>
<string name="submit" msgid="1602335572089911941">"Отправить"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Режим \"В автомобиле\""</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Нажмите, чтобы выйти из автомобильного режима."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Включен режим модема"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Нажмите, чтобы настроить."</string>
<string name="back_button_label" msgid="2300470004503343439">"Назад"</string>
<string name="next_button_label" msgid="1080555104677992408">"Далее"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Пропустить"</string>
@@ -1289,8 +1275,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Добавить аккаунт"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Увеличить"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Уменьшить"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"Нажмите и удерживайте <xliff:g id="VALUE">%s</xliff:g>."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Проведите вверх, чтобы увеличить значение, и вниз, чтобы уменьшить его."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"На минуту вперед"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"На минуту назад"</string>
@@ -1334,8 +1319,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-накопитель"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Изменить"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Осталось мало трафика"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Нажмите, чтобы проверить трафик и настройки."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Достигнут лимит трафика 2G/3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Достигнут лимит трафика 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Достигнут лимит мобильного трафика"</string>
@@ -1347,8 +1331,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Превышен лимит трафика Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Лимит превышен на <xliff:g id="SIZE">%s</xliff:g>."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Фон. режим ограничен"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Нажмите, чтобы отменить ограничение."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Сертификат безопасности"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Этот сертификат действителен."</string>
<string name="issued_to" msgid="454239480274921032">"Кому выдан:"</string>
@@ -1566,10 +1549,8 @@
<string name="select_year" msgid="7952052866994196170">"Выберите год"</string>
<string name="deleted_key" msgid="7659477886625566590">"Цифра <xliff:g id="KEY">%1$s</xliff:g> удалена"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Рабочий <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Чтобы открепить экран, нажмите и удерживайте кнопку \"Назад\"."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Чтобы открепить экран, нажмите и удерживайте кнопку \"Обзор\"."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Включена блокировка в приложении. Ее отключение запрещено правилами организации."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Блокировка включена"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Блокировка выключена"</string>
diff --git a/core/res/res/values-si-rLK/strings.xml b/core/res/res/values-si-rLK/strings.xml
index 530f894fecf7..17a709c366ef 100644
--- a/core/res/res/values-si-rLK/strings.xml
+++ b/core/res/res/values-si-rLK/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"කවුළු අන්න්තර්ගතය ලබාගන්න"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ඔබ අන්තර්ක්‍රියාකාරී වන කවුළුවේ අන්තර්ගතය පරීක්ෂා කරන්න."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ස්පර්ශයෙන් ගවේෂණය සක්‍රිය කරන්න"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"තට්ටු කළ අයිතම හඬ නගා කියවනු ඇති අතර ඉංගිති භාවිතයෙන් තිරය ගවේෂණය කිරීමට හැකිය."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"උසස් වෙබ් ප්‍රවේශ්‍යතාව සක්‍රිය කරන්න"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"යෙදුම් අන්තර්ගතයට ප්‍රවේශ්‍යතාවය වැඩිවන ලෙස සකස් කිරීමට ඇතැම් විට ස්ක්‍රිප්ට් ස්ථාපනය කර ඇත."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"ඔබ ටයිප් කළ පෙළ බලන්න"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK සහ නව PIN කේතය ටයිප් කරන්න"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK කේතය"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"නව PIN කේතය"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"මුරපදය ටයිප් කිරීමට තට්ටු කරන්න"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"අගුළු ඇරීමට මුරපදය ටයිප් කරන්න"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"අගුළු හැරීමට PIN එක ටයිප් කරන්න"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"වැරදි PIN කේතයකි."</string>
@@ -926,8 +924,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"සමහර පද්ධති කාර්යයන් ක්‍රියා නොකරනු ඇත"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"පද්ධතිය සඳහා ප්‍රමාණවත් ඉඩ නොමැත. ඔබට 250MB නිදහස් ඉඩක් තිබෙන ඔබට තිබෙන බව සහතික කරගෙන නැවත උත්සාහ කරන්න."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ධාවනය වේ"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"වැඩිපුර තොරතුරු හෝ යෙදුම නැවැත්වීම සඳහා තට්ටු කරන්න."</string>
<string name="ok" msgid="5970060430562524910">"හරි"</string>
<string name="cancel" msgid="6442560571259935130">"අවලංගු කරන්න"</string>
<string name="yes" msgid="5362982303337969312">"හරි"</string>
@@ -1001,8 +998,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"යෙදුම් ආරම්භ කරමින්."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"ඇරඹුම අවසාන කරමින්."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> ධාවනය වෙමින්"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"යෙදුමට මාරු වීමට තට්ටු කරන්න"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"යෙදුම් මාරු වනවාද?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"අලුත් යෙදුමක් ආරම්භ කිරීමට පෙර තවමත් ක්‍රියාවෙහි යෙදෙමින් පවතින යෙදුම නැවැත්විය යුතුයි."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> වෙත ආපසු යන්න"</string>
@@ -1010,8 +1006,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> අරඹන්න"</string>
<string name="new_app_description" msgid="1932143598371537340">"සුරැකීමකින් තොරව පරණ යෙදුම නවත්වන්න."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> මතකයේ සීමාව ඉක්මවා ඇත"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"ඉවත දැමීම් ගොඩ රැස් කර ඇත. බෙදා ගැනීමට තට්ටු කරන්න"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"සංච නික්ෂේපය බෙදාගන්න ද?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> ක්‍රියාවලිය එහි ක්‍රියාවලියේ <xliff:g id="SIZE">%2$s</xliff:g> මතකය ඉක්මවා ඇත. ඔබට එහි වර්ධකයන් සමග බෙදාගැනීමට සංච නික්ෂේපයක් ඇත. ප්‍රවේසම් වන්න: මෙම යෙදුම පිවිසිය හැකි ඔබගේ පෞද්ගලික තොරතුරු මෙම සංච නික්ෂේපයෙහි අඩංගු වී තිබිය හැකිය."</string>
<string name="sendText" msgid="5209874571959469142">"පෙළ සඳහා ක්‍රියාව තෝරන්න"</string>
@@ -1047,8 +1042,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi හට අන්තර්ජාල ප්‍රවේශය නැත"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"විකල්ප සඳහා තට්ටු කරන්න"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi වෙත සම්බන්ධ විය නොහැක"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" දුබල අන්තර්ජාල සම්බන්ධතාවයක් ඇත."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"සම්බන්ධතාවයට ඉඩ දෙන්නද?"</string>
@@ -1058,8 +1052,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"ඍජු Wi-Fi ආරම්භ කරන්න. මෙය Wi-Fi සේවාදායක/හොට්ස්පොට් එක අක්‍රිය කරනු ඇත."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"ඍජු Wi-Fi ආරම්භ කළ නොහැක."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi ඍජු සම්බන්ධතාව සක්‍රියයි"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"සැකසීම් සඳහා තට්ටු කරන්න"</string>
<string name="accept" msgid="1645267259272829559">"පිළිගන්න"</string>
<string name="decline" msgid="2112225451706137894">"ප්‍රතික්ෂේප කරන්න"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ආරාධනාව යවන ලදි"</string>
@@ -1111,11 +1104,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ඡායාරූප හුවමාරුව සඳහා USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI සඳහා USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB මෙවලමකට සම්බන්ධිතයි"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"තවත් විකල්ප සඳහා තට්ටු කරන්න."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB නිදොස්කරණය සම්බන්ධිතයි"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB නිදොස්කරණය අබල කිරීමට තට්ටු කරන්න."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"දෝෂ වාර්තාවක් ගනිමින්…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"දෝෂ වාර්තාව බෙදා ගන්නද?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"දෝෂ වාර්තාවක් බෙදා ගනිමින්..."</string>
@@ -1135,11 +1126,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"නව <xliff:g id="NAME">%s</xliff:g> අනාවරණය කරන ලදි"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ඡායාරූප සහ මාධ්‍ය හුවමාරු කිරීම සඳහා"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"දූෂිත <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> දූෂිතය. විසඳීමට තට්ටු කරන්න."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"සහාය නොදක්වන <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"මෙම උපාංගය මෙම <xliff:g id="NAME">%s</xliff:g> සඳහා සහාය නොදක්වයි. සහාය දක්වන ආකෘතියකින් පිහිටුවීමට තට්ටු කරන්න."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> අනපේක්ෂිතව ඉවත් කරන ලදි"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"දත්ත නැතිවීම වැළක්වීමට <xliff:g id="NAME">%s</xliff:g> ආචයනය ඉවත්කිරීමට පෙර ගලවන්න."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> ඉවත් කරන ලදි"</string>
@@ -1211,18 +1200,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"සැමවිටම VPN සම්බන්ධ වෙමින්…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"නිරතුරුවම VPN සම්බන්ධ කර ඇත"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"සැමවිට සක්‍රිය VPN දෝෂය"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"වින්‍යාස කිරීමට තට්ටු කරන්න"</string>
<string name="upload_file" msgid="2897957172366730416">"ගොනුව තෝරන්න"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ගොනුවක් තෝරාගෙන නැත"</string>
<string name="reset" msgid="2448168080964209908">"යළි පිහිටුවන්න"</string>
<string name="submit" msgid="1602335572089911941">"යොමු කරන්න"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"මෝටර් රථ ආකාරය සබල කර ඇත"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"මෝටර් රථ ප්‍රකාරයෙන් ඉවත් වීමට තට්ටු කරන්න."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"ටෙදරින් හෝ හොට්ස්පොට් සක්‍රීයයි"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"පිහිටුවීමට තට්ටු කරන්න."</string>
<string name="back_button_label" msgid="2300470004503343439">"ආපසු"</string>
<string name="next_button_label" msgid="1080555104677992408">"මීලඟ"</string>
<string name="skip_button_label" msgid="1275362299471631819">"මඟ හරින්න"</string>
@@ -1255,8 +1241,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"ගිණුමක් එකතු කරන්න"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"වැඩි කරන්න"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"අඩු කරන්න"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> ස්පර්ශ කර අල්ලා ගෙන සිටින්න."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"වැඩි කිරීමට ඉහලට සර්පණය කරන්න සහ අඩු කිරීමට පහලට සර්පණය කරන්න."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"මිනිත්තුවක් වැඩි කරන්න"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"මිනිත්තුව අඩු කරන්න"</string>
@@ -1300,8 +1285,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB ආචයනය"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"සංස්කරණය කරන්න"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"දත්ත භාවිතා අවවාදය"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"භාවිතය සහ සැකසීම් බැලීමට තට්ටු කරන්න."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G දත්ත සීමාවට ළඟාවී ඇත"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G දත්ත සීමාවට ළඟාවී ඇත"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"සෙල්‍යුලර් දත්ත සීමාවට ළඟාවී ඇත"</string>
@@ -1313,8 +1297,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi දත්ත සීමාව ඉක්මවා යන ලදි"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"සඳහන් කළ සීමාවට වඩා <xliff:g id="SIZE">%s</xliff:g> වැඩිය."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"පසුබිම් දත්ත සිමා කරන ලදි"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"සීමා කිරීම ඉවත් කිරීමට තට්ටු කරන්න."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"ආරක්‍ෂිත සහතිකය"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"මෙම සහතිකය වලංගුයි."</string>
<string name="issued_to" msgid="454239480274921032">"ලබාදුන්නේ:"</string>
@@ -1530,10 +1513,8 @@
<string name="select_year" msgid="7952052866994196170">"වසර තෝරන්න"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> මකා දමන ලදි"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"වැඩ <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"මෙම තිරය ඇමුණුම් ඉවත් කිරීමට, ස්පර්ශ කර අල්ලා ගෙන සිටින්න."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"මෙම තිරය ඇමුණුම් ඉවත් කිරීමට, දළ විශ්ලේෂණය ස්පර්ශ කර අල්ලා ගෙන සිටින්න."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"යෙදුම අමුණා ඇත: ගැලවීමට මෙම උපාංගය මත ඉඩ දිය නොහැකිය.‍"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"තිරය අගුළු දමා ඇත"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"තිරයේ අගුළු ඇර ඇත"</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 84fbea33ff2a..3ab2d0b472b4 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -269,8 +269,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Načítať obsah okna"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Môžete preskúmať obsah okna, s ktorým pracujete."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Zapnúť funkciu Preskúmanie dotykom"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Po klepnutí na položku sa vysloví jej názov a obrazovku je možné preskúmať pomocou gest."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Zapnúť vylepšenú dostupnosť na webe"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Môže nainštalovať skripty na sprístupnenie obsahu aplikácie."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Sledovať zadávaný text"</string>
@@ -669,8 +668,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Zadajte kód PUK a nový kód PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kód PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nový kód PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Klepnutím zadajte heslo"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Zadajte heslo na odomknutie"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Zadajte kód PIN na odomknutie"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Nesprávny kód PIN."</string>
@@ -954,8 +952,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Niektoré systémové funkcie nemusia fungovať"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"V úložisku nie je dostatok voľného miesta pre systém. Zaistite, aby ste mali 250 MB voľného miesta a zariadenie reštartujte."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> je spustená"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Klepnutím zobrazíte ďalšie informácie alebo zastavíte aplikáciu."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Zrušiť"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -1029,8 +1026,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Prebieha spúšťanie aplikácií."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Prebieha dokončovanie spúšťania."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Spustená aplikácia: <xliff:g id="APP">%1$s</xliff:g>"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Klepnutím prepnite na aplikáciu"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Prepnúť aplikácie?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Pred spustením novej aplikácie treba zastaviť inú spustenú aplikáciu."</string>
<string name="old_app_action" msgid="493129172238566282">"Návrat k <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1038,8 +1034,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Spustiť <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Zastaviť starú aplikáciu bez uloženia."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Proces <xliff:g id="PROC">%1$s</xliff:g> prekročil limit pamäte"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Boli zhromaždené zálohy údajov; zdieľajte ich klepnutím"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Chcete zdieľať zálohy údajov?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proces <xliff:g id="PROC">%1$s</xliff:g> prekročil limit <xliff:g id="SIZE">%2$s</xliff:g> pre pamäť procesu. Máte k dispozícii zálohy údajov, ktoré môžete zdieľať s vývojárom. Postupujte opatrne: tieto zálohy údajov nesmú obsahovať žiadne osobné informácie, ku ktorým má táto aplikácia prístup."</string>
<string name="sendText" msgid="5209874571959469142">"Zvoľte akciu pre text"</string>
@@ -1079,8 +1074,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Sieť Wi-Fi nemá prístup k internetu"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Klepnutím získate možnosti"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nepodarilo sa pripojiť k sieti Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" má nekvalitné internetové pripojenie."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Povoliť pripojenie?"</string>
@@ -1090,8 +1084,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Spustiť priame pripojenie siete Wi-Fi. Táto možnosť vypne sieť Wi-Fi v režime klient alebo hotspot."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Priame pripojenie siete Wi-Fi sa nepodarilo spustiť"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Priame pripojenie siete Wi-Fi je zapnuté"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Klepnutím zobrazíte nastavenia"</string>
<string name="accept" msgid="1645267259272829559">"Prijať"</string>
<string name="decline" msgid="2112225451706137894">"Odmietnuť"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Pozvánka bola odoslaná"</string>
@@ -1143,11 +1136,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB na prenos fotiek"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB na pripojenie zariadenia MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Pripojené k periférnemu zariadeniu USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Klepnutím zobrazíte ďalšie možnosti."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Ladenie cez USB pripojené"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Klepnutím zakážete ladenie cez USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Preberá sa hlásenie chyby…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Chcete zdieľať hlásenie chyby?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Zdieľa sa hlásenie chyby…"</string>
@@ -1167,11 +1158,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Bolo zistené nové úložisko <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Na prenos fotiek a médií"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Poškodené úložisko <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"Úložisko <xliff:g id="NAME">%s</xliff:g> je poškodené. Opravte ho klepnutím."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Nepodporované úložisko <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Toto zariadenie nepodporuje úložisko <xliff:g id="NAME">%s</xliff:g>. Klepnutím ho nastavíte v podporovanom formáte."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Úl. <xliff:g id="NAME">%s</xliff:g> bolo neočakávane odobraté"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Ak chcete zabrániť strate údajov, úložisko <xliff:g id="NAME">%s</xliff:g> pred odobratím odpojte"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Úložisko <xliff:g id="NAME">%s</xliff:g> bolo odobraté"</string>
@@ -1243,18 +1232,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Pripájanie k vždy zapnutej sieti VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Pripojenie k vždy zapnutej sieti VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Chyba vždy zapnutej siete VPN"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Klepnutím spustíte konfiguráciu"</string>
<string name="upload_file" msgid="2897957172366730416">"Zvoliť súbor"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nie je vybratý žiadny súbor"</string>
<string name="reset" msgid="2448168080964209908">"Obnoviť"</string>
<string name="submit" msgid="1602335572089911941">"Odoslať"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Aktivovaný režim V aute"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Klepnutím ukončíte režim V aute."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering alebo prístupový bod je aktívny"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Klepnutím prejdete na nastavenie."</string>
<string name="back_button_label" msgid="2300470004503343439">"Späť"</string>
<string name="next_button_label" msgid="1080555104677992408">"Ďalej"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Preskočiť"</string>
@@ -1289,8 +1275,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Pridať účet"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Zvýšiť"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Znížiť"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> – klepnúť a podržať."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Ak chcete hodnotu zvýšiť, prejdite prstom nahor. Ak chcete hodnotu znížiť, prejdite prstom nadol."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Pridať minútu"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Ubrať minútu"</string>
@@ -1334,8 +1319,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Ukladací priestor USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Upraviť"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Upozornenie o využití dát"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Klepnutím zobrazíte využitie a nastavenia."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Bol dosiahnutý limit 2G–3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Bol dosiahnutý limit 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Bol dosiahnutý limit mobilných dát"</string>
@@ -1347,8 +1331,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Dát. limit Wi-Fi bol prekročený"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> nad stanovenou hranicou."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Dátové prenosy obmedzené"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Klepnutím odstránite obmedzenie."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Certifikát zabezpečenia"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Certifikát je platný."</string>
<string name="issued_to" msgid="454239480274921032">"Vydané pre:"</string>
@@ -1566,10 +1549,8 @@
<string name="select_year" msgid="7952052866994196170">"Vyberte rok"</string>
<string name="deleted_key" msgid="7659477886625566590">"Číslo <xliff:g id="KEY">%1$s</xliff:g> bolo odstránené"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Práca – <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Ak chcete uvoľniť túto obrazovku, klepnite na tlačidlo Späť a podržte ho."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Ak chcete uvoľniť túto obrazovku, klepnite na tlačidlo Prehľad a podržte ho."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikácia je pripnutá. Uvoľnenie nie je na tomto zariadení povolené."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Obrazovka bola pripnutá"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Obrazovka bola uvoľnená"</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index dd4e467e801a..bb59a0987e91 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -269,8 +269,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pridobiti vsebino okna"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Preverjanje vsebine okna, ki ga uporabljate."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Vklopiti raziskovanje z dotikom"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Elementi, ki se jih dotaknete, bodo izrečeni na glas, zaslon pa lahko raziskujete s potezami."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Vklopiti izboljšano dostopnost spleta za ljudi s posebnimi potrebami"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Za boljšo dostopnost vsebine aplikacije je mogoče namestiti skripte."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Opazovati besedilo, ki ga natipkate"</string>
@@ -669,8 +668,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Vnesite kodo PUK in novo kodo PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Koda PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Nova koda PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Dotaknite se za vnos gesla"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Vnesite geslo za odklepanje"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Vnesite PIN za odklepanje"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Napačna koda PIN."</string>
@@ -954,8 +952,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Nekatere sistemske funkcije morda ne delujejo"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"V shrambi ni dovolj prostora za sistem. Sprostite 250 MB prostora in znova zaženite napravo."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> se izvaja"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Dotaknite se, če želite izvedeti več ali ustaviti aplikacijo."</string>
<string name="ok" msgid="5970060430562524910">"V redu"</string>
<string name="cancel" msgid="6442560571259935130">"Prekliči"</string>
<string name="yes" msgid="5362982303337969312">"V redu"</string>
@@ -1029,8 +1026,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Zagon aplikacij."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Dokončevanje zagona."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> se izvaja"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Dotaknite se, če želite preklopiti na aplikacijo"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Želite preklopiti aplikacije?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Preden zaženete novo aplikacijo, ustavite izvajano."</string>
<string name="old_app_action" msgid="493129172238566282">"Vrni se na <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1038,8 +1034,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Začni <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Ustavi prejšnjo aplikacijo brez shranjevanja."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Proces <xliff:g id="PROC">%1$s</xliff:g> je presegel omejitev pomnilnika"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Izvoz kopice je zbran; dotaknite se za deljenje z drugimi"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Deljenje izvoza kopice z drugimi?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Proces <xliff:g id="PROC">%1$s</xliff:g> je presegel <xliff:g id="SIZE">%2$s</xliff:g> omejitve pomnilnika za proces. Izvoz kopice je na voljo, da ga delite z razvijalcem. Previdno: izvoz kopice lahko vsebuje vaše osebne podatke, do katerih ima aplikacija dostop."</string>
<string name="sendText" msgid="5209874571959469142">"Izberite dejanje za besedilo"</string>
@@ -1079,8 +1074,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Omrežje Wi-Fi nima dostopa do interneta"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Dotaknite se za možnosti"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Z omrežjem Wi-Fi se ni mogoče povezati"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ima slabo internetno povezavo."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Ali dovolite vzpostavitev povezave?"</string>
@@ -1090,8 +1084,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Zaženite Wi-Fi Direct. S tem boste izklopili odjemalca/dostopno točko Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct ni bilo mogoče zagnati."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct je vklopljen"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Dotaknite se za nastavitve"</string>
<string name="accept" msgid="1645267259272829559">"Sprejmem"</string>
<string name="decline" msgid="2112225451706137894">"Zavrni"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Povabilo je poslano"</string>
@@ -1143,11 +1136,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB za prenos fotografij"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB za MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Priključen na dodatek USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Dotaknite se za več možnosti."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Iskanje in odpravljanje napak USB je povezano"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Dotaknite se, če želite onemogočiti odpravljanje napak prek vrat USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Zajemanje poročila o napakah …"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Želite poslati poročilo o napakah?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Pošiljanje poročila o napakah …"</string>
@@ -1167,11 +1158,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Zaznana je bila nova shramba <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Za prenos fotografij in predstavnosti"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Naprava za sh. <xliff:g id="NAME">%s</xliff:g> je poškodovana"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"Nosilec <xliff:g id="NAME">%s</xliff:g> je poškodovan. Dotaknite se, če želite odpraviti napako."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Nepodprta naprava za shran. <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Ta naprava ne podpira tega nosilca <xliff:g id="NAME">%s</xliff:g>. Dotaknite se, če želite nastaviti v podprti obliki."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Shramba <xliff:g id="NAME">%s</xliff:g> nepričak. odstranjena"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Izpnite shrambo <xliff:g id="NAME">%s</xliff:g>, preden jo odstranite, da se izognete izgubi podatkov."</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Shramba <xliff:g id="NAME">%s</xliff:g> je bila odstranjena"</string>
@@ -1243,18 +1232,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Povezovanje v stalno vklopljeno navidezno zasebno omrežje ..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Vzpostavljena povezava v stalno vklopljeno navidezno zasebno omrežje"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Napaka stalno vklopljenega navideznega zasebnega omrežja"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Dotanite se, če želite konfigurirati"</string>
<string name="upload_file" msgid="2897957172366730416">"Izberi datoteko"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nobena datoteka ni izbrana"</string>
<string name="reset" msgid="2448168080964209908">"Ponastavi"</string>
<string name="submit" msgid="1602335572089911941">"Pošlji"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Način delovanja za avtomobil je omogočen"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Dotaknite se, če želite zapreti avtomobilski način."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Aktivna povezava z internetom ali dostopna točka sta aktivni"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Dotaknite se, če želite nastaviti."</string>
<string name="back_button_label" msgid="2300470004503343439">"Nazaj"</string>
<string name="next_button_label" msgid="1080555104677992408">"Naprej"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Preskoči"</string>
@@ -1289,8 +1275,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Dodaj račun"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Več"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Manj"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"Dotaknite se vrednosti <xliff:g id="VALUE">%s</xliff:g> in jo pridržite."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Povlecite navzgor za povečanje in navzdol za zmanjšanje."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Povečanje vrednosti za minuto"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Zmanjšanje vrednosti za minuto"</string>
@@ -1334,8 +1319,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Pomnilnik USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Uredi"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Opozorilo o uporabi podatkov"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Dot. se za ogled upor. in nast."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Dosežena pod. omejitev za 2G/3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Dosežena pod. omejitev za 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Dosežena mobilna pod. omejitev"</string>
@@ -1347,8 +1331,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Presež. omej. za podatke Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Velikost <xliff:g id="SIZE">%s</xliff:g> presega omejitev"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Podatki v ozadju so omejeni"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Dotaknite se za odstr. omejitve."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Varnostno potrdilo"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"To potrdilo je veljavno."</string>
<string name="issued_to" msgid="454239480274921032">"Izdano za:"</string>
@@ -1566,10 +1549,8 @@
<string name="select_year" msgid="7952052866994196170">"Izberite leto"</string>
<string name="deleted_key" msgid="7659477886625566590">"Številka <xliff:g id="KEY">%1$s</xliff:g> je izbrisana"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> za delo"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Če želite odpeti ta zaslon, se dotaknite tipke za nazaj in jo pridržite."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Če želite odpeti ta zaslon, se dotaknite tipke za pregled in jo pridržite."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikacija je pripeta: v tej napravi odpenjanje ni dovoljeno."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Zaslon je pripet"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Zaslon je odpet"</string>
diff --git a/core/res/res/values-sq-rAL/strings.xml b/core/res/res/values-sq-rAL/strings.xml
index 3f2b30d1b5ec..51015f22b568 100644
--- a/core/res/res/values-sq-rAL/strings.xml
+++ b/core/res/res/values-sq-rAL/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Nxjerrë përmbajtjen e dritares"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspekton përmbajtjen e dritares me të cilën po ndërvepron."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktivizojë funksionin \"Eksploro me prekje\""</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Artikujt e trokitur do të lexohen me zë të lartë dhe ekrani mund të eksplorohet duke përdorur gjestet."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Aktivizojë qasjen e përmirësuar në ueb"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skriptet mund të instalohen për ta bërë përmbajtjen e aplikacionit më të qasshme."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Vëzhgojë tekstin që shkruan"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Shkruaj PUK-un dhe PIN-in e ri"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Kodi PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Kod i ri PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Trokit për të shkruar fjalëkalimin"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Shkruaj fjalëkalimin për të shkyçur"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Shkruaj PIN-in për ta shkyçur"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Kodi PIN është i pasaktë."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Disa funksione të sistemit mund të mos punojnë"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Nuk ka hapësirë të mjaftueshme ruajtjeje për sistemin. Sigurohu që të kesh 250 MB hapësirë të lirë dhe pastaj të rifillosh."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> është në punë."</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Trokit për më shumë informacione ose për të ndaluar aplikacionin."</string>
<string name="ok" msgid="5970060430562524910">"Në rregull"</string>
<string name="cancel" msgid="6442560571259935130">"Anulo"</string>
<string name="yes" msgid="5362982303337969312">"Në rregull"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Aplikacionet e fillimit."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Po përfundon nisjen."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> është në punë"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Trokit për të kaluar tek aplikacioni"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Të ndryshohen aplikacionet?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Një tjetër aplikacion është në punë dhe duhet ndaluar përpara se të nisësh një tjetër."</string>
<string name="old_app_action" msgid="493129172238566282">"Kthehu në <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Fillo <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Ndalo aplikacionin e vjetër pa e ruajtur."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> e ka kaluar kufirin e memories"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Stiva e skedarëve fiktivë është mbledhur; trokit për t\'i ndarë"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Të ndahet stiva e skedarëve fiktivë?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Procesi <xliff:g id="PROC">%1$s</xliff:g> ka kaluar kufirin e tij të memories së procesit me <xliff:g id="SIZE">%2$s</xliff:g>. Mundësohet stivimi e skedarëve fiktivë në mënyrë që t\'i ndani me zhvilluesit e tyre. Bëni kujdes pasi stiva e skedarëve fiktivë mund të përmbajë ndonjë informacion tëndin personal ku aplikacioni ka qasje."</string>
<string name="sendText" msgid="5209874571959469142">"Zgjidh një veprim për tekstin"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi nuk ka qasje në internet"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Trokit për opsionet"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Nuk mund të lidhej me Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ka një lidhje të dobët interneti."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Të lejohet lidhja?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Fillo \"Wi-Fi Direkt\". Kjo do ta çaktivizojë klientin ose zonën e qasjes Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Nuk mundi të fillonte \"Wi-Fi Direkt\"."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"\"Wi-Fi Direkt\" është aktiv"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Trokit për cilësimet"</string>
<string name="accept" msgid="1645267259272829559">"Prano"</string>
<string name="decline" msgid="2112225451706137894">"Refuzo"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Ftesa u dërgua"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB për transferimin e fotografive"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB për MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"U lidh me një ndihmës USB-je"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Trokit për më shumë opsione."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Korrigjuesi i USB-së i lidhur"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Trokit për të çaktivizuar korrigjimin e gabimeve të USB-së."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Po merret raporti i defekteve në kod…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Të ndahet raporti i defektit në kod?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Po ndan raportin e defekteve në kod..."</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"U zbulua karta e re <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Për transferimin e fotografive dhe skedarëve të tjerë"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> e dëmtuar"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> është dëmtuar. Trokit për ta rregulluar."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> nuk mbështetet"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Kjo pajisje nuk e mbështet këtë <xliff:g id="NAME">%s</xliff:g>. Trokit për ta konfiguruar në një format të mbështetur."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> u hoq papritur"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Shkëput <xliff:g id="NAME">%s</xliff:g> para se ta heqësh për të shmangur humbjen e të dhënave"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Është hequr <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Po lidh VPN-në për aktivizim të përhershëm…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"VPN e lidhur në mënyrë të përhershme"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Gabimi VPN-je për aktivizimin e përhershëm"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Trokit për të konfiguruar"</string>
<string name="upload_file" msgid="2897957172366730416">"Zgjidh skedarin"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Nuk u zgjodh asnjë skedar"</string>
<string name="reset" msgid="2448168080964209908">"Rivendos"</string>
<string name="submit" msgid="1602335572089911941">"Dërgo"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Modaliteti \"në makinë\" është i aktivizuar"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Trokit për të dalë nga modaliteti \"në makinë\"."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Lidhja e çiftimit ose ajo e qasjes në zona publike interneti është aktive"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Trokit për ta konfiguruar."</string>
<string name="back_button_label" msgid="2300470004503343439">"Prapa"</string>
<string name="next_button_label" msgid="1080555104677992408">"Përpara"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Kapërce"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Shto llogari"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Rrit"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Pakëso"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"Prek dhe mbaj të shtypur te <xliff:g id="VALUE">%s</xliff:g>."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Rrëshqit lart për të rritur dhe poshtë për të pakësuar."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Rrit vlerat për minutë"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Pakëso vlerat për minutë"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Hapësira ruajtëse e USB-së"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Redakto"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Paralajmërim për përdorimin e të dhënave"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Trokit për të parë përdorimin dhe cilësimet."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Kufiri i të dhënave 2G-3G u arrit"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Kufiri i të dhënave 4G u arrit"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Kufiri i të dhënave celulare u arrit"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Kufiri i të dhënave Wi-Fi u tejkalua"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> mbi kufirin e përcaktuar."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Të dhënat e sfondit janë të kufizuara"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Trokit për të hequr kufizimin."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Certifikatë sigurie"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Certifikata është e vlefshme."</string>
<string name="issued_to" msgid="454239480274921032">"Lëshuar për:"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"Përzgjidh vitin"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> u fshi"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Puna <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Për të hequr gozhdimin e ekranit, prek dhe mbaj të shtypur te \"Prapa\"."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Për të hequr gozhdimin e ekranit, prek dhe mbaj të shtypur te \"Përmbledhja\"."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Ekrani është i gozhduar. Anulimi i mbërthimit nuk lejohet nga organizata jote."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekrani u gozhdua"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekrani u hoq nga gozhdimi"</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 7eb7f83bc22f..becd3c8cf28c 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -266,8 +266,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Преузима садржај прозора"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Проверава садржај прозора са којим остварујете интеракцију."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Укључи Истраживања додиром"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Ставке које додирнете ће бити изговорене наглас, а можете да се крећете по екрану покретима."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Укључи побољшану приступачност веба"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Могу да се инсталирају скрипте да би садржај апликација био приступачнији."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Прати текст који уносите"</string>
@@ -666,8 +665,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Унесите PUK и нови PIN кôд"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK кôд"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Нови PIN кôд"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Додирните за унос лозинке"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Откуцајте лозинку да бисте откључали"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Унесите PIN за откључавање"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN кôд је нетачан."</string>
@@ -939,8 +937,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Неке системске функције можда не функционишу"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Нема довољно меморијског простора за систем. Уверите се да имате 250 MB слободног простора и поново покрените."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Апликација <xliff:g id="APP_NAME">%1$s</xliff:g> је покренута"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Додирните за више информација или заустављање апликације."</string>
<string name="ok" msgid="5970060430562524910">"Потврди"</string>
<string name="cancel" msgid="6442560571259935130">"Откажи"</string>
<string name="yes" msgid="5362982303337969312">"Потврди"</string>
@@ -1014,8 +1011,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Покретање апликација."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Завршавање покретања."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Апликација <xliff:g id="APP">%1$s</xliff:g> је покренута"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Додирните да бисте прешли на апликацију"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Желите ли да пређете на другу апликацију?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Већ је покренута друга апликација која мора да буде заустављена да бисте могли да покренете нову."</string>
<string name="old_app_action" msgid="493129172238566282">"Врати се у <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1023,8 +1019,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Покрени <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Зауставља стару апликацију без чувања."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> премашује ограничење меморије"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Снимак динамичког дела меморије је направљен; додирните за дељење"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Желите ли да делите снимак динамичког дела меморије?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Процес <xliff:g id="PROC">%1$s</xliff:g> је премашио ограничење меморије за процес од <xliff:g id="SIZE">%2$s</xliff:g>. Снимак динамичког дела меморије је доступан и можете да га делите са програмером. Будите опрезни: овај снимак динамичког дела меморије може да садржи неке личне податке којима апликација може да приступа."</string>
<string name="sendText" msgid="5209874571959469142">"Изаберите радњу за текст"</string>
@@ -1062,8 +1057,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi нема приступ интернету"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Додирните за опције"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Није могуће повезати са Wi-Fi мрежом"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" има лошу интернет везу."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Желите ли да дозволите повезивање?"</string>
@@ -1073,8 +1067,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Покрените Wi-Fi Direct. Тиме ћете искључити клијента/хотспот за Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Није могуће покренути Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct је укључен"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Додирните за подешавања"</string>
<string name="accept" msgid="1645267259272829559">"Прихвати"</string>
<string name="decline" msgid="2112225451706137894">"Одбиј"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Позивница је послата"</string>
@@ -1126,11 +1119,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB за пренос слика"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB за MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Повезано са USB додатком"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Додирните за још опција."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Отклањање грешака са USB-а је успостављено"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Додирните да бисте онемогућили отклањање грешака са USB-а."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Извештај о грешци се генерише…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Желите ли да поделите извештај о грешци?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Дели се извештај о грешци…"</string>
@@ -1150,11 +1141,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Нови уређај <xliff:g id="NAME">%s</xliff:g> је откривен"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"За пренос слика и медија"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Уређај <xliff:g id="NAME">%s</xliff:g> је оштећен"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"Уређај <xliff:g id="NAME">%s</xliff:g> је оштећен. Додирните да бисте га поправили."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Уређај <xliff:g id="NAME">%s</xliff:g> није подржан"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Овај уређај не подржава овај уређај <xliff:g id="NAME">%s</xliff:g>. Додирните да бисте подесили подржани формат."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Уређај <xliff:g id="NAME">%s</xliff:g> је неочекивано уклоњен"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Искључите уређај <xliff:g id="NAME">%s</xliff:g> пре уклањања да не бисте изгубили податке"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Уређај <xliff:g id="NAME">%s</xliff:g> је уклоњен"</string>
@@ -1226,18 +1215,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Повезивање стално укљученог VPN-а..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Стално укључени VPN је повезан"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Грешка стално укљученог VPN-а"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Додирните да бисте конфигурисали"</string>
<string name="upload_file" msgid="2897957172366730416">"Одабери датотеку"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Није изабрана ниједна датотека"</string>
<string name="reset" msgid="2448168080964209908">"Поново постави"</string>
<string name="submit" msgid="1602335572089911941">"Пошаљи"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Режим рада у аутомобилу је омогућен"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Додирните да бисте изашли из режима рада у аутомобилу."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Активно повезивање са интернетом преко мобилног уређаја или хотспот"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Додирните да бисте подесили."</string>
<string name="back_button_label" msgid="2300470004503343439">"Назад"</string>
<string name="next_button_label" msgid="1080555104677992408">"Next"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Прескочи"</string>
@@ -1271,8 +1257,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Додај налог"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Повећавање"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Смањивање"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> додирните и задржите."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Превуците нагоре да бисте повећали, а надоле да бисте смањили."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Повећавање минута"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Смањивање минута"</string>
@@ -1316,8 +1301,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB меморија"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Измени"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Упозорење о потрошњи података"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Додирните за потрошњу и подешавања."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Нема више 2G-3G података"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Нема више 4G података"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Нема више података за мобилне"</string>
@@ -1329,8 +1313,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Прекорачење преноса Wi-Fi подат."</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> преко наведеног ограничења."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Позадински подаци су ограничени"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Додирните за уклањање ограничења."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Безбедносни сертификат"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Овај сертификат је важећи."</string>
<string name="issued_to" msgid="454239480274921032">"Издато за:"</string>
@@ -1547,10 +1530,8 @@
<string name="select_year" msgid="7952052866994196170">"Изаберите годину"</string>
<string name="deleted_key" msgid="7659477886625566590">"Избрисали сте <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> на послу"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Да бисте откачили овај екран, додирните и задржите Назад."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Да бисте откачили овај екран, додирните и задржите Преглед."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Апликација је закачена: откачињање није дозвољено на овом уређају."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Екран је закачен"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Екран је откачен"</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index b05264a8993e..8add186dc08d 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Hämta fönsterinnehåll"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Granska innehållet i ett fönster som du interagerar med."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktivera Explore by Touch"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Objekt som användaren trycker på läses upp högt och skärmen kan utforskas med hjälp av rörelser."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Aktivera förbättrad webbtillgänglighet"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skript kan installeras för att göra appens innehåll tillgängligare."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observera text som du skriver"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Ange PUK-koden och en ny PIN-kod"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-kod"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Ny PIN-kod"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Tryck för att ange lösenord"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Ange lösenord för att låsa upp"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Ange PIN-kod för att låsa upp"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Fel PIN-kod."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Det kan hända att vissa systemfunktioner inte fungerar"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Det finns inte tillräckligt med utrymme för systemet. Kontrollera att du har ett lagringsutrymme på minst 250 MB och starta om."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> körs"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Tryck om du vill veta mer eller stoppa appen."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Avbryt"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Appar startas."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Uppgraderingen är klar."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> körs"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Tryck om du vill byta till appen"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Vill du byta app?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"En annan app som körs måste avslutas innan du kan starta en ny."</string>
<string name="old_app_action" msgid="493129172238566282">"Gå tillbaka till <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Starta <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Avbryt den gamla appen utan att spara."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Minnesgränsen har överskridits för <xliff:g id="PROC">%1$s</xliff:g>"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"En minnesdump har skapats – tryck här om du vill dela den"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Vill du dela minnesdumpen?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Minnesgränsen på <xliff:g id="SIZE">%2$s</xliff:g> har överskridits för processen <xliff:g id="PROC">%1$s</xliff:g>. En dump av minnesheapen har skapats så att du kan dela den med utvecklaren. Var försiktig: minnesdumpen kan innehålla personliga uppgifter som appen har åtkomst till."</string>
<string name="sendText" msgid="5209874571959469142">"Välj en åtgärd för text"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi-nätverket är inte anslutet till internet"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Tryck för alternativ"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Det gick inte att ansluta till Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" har en dålig Internetanslutning."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Tillåt anslutning?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Starta direkt Wi-Fi-användning. Detta inaktiverar Wi-Fi-användning med klient/trådlös surfzon."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Det gick inte att starta Wi-Fi direkt."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct är aktiverat"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Tryck för inställningar"</string>
<string name="accept" msgid="1645267259272829559">"Godkänn"</string>
<string name="decline" msgid="2112225451706137894">"Avvisa"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Inbjudan har skickats"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB för överföring av foton"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB för MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Ansluten till ett USB-tillbehör"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Tryck för fler alternativ."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB-felsökning ansluten"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Tryck om du vill inaktivera USB-felsökning."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Felrapporten överförs …"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Vill du dela felrapporten?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Felrapporten delas …"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Nytt <xliff:g id="NAME">%s</xliff:g> har hittats"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"För överföring av foton och media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> har skadats"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> har skadats. Åtgärda genom att trycka."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> stöds inte"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Enheten har inte stöd för <xliff:g id="NAME">%s</xliff:g>. Tryck här om du vill konfigurera i ett format som stöds."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> togs bort oväntat"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Montera bort <xliff:g id="NAME">%s</xliff:g> före borttagningen för att undvika dataförlust"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Ditt <xliff:g id="NAME">%s</xliff:g> har tagits bort"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Ansluter till Always-on VPN ..."</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Ansluten till Always-on VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Fel på Always-on VPN"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Tryck om du vill konfigurera"</string>
<string name="upload_file" msgid="2897957172366730416">"Välj fil"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ingen fil har valts"</string>
<string name="reset" msgid="2448168080964209908">"Återställ"</string>
<string name="submit" msgid="1602335572089911941">"Skicka"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Billäge aktiverat"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Tryck om du vill avsluta billäge."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Internetdelning eller surfpunkt aktiverad"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Tryck om du vill konfigurera."</string>
<string name="back_button_label" msgid="2300470004503343439">"Tillbaka"</string>
<string name="next_button_label" msgid="1080555104677992408">"Nästa"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Hoppa över"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Lägg till konto"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Öka"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Minska"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> tryck länge."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Dra uppåt för att öka och nedåt för att minska."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Öka minuter"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Minska minuter"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB-lagring"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Redigera"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Varning angående dataanvändning"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Visa användning och inställning."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Datagränsen för 2G-3G har uppnåtts"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Datagränsen för 4G har uppnåtts"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Datagränsen för mobilen har uppnåtts"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Gränsen för data via Wi-Fi har överskridits"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> över angiven gräns."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Bakgrundsdata är begränsade"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Ta bort begränsning."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Säkerhetscertifikat"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Certifikatet är giltigt."</string>
<string name="issued_to" msgid="454239480274921032">"Utfärdad till:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Välj år"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> har tagits bort"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> för arbetet"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Om du vill lossa skärmen trycker du länge på Tillbaka."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Om du vill lossa skämen trycker du länge på Översikt."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Appen är fäst. Att lossa den är inte tillåtet på den här enheten."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Skärmen är fäst"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Skärmen är inte längre fäst"</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 8fc9d48694ff..bc767c332720 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -261,8 +261,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Rejesha maudhui ya dirisha"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Chunguza maudhui ya dirisha unaloingiliana nalo."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Washa Chunguza kwa Mguso"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Ukigonga vipengee, vitatamka maneno kwa sauti na unaweza kukagua skrini kwa kutumia ishara."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Washa ufikiaji wa wavuti ulioboreshwa"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Hati zinaweza kusakinishwa ili kuyafanya maudhui ya programu kufikiwa zaidi."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Angalia maandishi unayoyacharaza"</string>
@@ -661,8 +660,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Ingiza PUK na msimbo mpya wa PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Msimbo wa PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Msimbo mpya wa PIN"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Gusa ili uandike nenosiri"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Charaza nenosiri ili kufungua"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Ingiza PIN ili kufungua"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Msimbo wa PIN usio sahihi."</string>
@@ -922,8 +920,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Baadhi ya vipengee vya mfumo huenda visifanye kazi"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Hifadhi haitoshi kwa ajili ya mfumo. Hakikisha una MB 250 za nafasi ya hifadhi isiyotumika na uanzishe upya."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> inatumiwa"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Gonga ili upate maelezo zaidi au usitishe programu."</string>
<string name="ok" msgid="5970060430562524910">"Sawa"</string>
<string name="cancel" msgid="6442560571259935130">"Ghairi"</string>
<string name="yes" msgid="5362982303337969312">"Sawa"</string>
@@ -997,8 +994,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Programu zinaanza"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Inamaliza kuwasha."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> inaendelea"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Gonga ili uende kwenye programu"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Badilisha programu?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Programmu nyingine tayari inaendeshwa na lazima hiyo ikomeshwe kabla ya kuanza nyingine mpya."</string>
<string name="old_app_action" msgid="493129172238566282">"Rejea katika <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1006,8 +1002,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Anza <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Komesha programu ya zamani bila kuhifadhi."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> imezidi kiwango cha hifadhi kinachotakikana"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Imezidi kikomo cha hifadhi; gonga ili uishiriki"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Ungependa kushiriki picha ya binafsi?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Mchakato wa <xliff:g id="PROC">%1$s</xliff:g> umezidi kiwango kinachotakikana cha hifadhi cha <xliff:g id="SIZE">%2$s</xliff:g>. Unaweza kupata picha ya hifadhi ili uishiriki na msadini programu wa picha. Tahadhari: picha hii ya hifadhi inaweza kuwa na maelezo yako ya binafsi ambayo yanaweza kufikiwa na programu."</string>
<string name="sendText" msgid="5209874571959469142">"Chagua kitendo kwa ajili ya maandishi"</string>
@@ -1043,8 +1038,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi haina muunganisho wa intaneti"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Gonga ili upate chaguo"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Haikuweza kuunganisha kwa Mtandao-Hewa"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ina muunganisho duni wa Mtandao."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Ungepenga kuruhusu muunganisho?"</string>
@@ -1054,8 +1048,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Anzisha Wi-Fi Moja kwa Moja. Hii itazima mteja/mtandao-hewa wa Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Haikuweza kuanzisha Wi-Fi Moja kwa Moja."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi ya Moja kwa Moja imewashwa"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Gonga ili uweke mipangilio"</string>
<string name="accept" msgid="1645267259272829559">"Kubali"</string>
<string name="decline" msgid="2112225451706137894">"Kataa"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Mwaliko umetumwa"</string>
@@ -1107,11 +1100,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB kwa ajili ya kuhamisha picha"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB kwa ajili ya MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Imeunganishwa kwa kifuasi cha USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Gonga ili upate chaguo zaidi."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Utatuaji wa USB umeunganishwa"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Gonga ili uzime utatuaji wa USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Inatayarisha ripoti ya hitilafu…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Ungependa kushiriki ripoti ya hitilafu?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Inashiriki ripoti ya hitilafu…"</string>
@@ -1131,11 +1122,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"<xliff:g id="NAME">%s</xliff:g> mpya imegunduliwa"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Kwa ajili ya kuhamisha picha na maudhui"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> iliyoharibika"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> ina hitilafu. Gonga ili uirekebishe."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> isiyotumika"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Kifaa hiki hakitumii <xliff:g id="NAME">%s</xliff:g>. Gonga ili uweke mipangilio ya muundo unaoweza kutumika."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> imeondolewa bila kutarajiwa"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Ondoa <xliff:g id="NAME">%s</xliff:g> kabla ya kuchomoa ili kuepuka kupoteza data"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> imeondolewa"</string>
@@ -1207,18 +1196,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Kila mara VPN iliyowashwa inaunganishwa…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Kila mara VPN iliyowashwa imeunganishwa"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Kila mara kuna hitilafu ya VPN iliyowashwa"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Gonga ili uweke mipangilio"</string>
<string name="upload_file" msgid="2897957172366730416">"Chagua faili"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Hakuna faili iliyochaguliwa"</string>
<string name="reset" msgid="2448168080964209908">"Weka upya"</string>
<string name="submit" msgid="1602335572089911941">"Wasilisha"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mtindo wa gari umewezeshwa"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Gonga ili ufunge hali ya garini."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Kushiriki au kusambaza intaneti kumewashwa"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Gonga ili uweke mipangilio."</string>
<string name="back_button_label" msgid="2300470004503343439">"Nyuma"</string>
<string name="next_button_label" msgid="1080555104677992408">"Ifuatayo"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Ruka"</string>
@@ -1251,8 +1237,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Ongeza akaunti"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Ongeza"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Punguza"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> gusa na ushikilie."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Sogeza juu ili uongeze na chini ili upunguze."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Ongeza dakika"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Punguza dakika"</string>
@@ -1296,8 +1281,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Hifadhi ya USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Badilisha"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Onyo la matumizi ya data"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Gonga ili uangalie matumizi na mipangilio."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Kikomo data ya 2G-3G kimefikiwa"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Kikomo cha data ya 4G kimefikiwa"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Kikomo data ya simu kimefikiwa"</string>
@@ -1309,8 +1293,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Taarifa za Wi-fi zimevuka kiwanga"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> juu ya kikomo kilichobainishwa."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Data ya mandhari nyuma imezuiwa"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Gonga ili uondoe kizuizi."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Cheti cha usalama"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Cheti hiki ni halali."</string>
<string name="issued_to" msgid="454239480274921032">"Kimetolewa kwa:"</string>
@@ -1526,10 +1509,8 @@
<string name="select_year" msgid="7952052866994196170">"Chagua mwaka"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> kimefutwa"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Ya kazini <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Ili kubandua skrini hii, gusa na ushikilie Nyuma."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Ili kubandua skrini hii, gusa na ushikile Muhtasari."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Programu imebanwa: Kubanuliwa hakuruhusiwi kwenye kifaa hiki."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Skrini imebandikwa"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Skrini imebanduliwa"</string>
diff --git a/core/res/res/values-ta-rIN/strings.xml b/core/res/res/values-ta-rIN/strings.xml
index b8cc87819553..2f4b9b0be3f5 100644
--- a/core/res/res/values-ta-rIN/strings.xml
+++ b/core/res/res/values-ta-rIN/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"சாளர உள்ளடக்கத்தைப் பெறும்"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"நீங்கள் பணியாற்றி கொண்டிருக்கும் சாளரத்தின் உள்ளடக்கத்தைப் பார்க்கலாம்."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"தொடுவதன் மூலம் அறிவதை இயக்கும்"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"தட்டிய உருப்படிகள் சத்தமாகப் படிக்கப்படும், சைகைகளைப் பயன்படுத்தி திரையில் உலாவலாம்."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"மேம்பட்ட இணைய அணுகல்தன்மையை இயக்கும்"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"பயன்பாட்டு உள்ளடக்கத்தை மேலும் எளிதாக அணுகக்கூடியதாக்க ஸ்கிரிப்ட்கள் நிறுவப்படலாம்."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"நீங்கள் தட்டச்சு செய்யும் உரையைக் கவனிக்கும்"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK மற்றும் புதிய பின் குறியீட்டை உள்ளிடவும்"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK குறியீடு"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"புதிய பின் குறியீடு"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"கடவுச்சொல்லை உள்ளிட, தட்டவும்"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"திறக்க, கடவுச்சொல்லை உள்ளிடவும்"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"திறக்க, பின்னை உள்ளிடவும்"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"தவறான பின் குறியீடு."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"சில அமைப்பு செயல்பாடுகள் வேலை செய்யாமல் போகலாம்"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"முறைமையில் போதுமான சேமிப்பகம் இல்லை. 250மெ.பை. அளவு காலி இடவசதி இருப்பதை உறுதிசெய்து மீண்டும் தொடங்கவும்."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> இயக்குகிறது"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"மேலும் தகவலுக்கு அல்லது பயன்பாட்டை நிறுத்த, தட்டவும்."</string>
<string name="ok" msgid="5970060430562524910">"சரி"</string>
<string name="cancel" msgid="6442560571259935130">"ரத்துசெய்"</string>
<string name="yes" msgid="5362982303337969312">"சரி"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"பயன்பாடுகள் தொடங்கப்படுகின்றன."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"துவக்குதலை முடிக்கிறது."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> இயங்குகிறது"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"பயன்பாட்டிற்கு மாற, தட்டவும்"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"பயன்பாடுகளை மாற்றவா?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"ஏற்கனவே ஒரு பயன்பாடு இயக்கத்தில் உள்ளது, புதிய ஒன்றைத் தொடங்கும்போது முன்பு இதை நிறுத்த வேண்டும்."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> க்குத் திரும்பு"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> ஐத் தொடங்கு"</string>
<string name="new_app_description" msgid="1932143598371537340">"சேமிக்காமல், பழைய பயன்பாட்டை நிறுத்தவும்."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"நினைவக வரம்பை <xliff:g id="PROC">%1$s</xliff:g> மீறியது"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"ஹீப் டம்ப் சேகரிக்கப்பட்டது; பகிர, தட்டவும்"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"ஹீப் டம்பைப் பகிரவா?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="SIZE">%2$s</xliff:g> அளவான தனது செயலாக்க நினைவக வரம்பை <xliff:g id="PROC">%1$s</xliff:g> செயலாக்கம் மீறியது. உங்களுக்கான ஹீப் டம்பினை அதன் டெவெலப்பருடன் பகிரலாம். கவனம்: பயன்பாடு அணுகும் விதத்தில், உங்களைப் பற்றிய எந்தத் தனிப்பட்ட தகவலும் இந்த ஹீப் டம்பில் இருக்கலாம் என்பதை நினைவில்கொள்ளவும்."</string>
<string name="sendText" msgid="5209874571959469142">"உரைக்கான செயலைத் தேர்வுசெய்யவும்"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"வைஃபை இணைய அணுகல் கொண்டிருக்கவில்லை"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"விருப்பங்களுக்கு, தட்டவும்"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"வைஃபை உடன் இணைக்க முடியவில்லை"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" இணைய இணைப்பு மோசமாக உள்ளது."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"இணைப்பை அனுமதிக்கவா?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"வைஃபை Direct ஐத் தொடங்குக. இது வைஃபை க்ளையண்ட்/ஹாட்ஸ்பாட்டை முடக்கும்."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"வைஃபை Direct ஐத் தொடங்க முடியவில்லை."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"வைஃபை Direct இயக்கத்தில் உள்ளது"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"அமைப்புகளுக்கு, தட்டவும்"</string>
<string name="accept" msgid="1645267259272829559">"ஏற்கிறேன்"</string>
<string name="decline" msgid="2112225451706137894">"நிராகரி"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"அழைப்பு அனுப்பப்பட்டது"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB, படப் பரிமாற்றத்துக்கு மட்டும்"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB, MIDIக்கு மட்டும்"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB துணைக்கருவியுடன் இணைக்கப்பட்டுள்ளது"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"மேலும் விருப்பங்களுக்கு, தட்டவும்."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB பிழைதிருத்தம் இணைக்கப்பட்டது"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB பிழை திருத்தத்தை முடக்க, தட்டவும்."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"பிழை அறிக்கையை எடுக்கிறது…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"பிழை அறிக்கையைப் பகிரவா?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"பிழை அறிக்கையைப் பகிர்கிறது…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"புதிய <xliff:g id="NAME">%s</xliff:g> கண்டறியப்பட்டது"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"படங்களையும் மீடியாவையும் மாற்றலாம்"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> சிதைந்துள்ளது"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> சிதைந்துள்ளது. சரிசெய்ய, தட்டவும்."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"ஆதரிக்கப்படாத <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"சாதனம் இந்த <xliff:g id="NAME">%s</xliff:g>ஐ ஆதரிக்கவில்லை. ஆதரிக்கப்படும் வடிவமைப்பில் அமைக்க, தட்டவும்."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> அகற்றப்பட்டது"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"தரவு இழப்பைத் தவிர்க்க, <xliff:g id="NAME">%s</xliff:g>ஐ அகற்றுவதற்கு முன் இணைப்பு நீக்கவும்"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> அகற்றப்பட்டது"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"எப்போதும் இயங்கும் VPN உடன் இணைக்கிறது…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"எப்போதும் இயங்கும் VPN இணைக்கப்பட்டது"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"எப்போதும் இயங்கும் VPN பிழை"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"உள்ளமைக்க, தட்டவும்"</string>
<string name="upload_file" msgid="2897957172366730416">"கோப்பைத் தேர்வுசெய்"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"எந்தக் கோப்பும் தேர்வுசெய்யப்படவில்லை"</string>
<string name="reset" msgid="2448168080964209908">"மீட்டமை"</string>
<string name="submit" msgid="1602335572089911941">"சமர்ப்பி"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"கார் பயன்முறை இயக்கப்பட்டது"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"கார் பயன்முறையிலிருந்து வெளியேற, தட்டவும்."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"டெதெரிங்/ஹாட்ஸ்பாட் இயங்குகிறது"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"அமைக்க, தட்டவும்."</string>
<string name="back_button_label" msgid="2300470004503343439">"முந்தையது"</string>
<string name="next_button_label" msgid="1080555104677992408">"அடுத்து"</string>
<string name="skip_button_label" msgid="1275362299471631819">"தவிர்"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"கணக்கைச் சேர்"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"அதிகரி"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"குறை"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> தொட்டுப் பிடிக்கவும்."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"அதிகரிப்பதற்கு மேலாகவும், குறைப்பதற்குக் கீழாகவும் இழுக்கவும்."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"நிமிடத்தை அதிகரி"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"நிமிடத்தைக் குறை"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB சேமிப்பிடம்"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"திருத்து"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"தரவு பயன்பாட்டு எச்சரிக்கை"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"தரவு உபயோகம், அமைப்புகளைப் பார்க்க, தட்டவும்."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G தரவு வரம்பைக் கடந்தது"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G தரவு வரம்பைக் கடந்தது"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"செல்லுலார் தரவு வரம்பைக் கடந்தது"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"வைஃபை தரவு வரம்பு கடந்தது"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"குறிப்பிட்ட வரம்பைவிட <xliff:g id="SIZE">%s</xliff:g> கூடுதல்."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"பின்புல வரம்பு வரையறுக்கப்பட்டது"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"வரம்பை அகற்ற, தட்டவும்."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"பாதுகாப்பு சான்றிதழ்"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"இந்தச் சான்றிதழ் சரியானது."</string>
<string name="issued_to" msgid="454239480274921032">"இதற்கு வழங்கப்பட்டது:"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"ஆண்டைத் தேர்ந்தெடுக்கவும்"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> நீக்கப்பட்டது"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"பணியிடம் <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"இந்தத் திரையை விலக்க, \"முந்தையது\" பொத்தானைத் தொட்டுப் பிடிக்கவும்."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"இந்தத் திரையை விலக்க, \"மேலோட்டப் பார்வை\" பொத்தானைத் தொட்டுப் பிடிக்கவும்."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"பயன்பாடு பொருத்தப்பட்டது: பொருத்தியதை நீக்குவதற்கு இந்தச் சாதனத்தில் அனுமதியில்லை."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"திரை பின் செய்யப்பட்டது"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"திரையின் பின் அகற்றப்பட்டது"</string>
diff --git a/core/res/res/values-te-rIN/strings.xml b/core/res/res/values-te-rIN/strings.xml
index 68e4275feb90..ad9a5eaf6136 100644
--- a/core/res/res/values-te-rIN/strings.xml
+++ b/core/res/res/values-te-rIN/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"విండో కంటెంట్‍ను తిరిగి పొందుతుంది"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"మీరు పరస్పర చర్య చేస్తున్న విండో కంటెంట్‌‍ను పరిశీలించండి."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"తాకడం ద్వారా విశ్లేషణను ప్రారంభిస్తుంది"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"నొక్కిన అంశాలు బిగ్గరగా చదివి వినిపించబడతాయి మరియు సంజ్ఞలను ఉపయోగించి స్క్రీన్‌ను విశ్లేషించవచ్చు."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"మెరుగైన వెబ్ ప్రాప్యతను ప్రారంభిస్తుంది"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"అనువర్తన కంటెంట్‌కు మరింత సులభ ప్రాప్యత సౌలభ్యం అందించడానికి స్క్రిప్ట్‌లు ఇన్‌స్టాల్ చేయబడవచ్చు."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"మీరు టైప్ చేస్తున్న వచనాన్ని పరిశీలిస్తుంది"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK మరియు కొత్త పిన్‌ కోడ్‌ను టైప్ చేయండి"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK కోడ్"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"కొత్త పిన్‌ కోడ్"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"పాస్‌వర్డ్‌ను టైప్ చేయడానికి నొక్కండి"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"అన్‌లాక్ చేయడానికి పాస్‌వర్డ్‌ను టైప్ చేయండి"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"అన్‌లాక్ చేయడానికి పిన్‌ను టైప్ చేయండి"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"చెల్లని పిన్‌ కోడ్."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"కొన్ని సిస్టమ్ కార్యాచరణలు పని చేయకపోవచ్చు"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"సిస్టమ్ కోసం తగినంత నిల్వ లేదు. మీకు 250MB ఖాళీ స్థలం ఉందని నిర్ధారించుకుని, పునఃప్రారంభించండి."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> అమలులో ఉంది"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"మరింత సమాచారం కోసం లేదా అనువర్తనాన్ని ఆపివేయడం కోసం నొక్కండి."</string>
<string name="ok" msgid="5970060430562524910">"సరే"</string>
<string name="cancel" msgid="6442560571259935130">"రద్దు చేయండి"</string>
<string name="yes" msgid="5362982303337969312">"సరే"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"అనువర్తనాలను ప్రారంభిస్తోంది."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"బూట్‌ను ముగిస్తోంది."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> అమలవుతోంది"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"అనువర్తనానికి మారడానికి నొక్కండి"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"అనువర్తనాలను మార్చాలా?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"మరో అనువర్తనం ఇప్పటికే అమలవుతోంది, మీరు మరోదాన్ని ప్రారంభించడానికి ముందు అది తప్పనిసరిగా ఆపివేయబడాలి."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g>కు తిరిగి వెళ్లండి"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g>ని ప్రారంభించండి"</string>
<string name="new_app_description" msgid="1932143598371537340">"పాత అనువర్తనాన్ని సేవ్ చేయకుండానే ఆపివేయండి."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> మెమరీ పరిమితిని మించిపోయింది"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"కుప్పలు తెప్పలుగా సేకరించబడింది; భాగస్వామ్యం చేయడానికి నొక్కండి"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"హీప్ డంప్‌ను భాగస్వామ్యం చేయాలా?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> ప్రాసెస్ దాని <xliff:g id="SIZE">%2$s</xliff:g> ప్రాసెస్ మెమరీ పరిమితిని మించిపోయింది. మీకు దాని డెవలపర్‌తో భాగస్వామ్యం చేయడానికి హీప్ డంప్ అందుబాటులో ఉంది. జాగ్రత్తగా ఉండండి: ఈ హీప్ డంప్‌లో అనువర్తనం ప్రాప్యత కలిగి ఉన్న మీ వ్యక్తిగత సమాచారం ఏదైనా ఉండవచ్చు."</string>
<string name="sendText" msgid="5209874571959469142">"వచనం కోసం చర్యను ఎంచుకోండి"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fiకి ఇంటర్నెట్ ప్రాప్యత లేదు"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"ఎంపికల కోసం నొక్కండి"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fiకి కనెక్ట్ చేయడం సాధ్యపడలేదు"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" బలహీన ఇంటర్నెట్ కనెక్షన్‌ను కలిగి ఉంది."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"కనెక్షన్‌ని అనుమతించాలా?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Directను ప్రారంభించండి. దీని వలన Wi-Fi క్లయింట్/హాట్‌స్పాట్ ఆపివేయబడుతుంది."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Directను ప్రారంభించడం సాధ్యపడలేదు."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct ఆన్‌లో ఉంది"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"సెట్టింగ్‌ల కోసం నొక్కండి"</string>
<string name="accept" msgid="1645267259272829559">"ఆమోదిస్తున్నాను"</string>
<string name="decline" msgid="2112225451706137894">"తిరస్కరిస్తున్నాను"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ఆహ్వానం పంపబడింది"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"ఫోటో బదిలీ కోసం USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI కోసం USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB ఉపకరణానికి కనెక్ట్ చేయబడింది"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"మరిన్ని ఎంపికల కోసం నొక్కండి."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB డీబగ్గింగ్ కనెక్ట్ చేయబడింది"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB డీబగ్గింగ్‌ను నిలిపివేయడానికి నొక్కండి."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"బగ్ నివేదికను తీస్తోంది…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"బగ్ నివేదికను భాగస్వామ్యం చేయాలా?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"బగ్ నివేదికను భాగస్వామ్యం చేస్తోంది..."</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"కొత్త <xliff:g id="NAME">%s</xliff:g> గుర్తించబడింది"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"ఫోటోలు మరియు మీడియాను బదిలీ చేయడానికి"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> పాడైంది"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> పాడైంది. సరిచేయడానికి నొక్కండి."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g>కి మద్దతు లేదు"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"ఈ పరికరం ఈ <xliff:g id="NAME">%s</xliff:g>కి మద్దతు ఇవ్వదు. మద్దతు కలిగిన ఆకృతిలో సెటప్ చేయడానికి నొక్కండి."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ఊహించని విధంగా తీసివేయబడింది"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"డేటా కోల్పోకుండా ఉండటానికి <xliff:g id="NAME">%s</xliff:g>ని తీసివేయడానికి ముందు అన్‌మౌంట్ చేయండి"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> తీసివేయబడింది"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"ఎల్లప్పుడూ-ఆన్‌లో ఉండే VPN కనెక్ట్ చేయబడుతోంది…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"ఎల్లప్పుడూ-ఆన్‌లో ఉండే VPN కనెక్ట్ చేయబడింది"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"ఎల్లప్పుడూ-ఆన్‌లో ఉండే VPN లోపం"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"కాన్ఫిగర్ చేయడానికి నొక్కండి"</string>
<string name="upload_file" msgid="2897957172366730416">"ఫైల్‌ను ఎంచుకోండి"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ఫైల్ ఎంచుకోబడలేదు"</string>
<string name="reset" msgid="2448168080964209908">"రీసెట్ చేయి"</string>
<string name="submit" msgid="1602335572089911941">"సమర్పించు"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"కారు మోడ్ ప్రారంభించబడింది"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"కారు మోడ్ నుండి నిష్క్రమించడానికి నొక్కండి."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"టీథర్ చేయబడినది లేదా హాట్‌స్పాట్ సక్రియంగా ఉండేది"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"సెటప్ చేయడానికి నొక్కండి."</string>
<string name="back_button_label" msgid="2300470004503343439">"వెనుకకు"</string>
<string name="next_button_label" msgid="1080555104677992408">"తదుపరి"</string>
<string name="skip_button_label" msgid="1275362299471631819">"దాటవేయి"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"ఖాతాను జోడించండి"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"పెంచు"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"తగ్గించు"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> తాకి &amp; అలాగే పట్టుకోండి."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"పెంచడానికి పైకి మరియు తగ్గించడానికి క్రిందికి స్లైడ్ చేయండి."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"నిమిషాన్ని పెంచు"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"నిమిషాన్ని తగ్గించు"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB నిల్వ"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"సవరించు"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"డేటా వినియోగం హెచ్చరిక"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"వినియోగం,సెట్టింగ్‌ల కోసం నొక్కండి"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G డేటా పరిమితిని చేరుకుంది"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G డేటా పరిమితిని చేరుకుంది"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"సెల్యులార్ డేటా పరిమి. చేరుకుంది"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi డేటా పరిమితి మించిపోయింది"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"పేర్కొన్న పరిమితి కంటే <xliff:g id="SIZE">%s</xliff:g> మించిపోయింది."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"నేపథ్య డేటా పరిమితం చేయబడింది"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"నియంత్రణ తీసివేయడానికి నొక్కండి."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"భద్రతా ప్రమాణపత్రం"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ఈ ప్రమాణపత్రం చెల్లుబాటు అవుతుంది."</string>
<string name="issued_to" msgid="454239480274921032">"దీనికి జారీ చేయబడింది:"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"సంవత్సరాన్ని ఎంచుకోండి"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> తొలగించబడింది"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"కార్యాలయం <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"ఈ స్క్రీన్‌ని అన్‌పిన్ చేయడానికి, వెనుకకు తాకి &amp; అలాగే పట్టుకోండి."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"ఈ స్క్రీన్‌ని అన్‌పిన్ చేయడానికి, స్థూల దృష్టిని తాకి &amp; అలాగే పట్టుకోండి."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"అనువర్తనం పిన్ చేయబడింది: ఈ పరికరంలో అన్‌పిన్ చేయడానికి అనుమతి లేదు."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"స్క్రీన్ పిన్ చేయబడింది"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"స్క్రీన్ అన్‌పిన్ చేయబడింది"</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 48147c6b1c1f..2654379a249c 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"เรียกข้อมูลเนื้อหาของหน้าต่าง"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ตรวจสอบเนื้อหาของหน้าต่างที่คุณกำลังโต้ตอบอยู่"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"เปิด \"แตะเพื่อสำรวจ\""</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"ระบบจะพูดออกเสียงรายการที่แตะและหน้าจอสามารถสำรวจได้ด้วยท่าทางสัมผัส"</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"เปิดการเข้าถึงเว็บที่มีประสิทธิภาพมากขึ้น"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"อาจติดตั้งสคริปต์เพื่อทำให้สามารถเข้าถึงเนื้อหาแอปได้ง่ายขึ้น"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"สังเกตข้อความที่คุณพิมพ์"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"พิมพ์ PUK และรหัส PIN ใหม่"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"รหัส PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"รหัส PIN ใหม่"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"แตะเพื่อพิมพ์รหัสผ่าน"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"พิมพ์รหัสผ่านเพื่อปลดล็อก"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"พิมพ์ PIN เพื่อปลดล็อก"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"รหัส PIN ไม่ถูกต้อง"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"บางฟังก์ชันระบบอาจไม่ทำงาน"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"พื้นที่เก็บข้อมูลไม่เพียงพอสำหรับระบบ โปรดตรวจสอบว่าคุณมีพื้นที่ว่าง 250 MB แล้วรีสตาร์ท"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> กำลังทำงาน"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"แตะเพื่อดูข้อมูลเพิ่มเติมหรือหยุดแอป"</string>
<string name="ok" msgid="5970060430562524910">"ตกลง"</string>
<string name="cancel" msgid="6442560571259935130">"ยกเลิก"</string>
<string name="yes" msgid="5362982303337969312">"ตกลง"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"กำลังเริ่มต้นแอปพลิเคชัน"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"เสร็จสิ้นการบูต"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> กำลังทำงาน"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"แตะเพื่อสลับไปยังแอป"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"สลับแอปพลิเคชันหรือไม่"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"มีแอปพลิเคชันอื่นที่กำลังทำงานอยู่แล้ว ซึ่งต้องหยุดทำงานก่อนที่คุณจะเริ่มแอปพลิเคชันใหม่ได้"</string>
<string name="old_app_action" msgid="493129172238566282">"กลับสู่ <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"เริ่มต้น <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"หยุดการทำงานของแอปพลิเคชันเก่าโดยไม่บันทึก"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> เกินขีดจำกัดของหน่วยความจำ"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"รวบรวมฮีพดัมพ์แล้ว แตะเพื่อแชร์"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"แชร์ฮีพดัมพ์ไหม"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"กระบวนการ <xliff:g id="PROC">%1$s</xliff:g> มีขนาดเกิน <xliff:g id="SIZE">%2$s</xliff:g> ซึ่งเป็นขีดจำกัดของหน่วยความจำกระบวนการแล้ว ฮีพดัมพ์จะพร้อมให้คุณแชร์กับนักพัฒนาซอฟต์แวร์ โปรดระวัง ฮีพดัมพ์นี้สามารถเก็บข้อมูลส่วนบุคคลที่แอปพลิเคชันมีสิทธิ์เข้าถึงได้"</string>
<string name="sendText" msgid="5209874571959469142">"เลือกการทำงานกับข้อความ"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi ไม่สามารถเข้าถึงอินเทอร์เน็ต"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"แตะเพื่อดูตัวเลือก"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"ไม่สามารถเชื่อมต่อ WiFi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" มีสัญญาณอินเทอร์เน็ตไม่ดี"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"อนุญาตการเชื่อมต่อใช่ไหม"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"เริ่มการทำงาน WiFi Direct ซึ่งจะเป็นการปิดการทำงาน WiFi ไคลเอ็นต์/ฮอตสปอต"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"ไม่สามารถเริ่ม WiFi Direct ได้"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"เปิด WiFi Direct อยู่"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"แตะเพื่อดูการตั้งค่า"</string>
<string name="accept" msgid="1645267259272829559">"ยอมรับ"</string>
<string name="decline" msgid="2112225451706137894">"ปฏิเสธ"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"ส่งข้อความเชิญแล้ว"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB สำหรับการโอนรูปภาพ"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB สำหรับ MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"เชื่อมต่อกับอุปกรณ์เสริม USB แล้ว"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"แตะเพื่อดูตัวเลือกเพิ่มเติม"</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"เชื่อมต่อการแก้ไขข้อบกพร่อง USB แล้ว"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"แตะเพื่อปิดใช้การแก้ไขข้อบกพร่องของ USB"</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"กำลังสร้างรายงานข้อบกพร่อง…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"แชร์รายงานข้อบกพร่องไหม"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"กำลังแชร์รายงานข้อบกพร่อง…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"ตรวจพบ <xliff:g id="NAME">%s</xliff:g> ใหม่"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"สำหรับการโอนรูปภาพและสื่อ"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> เสียหาย"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> เสียหาย แตะเพื่อแก้ไข"</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"ไม่สนับสนุน <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"อุปกรณ์นี้ไม่สนับสนุน <xliff:g id="NAME">%s</xliff:g> นี้ แตะเพื่อตั้งค่าในรูปแบบที่สนับสนุน"</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> ถูกนำออกไปโดยไม่คาดคิด"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ยกเลิกการต่อเชื่อม <xliff:g id="NAME">%s</xliff:g> ก่อนนำออกเพื่อหลีกเลี่ยงข้อมูลสูญหาย"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"นำ <xliff:g id="NAME">%s</xliff:g> ออกแล้ว"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"กำลังเชื่อมต่อ VPN แบบเปิดตลอดเวลา…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"เชื่อมต่อ VPN แบบเปิดตลอดเวลาแล้ว"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"ข้อผิดพลาดของ VPN แบบเปิดตลอดเวลา"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"แตะเพื่อกำหนดค่า"</string>
<string name="upload_file" msgid="2897957172366730416">"เลือกไฟล์"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"ไม่ได้เลือกไฟล์ไว้"</string>
<string name="reset" msgid="2448168080964209908">"รีเซ็ต"</string>
<string name="submit" msgid="1602335572089911941">"ส่ง"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"เปิดการใช้งานโหมดรถยนต์"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"แตะเพื่อออกจากโหมดรถยนต์"</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"การปล่อยสัญญาณหรือฮอตสปอตทำงานอยู่"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"แตะเพื่อตั้งค่า"</string>
<string name="back_button_label" msgid="2300470004503343439">"กลับ"</string>
<string name="next_button_label" msgid="1080555104677992408">"ถัดไป"</string>
<string name="skip_button_label" msgid="1275362299471631819">"ข้าม"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"เพิ่มบัญชี"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"เพิ่ม"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"ลด"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> แตะค้างไว้"</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"เลื่อนขึ้นเพื่อเพิ่มและเลื่อนลงเพื่อลด"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"เพิ่มนาที"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"ลดนาที"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"ที่เก็บข้อมูล USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"แก้ไข"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"คำเตือนการใช้ข้อมูล"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"แตะเพื่อดูการใช้งานและการตั้งค่า"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"ถึงขีดจำกัดข้อมูล 2G-3G แล้ว"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"ถึงขีดจำกัดข้อมูล 4G แล้ว"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"ถึงขีดจำกัดข้อมูลมือถือแล้ว"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"เกินขีดจำกัดข้อมูล WiFi แล้ว"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> เกินขีดจำกัดที่ระบุไว้"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"จำกัดข้อมูลแบ็กกราวด์"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"แตะเพื่อนำข้อจำกัดออก"</string>
<string name="ssl_certificate" msgid="6510040486049237639">"ใบรับรองความปลอดภัย"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"ใบรับรองนี้ใช้งานได้"</string>
<string name="issued_to" msgid="454239480274921032">"ออกให้แก่:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"เลือกปี"</string>
<string name="deleted_key" msgid="7659477886625566590">"ลบ <xliff:g id="KEY">%1$s</xliff:g> แล้ว"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g>ที่ทำงาน"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"หากต้องการเลิกตรึงหน้าจอนี้ แตะ \"กลับ\" ค้างไว้"</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"หากต้องการเลิกตรึงหน้าจอนี้ แตะ \"ภาพรวม\" ค้างไว้"</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"มีการตรึงแอป: ไม่อนุญาตให้เลิกตรึงบนอุปกรณ์นี้"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"ตรึงหน้าจอแล้ว"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"เลิกตรึงหน้าจอแล้ว"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index b52ed8fd720d..08453a6e4cb7 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Kunin ang content ng window"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Siyasatin ang nilalaman ng isang window kung saan ka nakikipag-ugnayan."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"I-on ang Explore by Touch"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Bibigkasin nang malakas ang mga na-tap na item at mae-explore ang screen gamit ang mga galaw."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"I-on ang pinahusay na accessibility sa web"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Maaaring mag-install ng mga script upang gawing mas naa-access ang nilalaman ng app."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Obserbahan ang tekstong tina-type mo"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"I-type ang PUK at bagong PIN code"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK code"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Bagong PIN code"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"I-tap para i-type ang password"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"I-type ang password upang i-unlock"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"I-type ang PIN upang i-unlock"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Maling PIN code."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Maaaring hindi gumana nang tama ang ilang paggana ng system"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Walang sapat na storage para sa system. Tiyaking mayroon kang 250MB na libreng espasyo at i-restart."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"Tumatakbo ang <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"I-tap para sa higit pang impormasyon o upang ihinto ang app."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Kanselahin"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Sinisimulan ang apps."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Pagtatapos ng pag-boot."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Tumatakbo ang <xliff:g id="APP">%1$s</xliff:g>"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"I-tap upang lumipat sa app"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Lumipat ng apps?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"May tumatakbo nang isa pang app na dapat na ihinto bago ka makapagsimula ng bago."</string>
<string name="old_app_action" msgid="493129172238566282">"Bumalik sa <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Simulan ang <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Ihinto ang lumang app nang hindi nagse-save."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Lumampas ang <xliff:g id="PROC">%1$s</xliff:g> sa limitasyon ng memory"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Nakolekta na ang heap dump; i-tap upang ibahagi"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Ibahagi ang heap dump?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Lumampas ang proseso na <xliff:g id="PROC">%1$s</xliff:g> sa limitasyon ng memory ng proseso nito na <xliff:g id="SIZE">%2$s</xliff:g>. Available ang isang heap dump upang iyong ibahagi sa developer nito. Maging maingat: maaaring naglalaman ang heap dump na ito ng anuman sa iyong personal na impormasyon na naa-access ng application."</string>
<string name="sendText" msgid="5209874571959469142">"Pumili ng pagkilos para sa teksto"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Walang access sa Internet ang Wi-Fi"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"I-tap para sa mga opsyon"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Hindi makakonekta sa Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" ay mayroong mahinang koneksyon sa Internet."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Payagan ang kuneksyon?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Simulan ang Wi-Fi Direct. I-o-off nito ang client/hotspot ng Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Hindi masimulan ang Wi-Fi Direct"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Ang Wi-Fi Direct ay naka-on"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"I-tap para sa mga setting"</string>
<string name="accept" msgid="1645267259272829559">"Tanggapin"</string>
<string name="decline" msgid="2112225451706137894">"Tanggihan"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Naipadala ang imbitasyon"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB para sa paglipat ng larawan"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB para sa MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Nakakonekta sa isang accessory ng USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"I-tap para sa higit pang mga opsyon."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Konektado ang debugging ng USB"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"I-tap upang i-disable ang pagde-debug ng USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Kinukuha ang ulat ng bug…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Gusto mo bang ibahagi ang ulat ng bug?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Ibinabahagi ang ulat ng bug…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Na-detect ang bagong <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Para sa paglilipat ng mga larawan at media"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Sirang <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"Sira ang <xliff:g id="NAME">%s</xliff:g>. I-tap upang ayusin."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Hindi sinusuportahang <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Hindi sinusuportahan ng device na ito ang <xliff:g id="NAME">%s</xliff:g> na ito. I-tap upang i-set up sa isang sinusuportahang format."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Hindi inaasahang naalis ang <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"I-unmount ang <xliff:g id="NAME">%s</xliff:g> bago alisin upang maiwasan ang pagkawala ng data"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Inalis ang <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Kumukonekta ang Always-on VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Nakakonekta ang Always-on VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Error sa Always-on VPN"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"I-tap upang i-configure"</string>
<string name="upload_file" msgid="2897957172366730416">"Pumili ng file"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Walang napiling file"</string>
<string name="reset" msgid="2448168080964209908">"I-reset"</string>
<string name="submit" msgid="1602335572089911941">"Isumite"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Pinagana ang car mode"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"I-tap upang lumabas sa car mode."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Pagsasama o aktibong hotspot"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"I-tap upang i-set up."</string>
<string name="back_button_label" msgid="2300470004503343439">"Bumalik"</string>
<string name="next_button_label" msgid="1080555104677992408">"Susunod"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Laktawan"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Magdagdag ng account"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Dagdagan"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Bawasan"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> pindutin nang matagal."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Mag-slide pataas upang magdagdag at pababa upang magbawas."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Dagdagan ang minuto"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Bawasan ang minuto"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB storage"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"I-edit"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Babala sa paggamit ng data"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"I-tap tingnan paggamit/setting."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Naabot na ang limitasyon sa 2G-3G data"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Naabot na ang limitasyon sa 4G data"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Naabot na ang limitasyon sa cellular data"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Lumampas sa limitasyon ng data ng Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Lampas ng <xliff:g id="SIZE">%s</xliff:g> sa tinukoy na limitasyon."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Pinaghihigpitan ang data ng background"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"I-tap upang alisin paghihigpit."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Certificate ng seguridad"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"May-bisa ang certificate na ito."</string>
<string name="issued_to" msgid="454239480274921032">"Ibinigay kay:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Pumili ng taon"</string>
<string name="deleted_key" msgid="7659477886625566590">"Tinanggal ang <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> sa Trabaho"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Upang i-unpin ang screen na ito, pindutin nang matagal ang Bumalik."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Upang i-unpin ang screen na ito, pindutin nang matagal ang Pangkalahatang-ideya."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Naka-pin ang app: Hindi pinapayagan ang pag-a-unpin sa device na ito."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Naka-pin ang screen"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Naka-unpin ang screen"</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index a490205a22b5..9dedf1e9daac 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pencere içeriğini alma"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Etkileşim kurduğunuz pencerenin içeriğini inceler."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Dokunarak Keşfet\'i açma"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Dokunulan öğeler sesli olarak okunur ve ekranı keşfetmek için hareketler kullanılabilir."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Gelişmiş web erişilebilirliğini açma"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Uygulamanın erişilebilirliğini artırmak için komut dosyaları yüklenebilir."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Yazdığınız metni izleme"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK ve yeni PIN kodunu yazın"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kodu"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Yeni PIN kodu"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Şifre yazmak için dokunun"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Kilidi açmak için şifreyi yazın"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Kilidi açmak için PIN kodunu yazın"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Yanlış PIN kodu."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Bazı sistem işlevleri çalışmayabilir"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Sistem için yeterli depolama alanı yok. 250 MB boş alanınızın bulunduğundan emin olun ve yeniden başlatın."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> çalışıyor"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Daha fazla bilgi edinmek veya uygulamayı durdurmak için dokunun."</string>
<string name="ok" msgid="5970060430562524910">"Tamam"</string>
<string name="cancel" msgid="6442560571259935130">"İptal"</string>
<string name="yes" msgid="5362982303337969312">"Tamam"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Uygulamalar başlatılıyor"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Açılış tamamlanıyor."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> çalışıyor"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Uygulamaya geçmek için dokunun"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Uygulama değiştirilsin mi?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Başka bir uygulama zaten çalışıyor. Yeni bir uygulama başlatmadan bu uygulama durdurulmalıdır."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> öğesine geri dön"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> uygulamasını başlat"</string>
<string name="new_app_description" msgid="1932143598371537340">"Kaydetmeden eski uygulamayı durdurun."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> bellek sınırını aştı"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Yığın dökümü toplandı. Paylaşmak için dokunun"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Yığın dökümü paylaşılsın mı?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g>, <xliff:g id="SIZE">%2$s</xliff:g> olan işlem bellek sınırını aştı. İşlemin geliştiricisiyle paylaşabileceğiniz bir bellek yığını dökümü hazır. Dikkat: Bu bellek yığını dökümü, uygulamanın erişebildiği tüm kişisel bilgilerinizi içerebilir."</string>
<string name="sendText" msgid="5209874571959469142">"Kısa mesaj için bir işlem seçin"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Kablosuz bağlantıda İnternet erişimi yok"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Seçenekler için dokunun"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Kablosuz bağlantısı kurulamadı"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" İnternet bağlantısı zayıf."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Bağlantıya izin verilsin mi?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Kablosuz Doğrudan Bağlantı\'yı başlat. Bu işlem, Kablosuz istemci/hotspot kullanımını kapatacak."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Kablosuz Doğrudan Bağlantı başlatılamadı."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Kablosuz Doğrudan Bağlantı özelliği açık"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Ayarlar için dokunun"</string>
<string name="accept" msgid="1645267259272829559">"Kabul et"</string>
<string name="decline" msgid="2112225451706137894">"Reddet"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Davetiye gönderildi"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"Fotoğraf aktarımı için USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"MIDI için USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB aksesuarına bağlandı"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Diğer seçenekler için dokunun."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB hata ayıklaması bağlandı"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"USB hata ayıklama özelliğini devre dışı bırakmak için dokunun."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Hata raporu alınıyor…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Hata raporu paylaşılsın mı?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Hata raporu paylaşılıyor..."</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Yeni <xliff:g id="NAME">%s</xliff:g> algılandı"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Fotoğraf ve medya aktarmak için"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Bozuk <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> bozuk. Düzeltmek için dokunun."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Desteklenmeyen <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Bu cihaz, bu <xliff:g id="NAME">%s</xliff:g> ortamını desteklemiyor. Desteklenen bir biçimde kurmak için dokunun."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> beklenmedik şekilde çıkarıldı"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Veri kaybı olmaması için <xliff:g id="NAME">%s</xliff:g> birimini çıkarmadan önce bağlantısını kesin"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> çıkarıldı"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Her zaman açık VPN\'ye bağlanılıyor…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Her zaman açık VPN\'ye bağlanıldı"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Her zaman açık VPN hatası"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Yapılandırmak için dokunun"</string>
<string name="upload_file" msgid="2897957172366730416">"Dosya seç"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Seçili dosya yok"</string>
<string name="reset" msgid="2448168080964209908">"Sıfırla"</string>
<string name="submit" msgid="1602335572089911941">"Gönder"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Araba modu etkin"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Araba modundan çıkmak için dokunun."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Tethering veya hotspot etkin"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Ayarlamak için dokunun."</string>
<string name="back_button_label" msgid="2300470004503343439">"Geri"</string>
<string name="next_button_label" msgid="1080555104677992408">"İleri"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Atla"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Hesap ekle"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Artır"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Azalt"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> dokunun ve basılı tutun."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Artırmak için yukarı, azaltmak için aşağı kaydırın."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Dakikayı artır"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Dakikayı azalt"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB bellek"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Düzenle"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Veri kullanım uyarısı"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Kul. ve ayar. gör. için dokunun."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G veri sınırına ulaşıldı"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G veri sınırına ulaşıldı"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Hücre verisi sınırına ulaşıldı"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Kablosuz veri limiti aşıldı"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g>, belirlenen limiti aşıyor."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Arka plan verileri kısıtlı"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Kısıtlamayı kaldır. için dokunun"</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Güvenlik sertifikası"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Bu sertifika geçerli."</string>
<string name="issued_to" msgid="454239480274921032">"Verilen:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Yılı seçin"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> silindi"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (İş)"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Bu ekranın sabitlemesini kaldırmak için Geri\'ye dokunup basılı tutun."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Bu ekranın sabitlemesini kaldırmak için Genel Bakış\'a dokunup basılı tutun."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Uygulama sabitlendi. Bu cihazda sabitlemenin kaldırılmasına izin verilmiyor."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekran sabitlendi"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekran sabitlemesi kaldırıldı"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 7a01ee0a1247..1c1547cb01f6 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -269,8 +269,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Отримувати вміст вікна"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Перевіряти вміст вікна, з яким ви взаємодієте."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Увімкнути функцію дослідження дотиком"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Активувати голосові підказки для елементів, яких торкаються, і користуватися інтерфейсом за допомогою жестів."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Увімкнути покращення веб-доступності"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Можуть установлюватися сценарії, щоб зробити вміст програми доступнішим."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Переглядати текст, який ви вводите"</string>
@@ -669,8 +668,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Введіть PUK-код і новий PIN-код"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK-код"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Новий PIN-код"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Торкніться, щоб ввести пароль"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Введіть пароль, щоб розблокувати"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Введіть PIN-код, щоб розблокувати"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Неправильний PIN-код."</string>
@@ -954,8 +952,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Деякі системні функції можуть не працювати"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Недостатньо місця для системи. Переконайтесь, що на пристрої є 250 Мб вільного місця, і повторіть спробу."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> працює"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Торкніться, щоб дізнатися більше або зупинити додаток."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Скасувати"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -1029,8 +1026,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Запуск програм."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Завершення завантаження."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"Працює <xliff:g id="APP">%1$s</xliff:g>"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Торкніться, щоб відкрити додаток"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Переключитися між програмами?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Уже працює інша програма, яку потрібно зупинити перед тим, як запускати нову програму."</string>
<string name="old_app_action" msgid="493129172238566282">"Поверн. до <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1038,8 +1034,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Запуст. <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Зупинити попередню програму без збереження."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"Процес <xliff:g id="PROC">%1$s</xliff:g> перевищив ліміт пам’яті"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Дані динамічної пам’яті зібрано. Торкніться, щоб поділитися"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Поділитися даними динамічної пам’яті?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Процес <xliff:g id="PROC">%1$s</xliff:g> перевищив ліміт пам’яті (<xliff:g id="SIZE">%2$s</xliff:g>). Ви можете поділитися даними динамічної пам’яті з розробником. Увага: ці дані можуть містити вашу особисту інформацію, до якої має доступ додаток."</string>
<string name="sendText" msgid="5209874571959469142">"Виберіть дію для тексту"</string>
@@ -1079,8 +1074,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Мережа Wi-Fi не має доступу до Інтернету"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Торкніться, щоб відкрити опції"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Не вдалося під’єднатися до мережі Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" має погане з’єднання з Інтернетом."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Дозволити з’єднання?"</string>
@@ -1090,8 +1084,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Запустити Wi-Fi Direct. Це вимкне з’єднання Wi-Fi клієнт/точка доступу."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Не вдалося запустити Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct увімкнено"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Торкніться, щоб відкрити налаштування"</string>
<string name="accept" msgid="1645267259272829559">"Прийняти"</string>
<string name="decline" msgid="2112225451706137894">"Відхилити"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Запрошення надіслано"</string>
@@ -1143,11 +1136,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB для перенесення фотографій"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB для режиму MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Під’єднано до аксесуара USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Торкніться, щоб переглянути більше опцій."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Налагодження USB завершено"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Торкніться, щоб вимкнути налагодження USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Створюється повідомлення про помилку…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Надіслати звіт про помилку?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Надсилається звіт про помилку…"</string>
@@ -1167,11 +1158,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Виявлено новий пристрій пам’яті (<xliff:g id="NAME">%s</xliff:g>)"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Для перенесення фотографій і медіафайлів"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> не підключається"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"Носій (<xliff:g id="NAME">%s</xliff:g>) пошкоджено. Торкніться, щоб виправити."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> не підтримується"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"<xliff:g id="NAME">%s</xliff:g> не підтримується цим пристроєм. Торкніться, щоб налаштувати підтримуваний формат."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> несподівано вийнято"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Перш ніж виймати пристрій пам’яті <xliff:g id="NAME">%s</xliff:g>, відключіть його, щоб не втратити дані"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Ви вийняли пристрій пам’яті <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1243,18 +1232,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Під’єднання до постійної мережі VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Під’єднано до постійної мережі VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Помилка постійної мережі VPN"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Торкніться, щоб налаштувати"</string>
<string name="upload_file" msgid="2897957172366730416">"Виберіть файл"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Не вибрано файл"</string>
<string name="reset" msgid="2448168080964209908">"Віднов."</string>
<string name="submit" msgid="1602335572089911941">"Надіслати"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Режим авто ввімкн."</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Торкніться, щоб вийти з режиму автомобіля."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Прив\'язка чи точка дост. активна"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Торкніться, щоб налаштувати."</string>
<string name="back_button_label" msgid="2300470004503343439">"Назад"</string>
<string name="next_button_label" msgid="1080555104677992408">"Далі"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Пропустити"</string>
@@ -1289,8 +1275,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Додати облік. запис"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Збільшити"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Зменшити"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> – натисніть і утримуйте."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Проведіть пальцем угору, щоб збільшити, і вниз, щоб зменшити."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"На хвилину вперед"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"На хвилину назад"</string>
@@ -1334,8 +1319,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Носій USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Редагувати"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Застереження про використ. даних"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Переглянути дані та параметри."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Досягнуто ліміту даних 2G–3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Досягнуто ліміту даних 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Досягнуто ліміту мобільних даних"</string>
@@ -1347,8 +1331,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Перевищено ліміт даних Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> – понад указаний ліміт."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Викор-ня фонових даних обмежено"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Скасувати обмеження."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Сертифікат безпеки"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Цей сертифікат дійсний."</string>
<string name="issued_to" msgid="454239480274921032">"Кому видано:"</string>
@@ -1566,10 +1549,8 @@
<string name="select_year" msgid="7952052866994196170">"Виберіть рік"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> видалено"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Робоча <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Щоб відкріпити цей екран, натисніть і утримуйте кнопку \"Назад\"."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Щоб відкріпити цей екран, натисніть і утримуйте кнопку \"Огляд\"."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Додаток закріплено. Його не можна відкріпити на цьому пристрої."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Екран закріплено"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Екран відкріплено"</string>
diff --git a/core/res/res/values-ur-rPK/strings.xml b/core/res/res/values-ur-rPK/strings.xml
index f5e95b67224a..1f5823136353 100644
--- a/core/res/res/values-ur-rPK/strings.xml
+++ b/core/res/res/values-ur-rPK/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ونڈو مواد بازیافت کرنے کی"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"کسی ایسی ونڈو کے مواد کا معائنہ کریں جس کے ساتھ آپ تعامل کر رہے ہیں۔"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ٹچ کے ذریعے دریافت کریں کو آن کرنے کی"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"تھپتھپائے گئے آئٹمز کو باآواز بلند بولا جائے گا اور اشاروں کا استعمال کرکے اسکرین کو دریافت کیا جا سکتا ہے۔"</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"‏بہتر ویب accessibility کو آن کرنے کی"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ایپ کا مواد مزید قابل رسائی بنانے کیلئے اسکرپٹس کو انسٹال کیا جا سکتا ہے۔"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"آپکے ٹائپ کردہ متن کا مشاہدہ کرنے کی"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"‏PUK اور نیا PIN کوڈ ٹائپ کریں"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"‏PUK کوڈ"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"‏نیا PIN کوڈ"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"پاسورڈ ٹائپ کرنے کیلئے تھپتھپائیں"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"غیر مقفل کرنے کیلئے پاس ورڈ ٹائپ کریں"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"‏غیر مقفل کرنے کیلئے PIN ٹائپ کریں"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"‏غلط PIN کوڈ۔"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"ممکن ہے سسٹم کے کچھ فنکشنز کام نہ کریں"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"‏سسٹم کیلئے کافی اسٹوریج نہیں ہے۔ اس بات کو یقینی بنائیں کہ آپ کے پاس 250MB خالی جگہ ہے اور دوبارہ شروع کریں۔"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> چل رہا ہے"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"مزید معلومات کیلئے یا ایپ کو روکنے کیلئے تھپتھپائیں۔"</string>
<string name="ok" msgid="5970060430562524910">"ٹھیک ہے"</string>
<string name="cancel" msgid="6442560571259935130">"منسوخ کریں"</string>
<string name="yes" msgid="5362982303337969312">"ٹھیک ہے"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"ایپس شروع ہو رہی ہیں۔"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"بوٹ مکمل ہو رہا ہے۔"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> چل رہی ہے"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"ایپ پر سوئچ کرنے کیلئے تھپتھپائیں"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"ایپس سوئچ کریں؟"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"ایک دوسری ایپ پہلے سے چل رہی ہے، جس کا بند ہونا ضروری ہے تاکہ آپ ایک نئی ایپ شروع کر سکیں۔"</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g> پر واپس جائیں"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g> شروع کریں"</string>
<string name="new_app_description" msgid="1932143598371537340">"محفوظ کیے بغیر پرانی ایپ بند کریں۔"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> میموری کی حد سے تجاوز کرگئی"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"ہیپ ڈمپ جمع ہو گیا ہے، اشتراک کرنے کیلئے تھپتھپائیں"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"ہیپ ڈمپ کا اشتراک کریں؟"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"کارروائی <xliff:g id="PROC">%1$s</xliff:g> اپنی کارروائی کی میموری کی حد <xliff:g id="SIZE">%2$s</xliff:g> سے تجاوز کر گئی ہے۔ آپ کیلئے ایک ہیپ ڈمپ اس کے ڈیولپر سے اشتراک کرنے کیلئے دستیاب ہے۔ احتیاط برتیں: اس ہیپ ڈمپ میں آپ کی ایسی ذاتی معلومات میں سے کوئی بھی شامل ہو سکتی ہے جس تک ایپلیکیشن کو رسائی ہے۔"</string>
<string name="sendText" msgid="5209874571959469142">"متن کیلئے ایک کارروائی منتخب کریں"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"‏Wi-Fi کی انٹرنیٹ تک رسائی نہیں ہے"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"اختیارات کیلئے تھپتھپائیں"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"‏Wi-Fi سے مربوط نہیں ہو سکا"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" اس میں ایک کمزور انٹرنیٹ کنکشن ہے۔"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"کنکشن کی اجازت دیں؟"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"‏Wi-Fi ڈائرکٹ شروع کریں۔ یہ Wi-Fi کلائنٹ/ہاٹ اسپاٹ کو آف کردے گا۔"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"‏Wi-Fi ڈائرکٹ شروع نہیں کرسکا۔"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"‏Wi-Fi Direct آن ہے"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"ترتیبات کیلئے تھپتھپائیں"</string>
<string name="accept" msgid="1645267259272829559">"قبول کریں"</string>
<string name="decline" msgid="2112225451706137894">"مسترد کریں"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"دعوت بھیج دی گئی"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"‏تصویر کی منتقلی کیلئے USB"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"‏MIDI کیلئے USB"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"‏ایک USB لوازم سے مربوط ہے"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"مزید اختیارات کیلئے تھپتھپائیں۔"</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"‏USB ڈیبگ کرنا مربوط ہو گیا"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"‏USB ڈیبگنگ کو غیر فعال کرنے کیلئے تھپتھپائیں۔"</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"بگ رپورٹ لی جا رہی ہے…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"بگ رپورٹ کا اشتراک کریں؟"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"بگ رپورٹ کا اشتراک ہو رہا ہے…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"نئے <xliff:g id="NAME">%s</xliff:g> کا پتا چلا"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"تصاویر اور میڈیا منتقل کرنے کیلئے"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"خراب شدہ <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> خراب ہے۔ اسے ٹھیک کرنے کیلئے تھپتھپائیں۔"</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"غیر تعاون یافتہ <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"یہ آلہ <xliff:g id="NAME">%s</xliff:g> کو سپورٹ نہیں کرتا۔ ایک سپورٹ یافتہ فارمیٹ میں سیٹ اپ کرنے کیلئے تھپتھپائیں۔"</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> غیر متوقع طور پر ہٹا دیا گیا"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"ڈیٹا ضائع ہونے سے بچانے کیلئے ہٹانے سے پہلے <xliff:g id="NAME">%s</xliff:g> کو اَن ماؤنٹ کریں"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"<xliff:g id="NAME">%s</xliff:g> کو ہٹا دیا گیا"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"‏ہمیشہ آن VPN مربوط ہو رہا ہے…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"‏ہمیشہ آن VPN مربوط ہوگیا"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"‏ہمیشہ آن VPN کی خرابی"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"کنفیگر کرنے کیلئے تھپتھپائیں"</string>
<string name="upload_file" msgid="2897957172366730416">"فائل منتخب کریں"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"کوئی فائل منتخب نہیں کی گئی"</string>
<string name="reset" msgid="2448168080964209908">"دوبارہ ترتیب دیں"</string>
<string name="submit" msgid="1602335572089911941">"جمع کرائیں"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"کار وضع فعال ہے"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"کار موڈ سے خارج ہونے کیلئے تھپتھپائیں۔"</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"ربط بنانا یا ہاٹ اسپاٹ فعال"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"سیٹ اپ کرنے کیلئے تھپتھپائیں۔"</string>
<string name="back_button_label" msgid="2300470004503343439">"واپس جائیں"</string>
<string name="next_button_label" msgid="1080555104677992408">"اگلا"</string>
<string name="skip_button_label" msgid="1275362299471631819">"نظر انداز کریں"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"اکاؤنٹ شامل کریں"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"بڑھائیں"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"گھٹائیں"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> تھپتھپائیں اور دبائے رکھیں۔"</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"بڑھانے کیلئے اوپر اور گھٹانے کیلئے نیچے سلائیڈ کریں۔"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"منٹ بڑھائیں"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"منٹ گھٹائیں"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"‏USB اسٹوریج"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"ترمیم کریں"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"ڈیٹا کے استعمال کی وارننگ"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"استعمال اور ترتیبات دیکھنے کیلئے تھپتھپائیں۔"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"‏2G-3G ڈیٹا کی حد کو پہنچ گیا"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"‏4G ڈیٹا کی حد کو پہنچ گیا"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"سیلولر ڈیٹا کی حد کو پہنچ گیا"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"‏Wi-Fi ڈیٹا حد سے متجاوز ہو گیا"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> متعینہ حد سے زیادہ ہے۔"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"پس منظر ڈیٹا محدود ہے"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"حد بندی ہٹانے کیلئے تھپتھپائیں۔"</string>
<string name="ssl_certificate" msgid="6510040486049237639">"سیکیورٹی سرٹیفیکیٹ"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"یہ سرٹیفکیٹ درست ہے۔"</string>
<string name="issued_to" msgid="454239480274921032">"جاری کردہ بنام:"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"سال منتخب کریں"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> کو حذف کر دیا گیا"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"دفتر <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"اس اسکرین سے پن ہٹانے کیلئے، پیچھے کو تھپتھپائیں اور دبا کر رکھیں۔"</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"اس اسکرین سے پن ہٹانے کیلئے، مجموعی جائزہ کو تھپتھپائیں اور دبا کر رکھیں۔"</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"ایپ کو پن کر دیا گیا ہے: اس آلہ پر پن ہٹانے کی اجازت نہیں ہے۔"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"اسکرین کو پن کر دیا گیا"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"اسکرین کا پن ہٹا دیا گیا"</string>
diff --git a/core/res/res/values-uz-rUZ/strings.xml b/core/res/res/values-uz-rUZ/strings.xml
index 51b38a0d2ebf..689abe74d4cd 100644
--- a/core/res/res/values-uz-rUZ/strings.xml
+++ b/core/res/res/values-uz-rUZ/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Oynadagi kontentni o‘qiydi"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Joriy oynadagi kontent mazmunini aniqlaydi."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Teginib o‘rganish xizmatini yoqadi"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Tegilgan elementlar nomini talaffuz qiladi va ekran bo‘ylab barmoq orqali kezish imkoniyatini yoqadi."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Internet uchun maxsus imkoniyatlarni yoqadi"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Qo‘shimcha skriptlar o‘rnatilishi mumkin."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Kiritilayotgan matnni kuzatadi"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"PUK-kod va yangi PIN-kodni kiriting"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK kod"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Yangi PIN-kod"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Parolni kiritish uchun bosing"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Qulfni ochish uchun parolni kiriting"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Qulfni ochish uchun PIN-kodni kiriting"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Noto‘g‘ri PIN-kod."</string>
@@ -878,8 +876,8 @@
<item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> yil</item>
</plurals>
<plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> daq.dan keyin</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> daq.dan keyin</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> daq. keyin</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> daq. keyin</item>
</plurals>
<plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
<item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> soatdan keyin</item>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Ba‘zi tizim funksiyalari ishlamasligi mumkin"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Tizim uchun xotirada joy yetarli emas. Avval 250 megabayt joy bo‘shatib, keyin qurilmani o‘chirib yoqing."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> ishlamoqda"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Ilovani to‘xtatish yoki qo‘shimcha ma’lumot olish uchun bosing."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Bekor qilish"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Ilovalar ishga tushirilmoqda."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Tizimni yuklashni tugatish."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> ishlamoqda"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Ilovaga o‘tish uchun bosing"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Ilovalar almashtirilsinmi?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Boshqa ilova ishlab turibdi. Yangisini ishga tushirishdan oldin avvalgisini yoping."</string>
<string name="old_app_action" msgid="493129172238566282">"<xliff:g id="OLD_APP">%1$s</xliff:g>ga qaytish"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"<xliff:g id="OLD_APP">%1$s</xliff:g>ni ishga tushirish"</string>
<string name="new_app_description" msgid="1932143598371537340">"O‘zgarishlarni saqlamasdan, eski ilova yopilsin"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> foydalanish uchun ajratilgan xotira chegarasidan o‘tib ketdi"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Hip-damp yaratildi; uni yuborish uchun bosing"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Hip-damp ma’lumotlari bilan ulashasizmi?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g> jarayoni o‘zi uchun ajratilgan <xliff:g id="SIZE">%2$s</xliff:g> xotira chegarasidan o‘tib ketdi. Ilova dasturchisi bilan ulashishingiz uchun hip-damp ma’lumotlari yig‘ilib qoldi. Ehtiyot bo\'ling: ushbu hip-dampda ilova uchun foydalanishga ruxsat berilgan shaxsiy ma’lumotlaringiz bo‘lishi mumkin."</string>
<string name="sendText" msgid="5209874571959469142">"Matn uchun amalni tanlash"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi tarmog‘ida internet aloqasi yo‘q"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Variantlarni ko‘rsatish uchun bosing"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Wi-Fi’ga ulana olmadi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" tezligi past Internetga ulangan."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Ulanishga ruxsat berilsinmi?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Wi-Fi Direct’ni ishga tushirish. Bu Wi-Fi mijoz/ulanish nuqtasini o‘chiradi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Wi-Fi Direct ishga tushirilmadi."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct yoniq"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Sozlamalarni ochish uchun bosing"</string>
<string name="accept" msgid="1645267259272829559">"Qabul qilish"</string>
<string name="decline" msgid="2112225451706137894">"Rad qilish"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"taklif jo‘natildi"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB orqali rasm o‘tkazish"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB orqali MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"USB jihozga ulangan"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Qo‘shimcha parametrlarni ko‘rsatish uchun bosing."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"USB orqali nosozliklarni tuzatish"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"O‘chirib qo‘yish uchun bosing."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Xatoliklar hisoboti olinmoqda…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Xatoliklar hisoboti yuborilsinmi?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Xatoliklar hisoboti yuborilmoqda…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Yangi <xliff:g id="NAME">%s</xliff:g> kartasi aniqlandi"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Rasm va boshqa fayllarni o‘tkazish"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"“<xliff:g id="NAME">%s</xliff:g>” buzilgan"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g>: buzilgan. Uni tuzatish uchun bosing."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> qo‘llab-quvvatlanmaydi"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Bu xotira qurilmasi (<xliff:g id="NAME">%s</xliff:g>) qo‘llab-quvvatlanmaydi. Uni mos keladigan formatda sozlash uchun bu yerga bosing."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g> kutilmaganda chiqarib olindi"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Ma’lumotlar yo‘qolishining oldini olish uchun <xliff:g id="NAME">%s</xliff:g> kartasini chiqarishdan oldin u bilan ulanishni uzing"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"“<xliff:g id="NAME">%s</xliff:g>” kartasi chiqarib olingan"</string>
@@ -1212,18 +1201,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Ulanmoqda…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Ulandi"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Xato"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Sozlash uchun bosing"</string>
<string name="upload_file" msgid="2897957172366730416">"Faylni tanlash"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Hech qanday fayl tanlanmadi"</string>
<string name="reset" msgid="2448168080964209908">"Tiklash"</string>
<string name="submit" msgid="1602335572089911941">"Yuborish"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Mashina usuli yoqilgan"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Avtomobil rejimidan chiqish uchun bosing."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Modem rejimi yoniq"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Sozlash uchun bosing."</string>
<string name="back_button_label" msgid="2300470004503343439">"Orqaga"</string>
<string name="next_button_label" msgid="1080555104677992408">"Keyingi"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Tashlab o‘tish"</string>
@@ -1256,8 +1242,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Hisob qo‘shish"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Ko‘paytirish"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Kamaytirish"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> raqamini bosib turing."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Ko‘paytirish uchun yuqoriga, kamaytirish uchun pastga suring."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Daqiqani ko‘paytirish"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Daqiqani kamaytirish"</string>
@@ -1301,8 +1286,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB xotira"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Tahrirlash"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Ma’lumotlardan foydalanish ogohlantirilishi"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Trafik sarfi va sozlamalarni ko‘rish uchun bosing."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G trafik chekloviga yetdi"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G trafik chekloviga yetdi"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Mobil internet chekloviga yetdi"</string>
@@ -1314,8 +1298,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Wi-Fi ma’lumot cheklovdan o‘tdi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"Chegaradan <xliff:g id="SIZE">%s</xliff:g> oshib ketdi."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Fon rejimi cheklangan"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Cheklovni olib tashlash uchun bosing."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Xavfsizlik sertifikati"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Ushbu sertifikat - to‘g‘ri."</string>
<string name="issued_to" msgid="454239480274921032">"Tegishli:"</string>
@@ -1531,10 +1514,8 @@
<string name="select_year" msgid="7952052866994196170">"Yilni tanlash"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> o‘chirildi"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Ish <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Bu ekrandan chiqish uchun “Orqaga” tugmasini bosib turing."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Bu ekrandan chiqish uchun “Umumiy ma’lumot” tugmasini bosib turing."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Ilova qadab qo‘yilgan. Uni ekrandan yechish ushbu qurilmada ta’qiqlangan."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Ekran qadab qo‘yildi"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Ekran bo‘shatildi"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 53df2da35da7..73d49267fc27 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Truy xuất nội dung cửa sổ"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Kiểm tra nội dung của cửa sổ bạn đang tương tác."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Bật Khám phá bằng cách chạm"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Mục đã nhấn sẽ được nói to và bạn có thể khám phá màn hình bằng cử chỉ."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Bật khả năng truy cập web nâng cao"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Tập lệnh có thể được cài đặt để làm cho nội dung ứng dụng dễ truy cập hơn."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Xem nội dung bạn nhập"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Nhập PUK và mã PIN mới"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Mã PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Mã PIN mới"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Nhấn để nhập mật khẩu"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Nhập mật khẩu để mở khóa"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Nhập mã PIN để mở khóa"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Mã PIN không chính xác."</string>
@@ -862,36 +860,36 @@
</plurals>
<string name="now_string_shortest" msgid="8912796667087856402">"bây giờ"</string>
<plurals name="duration_minutes_shortest" formatted="false" msgid="3957499975064245495">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>phút</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>phút</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> phút</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> phút</item>
</plurals>
<plurals name="duration_hours_shortest" formatted="false" msgid="3552182110578602356">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>giờ</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>giờ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> giờ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> giờ</item>
</plurals>
<plurals name="duration_days_shortest" formatted="false" msgid="5213655532597081640">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ngày</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ngày</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ngày</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ngày</item>
</plurals>
<plurals name="duration_years_shortest" formatted="false" msgid="7848711145196397042">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>năm</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>năm</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> năm</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> năm</item>
</plurals>
<plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
<item quantity="other">trong <xliff:g id="COUNT_1">%d</xliff:g>ph</item>
<item quantity="one">trong <xliff:g id="COUNT_0">%d</xliff:g>ph</item>
</plurals>
<plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
- <item quantity="other">trong <xliff:g id="COUNT_1">%d</xliff:g>gi</item>
- <item quantity="one">trong <xliff:g id="COUNT_0">%d</xliff:g>gi</item>
+ <item quantity="other">trong <xliff:g id="COUNT_1">%d</xliff:g>h</item>
+ <item quantity="one">trong <xliff:g id="COUNT_0">%d</xliff:g>h</item>
</plurals>
<plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
- <item quantity="other">trong <xliff:g id="COUNT_1">%d</xliff:g>ng</item>
- <item quantity="one">trong <xliff:g id="COUNT_0">%d</xliff:g>ng</item>
+ <item quantity="other">trong <xliff:g id="COUNT_1">%d</xliff:g> ngày</item>
+ <item quantity="one">trong <xliff:g id="COUNT_0">%d</xliff:g> ngày</item>
</plurals>
<plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
- <item quantity="other">trong <xliff:g id="COUNT_1">%d</xliff:g>năm</item>
- <item quantity="one">trong <xliff:g id="COUNT_0">%d</xliff:g>năm</item>
+ <item quantity="other">trong <xliff:g id="COUNT_1">%d</xliff:g> năm</item>
+ <item quantity="one">trong <xliff:g id="COUNT_0">%d</xliff:g> năm</item>
</plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"Sự cố video"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"Video này không hợp lệ để phát trực tuyến đến thiết bị này."</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Một số chức năng hệ thống có thể không hoạt động"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Không đủ bộ nhớ cho hệ thống. Đảm bảo bạn có 250 MB dung lượng trống và khởi động lại."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"<xliff:g id="APP_NAME">%1$s</xliff:g> đang chạy"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Nhấn để biết thêm thông tin hoặc dừng ứng dụng."</string>
<string name="ok" msgid="5970060430562524910">"OK"</string>
<string name="cancel" msgid="6442560571259935130">"Hủy"</string>
<string name="yes" msgid="5362982303337969312">"OK"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Khởi động ứng dụng."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Hoàn tất khởi động."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> đang hoạt động"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Nhấn để chuyển sang ứng dụng"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Chuyển đổi ứng dụng?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Bạn phải dừng một ứng dụng khác hiện đang chạy trước khi khởi động một ứng dụng mới."</string>
<string name="old_app_action" msgid="493129172238566282">"Quay lại <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Bắt đầu <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Dừng ứng dụng cũ mà không lưu."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> đã vượt quá giới hạn bộ nhớ"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Tệp báo lỗi đã được thu thập; nhấn để chia sẻ"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Chia sẻ tệp báo lỗi?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Quá trình <xliff:g id="PROC">%1$s</xliff:g> đã vượt quá giới hạn bộ nhớ xử lý <xliff:g id="SIZE">%2$s</xliff:g>. Tệp báo lỗi khả dụng để bạn chia sẻ với nhà phát triển. Hãy cẩn thận: tệp báo lỗi này có thể chứa bất kỳ thông tin cá nhân nào mà ứng dụng có quyền truy cập."</string>
<string name="sendText" msgid="5209874571959469142">"Chọn một tác vụ cho văn bản"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi không có quyền truy cập Internet"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Nhấn để biết tùy chọn"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Không thể kết nối với Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" có kết nối Internet không tốt."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Cho phép kết nối?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Khởi động Wi-Fi Direct. Việc này sẽ tắt hoạt động của ứng dụng khách/điểm phát sóng Wi-Fi."</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Không thể khởi động Wi-Fi Direct."</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct được bật"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Nhấn để xem cài đặt"</string>
<string name="accept" msgid="1645267259272829559">"Đồng ý"</string>
<string name="decline" msgid="2112225451706137894">"Từ chối"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Đã gửi thư mời"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB để truyền ảnh"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB cho MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Đã kết nối với phụ kiện USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Nhấn để biết thêm tùy chọn."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Gỡ lỗi USB đã được kết nối"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Nhấn để vô hiệu hóa gỡ lỗi USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Đang thu thập báo cáo lỗi…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Chia sẻ báo cáo lỗi?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Đang chia sẻ báo cáo lỗi…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"Đã phát hiện <xliff:g id="NAME">%s</xliff:g> mới"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Để chuyển ảnh và phương tiện"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> bị lỗi"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> bị lỗi. Nhấn để khắc phục."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g> không được hỗ trợ"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Thiết bị này không hỗ trợ <xliff:g id="NAME">%s</xliff:g> này. Nhấn để thiết lập ở định dạng được hỗ trợ."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"Đã tháo đột ngột <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Ngắt kết nối <xliff:g id="NAME">%s</xliff:g> trước khi tháo nhằm tránh mất dữ liệu"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"Đã tháo <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Đang kết nối VPN luôn bật…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"Đã kết nối VPN luôn bật"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Lỗi VPN luôn bật"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Nhấn để định cấu hình"</string>
<string name="upload_file" msgid="2897957172366730416">"Chọn tệp"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Không có tệp nào được chọn"</string>
<string name="reset" msgid="2448168080964209908">"Đặt lại"</string>
<string name="submit" msgid="1602335572089911941">"Gửi"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Chế độ trên ô tô đã được bật"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Nhấn để thoát khỏi chế độ trên ô tô."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Chức năng điểm truy cập Internet hoặc điểm phát sóng đang hoạt động"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Nhấn để thiết lập."</string>
<string name="back_button_label" msgid="2300470004503343439">"Quay lại"</string>
<string name="next_button_label" msgid="1080555104677992408">"Tiếp theo"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Bỏ qua"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Thêm tài khoản"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Tăng"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Giảm"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"Chạm và giữ <xliff:g id="VALUE">%s</xliff:g>."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Trượt lên để tăng và trượt xuống để giảm."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Tăng phút"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Giảm phút"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Bộ lưu trữ USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Chỉnh sửa"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Cảnh báo sử dụng dữ liệu"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Nhấn để xem sử dụng và cài đặt."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"Đã đạt tới giới hạn dữ liệu 2G-3G"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"Đã đạt tới giới hạn dữ liệu 4G"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Đã đạt tới giới hạn dữ liệu di động"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Vượt quá g.hạn d.liệu Wi-Fi"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> vượt quá g.hạn được chỉ định."</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Dữ liệu nền bị giới hạn"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Nhấn để xóa giới hạn."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Chứng chỉ bảo mật"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Chứng chỉ này hợp lệ."</string>
<string name="issued_to" msgid="454239480274921032">"Cấp cho:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Chọn năm"</string>
<string name="deleted_key" msgid="7659477886625566590">"Đã xóa <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> làm việc"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Để bỏ ghim màn hình này, nhấn và giữ Quay lại."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Để bỏ ghim màn hình này, chạm và giữ Tổng quan."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Ứng dụng được ghim: Không được phép bỏ ghim trên thiết bị này."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Đã ghim màn hình"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Đã bỏ ghim màn hình"</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index eac51ef34ca9..defd0a66b2eb 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"检索窗口内容"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"检查您正与其进行互动的窗口的内容。"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"启用触摸浏览"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"设备将大声读出您点按的内容,同时您可以通过手势来浏览屏幕。"</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"启用网页无障碍增强功能"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"安装脚本以方便访问应用的内容。"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"监测您输入的文字"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"请输入PUK码和新的PIN码"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK码"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"新的PIN码"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"点按即可输入密码"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"输入密码以解锁"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"输入PIN码进行解锁"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN码有误。"</string>
@@ -878,20 +876,20 @@
<item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 年</item>
</plurals>
<plurals name="duration_minutes_shortest_future" formatted="false" msgid="3277614521231489951">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 分钟内</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 分钟内</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 分钟后</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 分钟后</item>
</plurals>
<plurals name="duration_hours_shortest_future" formatted="false" msgid="2152452368397489370">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 小时内</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 小时内</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 小时后</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 小时后</item>
</plurals>
<plurals name="duration_days_shortest_future" formatted="false" msgid="8088331502820295701">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 天内</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 天内</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 天后</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 天后</item>
</plurals>
<plurals name="duration_years_shortest_future" formatted="false" msgid="2317006667145250301">
- <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 年内</item>
- <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 年内</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 年后</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 年后</item>
</plurals>
<string name="VideoView_error_title" msgid="3534509135438353077">"视频问题"</string>
<string name="VideoView_error_text_invalid_progressive_playback" msgid="3186670335938670444">"抱歉,该视频不适合在此设备上播放。"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"某些系统功能可能无法正常使用"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"系统存储空间不足。请确保您有250MB的可用空间,然后重新启动。"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"“<xliff:g id="APP_NAME">%1$s</xliff:g>”正在运行"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"点按即可了解详情或停止应用。"</string>
<string name="ok" msgid="5970060430562524910">"确定"</string>
<string name="cancel" msgid="6442560571259935130">"取消"</string>
<string name="yes" msgid="5362982303337969312">"确定"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在启动应用。"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"即将完成启动。"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g>正在运行"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"点按即可切换到应用"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"切换应用吗?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"已有一个应用正在运行,要启动新的应用,您必须先停止该应用。"</string>
<string name="old_app_action" msgid="493129172238566282">"返回至<xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"启动<xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"停止旧的应用,但不保存。"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g>占用的内存已超出限制"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"已收集堆转储数据;点按即可共享"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"要共享堆转储数据吗?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"<xliff:g id="PROC">%1$s</xliff:g>进程占用的内存已超出限制 (<xliff:g id="SIZE">%2$s</xliff:g>)。您可以将收集的堆转储数据共享给相应的开发者。请注意:此数据中可能包含该应用有权存取的您的个人信息。"</string>
<string name="sendText" msgid="5209874571959469142">"选择要对文字执行的操作"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"此 WLAN 网络无法访问互联网"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"点按即可查看相关选项"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"无法连接到WLAN"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" 互联网连接状况不佳。"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"要允许连接吗?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"启动WLAN直连。此操作将会关闭WLAN客户端/热点。"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"无法启动WLAN直连。"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"已启用WLAN直连"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"点按即可查看相关设置"</string>
<string name="accept" msgid="1645267259272829559">"接受"</string>
<string name="decline" msgid="2112225451706137894">"拒绝"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"邀请已发送"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"正在通过 USB 传输照片"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"正在通过 USB 连接到 MIDI 接口"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"已连接到USB配件"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"点按即可查看更多选项。"</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"已连接到USB调试"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"点按即可停用 USB 调试功能。"</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"正在生成错误报告…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"要分享错误报告吗?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"正在分享错误报告…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"检测到新的<xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"可用于传输照片和媒体文件"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g>已损坏"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g>已损坏,点按即可修复。"</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"<xliff:g id="NAME">%s</xliff:g>不受支持"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"该设备不支持此<xliff:g id="NAME">%s</xliff:g>。点按即可使用支持的格式进行设置。"</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g>已意外移除"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"请先卸载<xliff:g id="NAME">%s</xliff:g>,再将其移除,以防数据丢失。"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"已移除<xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"正在连接到始终开启的 VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"已连接到始终开启的 VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"始终开启的 VPN 出现错误"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"点按即可进行配置"</string>
<string name="upload_file" msgid="2897957172366730416">"选择文件"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"未选定任何文件"</string>
<string name="reset" msgid="2448168080964209908">"重置"</string>
<string name="submit" msgid="1602335572089911941">"提交"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"已启用车载模式"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"点按即可退出车载模式。"</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"网络共享或热点已启用"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"点按即可进行设置。"</string>
<string name="back_button_label" msgid="2300470004503343439">"上一步"</string>
<string name="next_button_label" msgid="1080555104677992408">"下一步"</string>
<string name="skip_button_label" msgid="1275362299471631819">"跳过"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"添加帐号"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"增大"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"减小"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> 触摸并按住。"</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"向上滑动可增大数值,向下滑动可减小数值。"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"增大分钟值"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"减小分钟值"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB存储器"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"修改"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"流量警告"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"点按即可查看使用情况和设置。"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"已达到2G-3G流量上限"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"已达到4G流量上限"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"已达到移动数据流量上限"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"超出了WLAN数据流量上限"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"超出规定上限 <xliff:g id="SIZE">%s</xliff:g>。"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"后台流量受限制"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"点按即可取消限制。"</string>
<string name="ssl_certificate" msgid="6510040486049237639">"安全证书"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"该证书有效。"</string>
<string name="issued_to" msgid="454239480274921032">"颁发给:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"选择年份"</string>
<string name="deleted_key" msgid="7659477886625566590">"已删除<xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"工作<xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"要取消固定此屏幕,请触摸并按住“返回”按钮。"</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"要取消固定此屏幕,请触摸并按住“概览”按钮。"</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"应用处于固定状态:在此设备上不允许退出该模式。"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"已固定屏幕"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"已取消固定屏幕"</string>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 088b9e841bfa..4ba3c406e0ba 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"擷取視窗內容"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"檢查您使用中的視窗內容。"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"開啟「輕觸探索」功能"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"朗讀您輕按的項目,並可讓您使用手勢探索螢幕。"</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"開啟增強版網頁無障礙設定"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"可能會安裝程式碼,使應用程式內容更易於存取。"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"記錄您輸入的文字"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"輸入 PUK 碼和新 PIN 碼"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK 碼"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"新 PIN 碼"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"輕按即可輸入密碼"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"輸入密碼即可解鎖"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"輸入 PIN 碼即可解鎖"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN 碼不正確。"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"部分系統功能可能無法運作"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"系統儲存空間不足。請確認裝置有 250 MB 的可用空間,然後重新啟動。"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」執行中"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"輕按即可瞭解詳情或停止應用程式。"</string>
<string name="ok" msgid="5970060430562524910">"確定"</string>
<string name="cancel" msgid="6442560571259935130">"取消"</string>
<string name="yes" msgid="5362982303337969312">"確定"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在啟動應用程式。"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"啟動完成。"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"正在執行 <xliff:g id="APP">%1$s</xliff:g>"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"輕按即可切換至應用程式"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"切換應用程式?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"另一個應用程式已在執行,您必須停止執行該應用程式,才能啟動新的應用程式。"</string>
<string name="old_app_action" msgid="493129172238566282">"返回 <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"啟動 <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"停止舊的應用程式,且不儲存。"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> 的記憶體用量已超過限額"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"已收集堆轉儲;輕按即可分享"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"分享堆轉儲?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"這處理程序 (<xliff:g id="PROC">%1$s</xliff:g>) 的記憶體用量已超過限額 (<xliff:g id="SIZE">%2$s</xliff:g>)。您可將已收集的堆轉儲分享給開發人員。請謹慎,這堆轉儲可包含該應用程式有權存取您的任何個人資料。"</string>
<string name="sendText" msgid="5209874571959469142">"選擇處理文字的操作"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi 並未連接互聯網"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"輕按即可查看選項"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"無法連線至 Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" 互聯網連線欠佳。"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"允許連線?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"啟動 Wi-Fi Direct,這會關閉 Wi-Fi 使用者端/熱點。"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"無法啟動 Wi-Fi Direct。"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct 已開啟"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"輕按即可設定"</string>
<string name="accept" msgid="1645267259272829559">"接受"</string>
<string name="decline" msgid="2112225451706137894">"拒絕"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"已發出邀請"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB 相片傳輸"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"已連接到一個 USB 配件"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"輕按即可查看更多選項。"</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"已連接 USB 偵錯工具"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"輕按即可停用 USB 偵錯功能。"</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"正在取得錯誤報告…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"要分享錯誤報告嗎?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"正在分享錯誤報告…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"已偵測到新<xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"用於轉移相片和媒體"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"<xliff:g id="NAME">%s</xliff:g> 已受損"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g>已損壞,輕按即可修復。"</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"不支援的 <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"此裝置並不支援此 <xliff:g id="NAME">%s</xliff:g>。輕按即可在支援的格式設定。"</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"<xliff:g id="NAME">%s</xliff:g>被意外移除"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"請先卸載<xliff:g id="NAME">%s</xliff:g>,然後才移除,以免遺失資料。"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"已移除<xliff:g id="NAME">%s</xliff:g>"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"正在連線至永久連線的 VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"已連線至永久連線的 VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"永久連線的 VPN 發生錯誤"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"輕觸即可設定"</string>
<string name="upload_file" msgid="2897957172366730416">"選擇檔案"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"未選擇檔案"</string>
<string name="reset" msgid="2448168080964209908">"重設"</string>
<string name="submit" msgid="1602335572089911941">"提交"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"已啟用車用模式"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"輕按即可結束車用模式。"</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"已啟用網絡共享或熱點"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"輕按即可設定。"</string>
<string name="back_button_label" msgid="2300470004503343439">"返回"</string>
<string name="next_button_label" msgid="1080555104677992408">"繼續"</string>
<string name="skip_button_label" msgid="1275362299471631819">"略過"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"新增帳戶"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"增加"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"減少"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> 按住。"</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"向上滑動即可增加,向下滑動即可減少。"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"增加分鐘數"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"減少分鐘數"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB 儲存裝置"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"編輯"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"資料用量警告"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"輕按即可查看用量和設定。"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"已達到 2G-3G 數據流量上限"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"已達到 4G 數據流量上限"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"已達到流動數據流量上限"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"已達 Wi-Fi 數據上限"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> 超過規定上限。"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"已限制背景資料"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"輕按即可移除限制。"</string>
<string name="ssl_certificate" msgid="6510040486049237639">"安全性憑證"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"憑證有效。"</string>
<string name="issued_to" msgid="454239480274921032">"發給:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"選取年份"</string>
<string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> 已刪除"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"公司<xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"如要取消固定這個畫面,請按住 [返回]。"</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"如要取消固定這個畫面,請按住 [概覽]。"</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"應用程式已固定:不允許在此裝置上取消固定。"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"螢幕已固定"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"已取消固定螢幕"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index d3648ee444d2..201a1453a5e7 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"擷取視窗內容"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"檢查您存取的視窗內容。"</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"啟用輕觸探索功能"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"朗讀您輕觸的項目,而且可讓您用手勢探索螢幕。"</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"啟用強化網頁協助工具"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"可能會安裝程式碼,使應用程式內容更易於存取。"</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"記錄您輸入的文字"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"輸入 PUK 碼和新 PIN 碼"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"PUK 碼"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"新 PIN 碼"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"輕觸即可輸入密碼"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"輸入密碼即可解鎖"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"輸入 PIN 即可解鎖"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"PIN 碼不正確。"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"部分系統功能可能無法運作"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"系統儲存空間不足。請確定您已釋出 250MB 的可用空間,然後重新啟動。"</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」目前正在執行"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"輕觸即可瞭解詳情或停止應用程式。"</string>
<string name="ok" msgid="5970060430562524910">"確定"</string>
<string name="cancel" msgid="6442560571259935130">"取消"</string>
<string name="yes" msgid="5362982303337969312">"確定"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在啟動應用程式。"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"啟動完成。"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> 執行中"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"輕觸即可切換至應用程式"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"切換應用程式?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"其他應用程式已在執行中,您必須停止執行該應用程式,才能啟動新的應用程式。"</string>
<string name="old_app_action" msgid="493129172238566282">"返回 <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"啟動 <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"停止舊的應用程式且不儲存。"</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> 已超出記憶體上限"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"已取得記憶體快照資料;輕觸即可分享"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"分享記憶體快照資料?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"程序「<xliff:g id="PROC">%1$s</xliff:g>」已超出 <xliff:g id="SIZE">%2$s</xliff:g> 的程序記憶體上限。系統已產生記憶體快照資料,可供您與開發人員分享。請注意:記憶體快照資料中可能包含應用程式可存取的個人資訊。"</string>
<string name="sendText" msgid="5209874571959469142">"選取傳送文字內容的方式"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"Wi-Fi 網路沒有網際網路連線"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"輕觸即可查看選項"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"無法連線至 Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" 的網際網路連線狀況不佳。"</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"允許連線?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"啟動 Wi-Fi Direct 作業,這會關閉 Wi-Fi 用戶端/無線基地台作業。"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"無法啟動 Wi-Fi Direct。"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct 已開啟"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"輕觸即可查看設定"</string>
<string name="accept" msgid="1645267259272829559">"接受"</string>
<string name="decline" msgid="2112225451706137894">"拒絕"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"邀請函已傳送"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"USB 相片傳輸"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"USB MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"已連接 USB 配件"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"輕觸即可查看更多選項。"</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"已連接 USB 偵錯工具"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"輕觸即可停用 USB 偵錯。"</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"正在接收錯誤報告…"</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"要分享錯誤報告嗎?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"正在分享錯誤報告…"</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"偵測到新的「<xliff:g id="NAME">%s</xliff:g>」"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"可用於傳輸相片和媒體"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"「<xliff:g id="NAME">%s</xliff:g>」毀損"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g>已損毀。輕觸即可修正。"</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"不支援的「<xliff:g id="NAME">%s</xliff:g>」"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"此裝置不支援這個 <xliff:g id="NAME">%s</xliff:g>。輕觸即可使用支援的格式進行設定。"</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"意外移除「<xliff:g id="NAME">%s</xliff:g>」"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"請先卸載「<xliff:g id="NAME">%s</xliff:g>」,再將其移除,以免資料遺失。"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"已移除「<xliff:g id="NAME">%s</xliff:g>」"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"正在連線至永久連線的 VPN…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"已連線至永久連線的 VPN"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"永久連線的 VPN 發生錯誤"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"輕觸即可進行設定"</string>
<string name="upload_file" msgid="2897957172366730416">"選擇檔案"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"未選擇任何檔案"</string>
<string name="reset" msgid="2448168080964209908">"重設"</string>
<string name="submit" msgid="1602335572089911941">"提交"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"已啟用車用模式"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"輕觸即可結束車用模式。"</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"網路共用或無線基地台已啟用"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"輕觸即可進行設定。"</string>
<string name="back_button_label" msgid="2300470004503343439">"返回"</string>
<string name="next_button_label" msgid="1080555104677992408">"繼續"</string>
<string name="skip_button_label" msgid="1275362299471631819">"略過"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"新增帳戶"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"增加"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"減少"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> 按住。"</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"向上滑動即可增加,向下滑動即可減少。"</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"增加分鐘數"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"減少分鐘數"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"USB 儲存裝置"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"編輯"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"數據用量警告"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"輕觸即可查看用量和設定。"</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"已達到 2G-3G 數據流量上限"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"已達到 4G 數據流量上限"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"已達到行動數據流量上限"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"已超過 Wi-Fi 數據上限"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> 超過規定上限。"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"已限制背景資料"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"輕觸即可移除限制。"</string>
<string name="ssl_certificate" msgid="6510040486049237639">"安全性憑證"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"憑證有效。"</string>
<string name="issued_to" msgid="454239480274921032">"發佈至:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"選取年份"</string>
<string name="deleted_key" msgid="7659477886625566590">"已刪除 <xliff:g id="KEY">%1$s</xliff:g>"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"公司<xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"如要取消固定這個畫面,請按住「返回」按鈕。"</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"如要取消固定這個畫面,請按住「總覽」按鈕。"</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"應用程式已固定:無法在這部裝置取消固定。"</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"已固定螢幕"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"已取消固定螢幕"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 7117e516899d..55d4b7306c7c 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -263,8 +263,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Thola okuqukethwe kwewindi"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Hlola okuqukethwe kwewindi ohlanganyela nalo."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Vula ukuhlola ngokuthinta"</string>
- <!-- no translation found for capability_desc_canRequestTouchExploration (7543249041581408313) -->
- <skip />
+ <string name="capability_desc_canRequestTouchExploration" msgid="7543249041581408313">"Izinto ezithephiwe zizokhulunywa ngokuzwakalayo futhi isikrini singahlolwa kusetshenziswa ukuthintwa."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Vula ukufinyeleleka kwewebhu okuthuthukisiwe"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Amaskripthi angase afakwe ukwenza okuqukethwe kohlelo lokusebenza kufinyeleleke kakhulu."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Qapha umbhalo owuthayiphayo"</string>
@@ -663,8 +662,7 @@
<string name="keyguard_password_enter_puk_code" msgid="4800725266925845333">"Faka i-PUK nephinikhodi entsha"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="1341112146710087048">"Ikhodi le-PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="8027680321614196258">"Iphinikhodi entsha"</string>
- <!-- no translation found for keyguard_password_entry_touch_hint (2644215452200037944) -->
- <skip />
+ <string name="keyguard_password_entry_touch_hint" msgid="2644215452200037944"><font size="17">"Thepha ukuze uthayiphe iphasiwedi"</font></string>
<string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"Bhala iphasiwedi ukuze kuvuleke"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Faka i-PIN ukuvula"</string>
<string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Ikhodi ye-PIN engalungile!"</string>
@@ -924,8 +922,7 @@
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Eminye imisebenzi yohlelo ingahle ingasebenzi"</string>
<string name="low_internal_storage_view_text_no_boot" msgid="6935190099204693424">"Akusona isitoreji esanele sesistimu. Qiniseka ukuthi unesikhala esikhululekile esingu-250MB uphinde uqalise kabusha."</string>
<string name="app_running_notification_title" msgid="8718335121060787914">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> iyasebenza"</string>
- <!-- no translation found for app_running_notification_text (1197581823314971177) -->
- <skip />
+ <string name="app_running_notification_text" msgid="1197581823314971177">"Thepha ukuthola ulwazi oluningi noma ukumisa uhlelo lokusebenza."</string>
<string name="ok" msgid="5970060430562524910">"KULUNGILE"</string>
<string name="cancel" msgid="6442560571259935130">"Khansela"</string>
<string name="yes" msgid="5362982303337969312">"KULUNGILE"</string>
@@ -999,8 +996,7 @@
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Qalisa izinhlelo zokusebenza."</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"Qedela ukuqala kabusha."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> iyasebenza"</string>
- <!-- no translation found for heavy_weight_notification_detail (867643381388543170) -->
- <skip />
+ <string name="heavy_weight_notification_detail" msgid="867643381388543170">"Thepha ukuze ushintshele kuhlelo lokusebenza"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Shintsha izinhlelo zokusebenza?"</string>
<string name="heavy_weight_switcher_text" msgid="7022631924534406403">"Olunye uhlelo lokusebenza luvele luyasebenza lokho kumele kumiswe ngaphambi kokuba uqalise olusha."</string>
<string name="old_app_action" msgid="493129172238566282">"Buyisela ku:<xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
@@ -1008,8 +1004,7 @@
<string name="new_app_action" msgid="5472756926945440706">"Qala <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
<string name="new_app_description" msgid="1932143598371537340">"Misa uhlelo lokusebenza endala ngaphandle kokulondoloza."</string>
<string name="dump_heap_notification" msgid="2618183274836056542">"I-<xliff:g id="PROC">%1$s</xliff:g> idlule umkhawulo wememori"</string>
- <!-- no translation found for dump_heap_notification_detail (6901391084243999274) -->
- <skip />
+ <string name="dump_heap_notification_detail" msgid="6901391084243999274">"Ukulahlwa kwehipu kuqoqiwe; thepha ukuze wabelane"</string>
<string name="dump_heap_title" msgid="5864292264307651673">"Yabelana ngokulahlwa kwehipu?"</string>
<string name="dump_heap_text" msgid="4809417337240334941">"Inqubo engu-<xliff:g id="PROC">%1$s</xliff:g> idlule inqubo yayo yomkhawulo wememori ongu-<xliff:g id="SIZE">%2$s</xliff:g>. Ukulahlwa kwehipu kuyatholakala kuwe ukuze wabelane nonjiniyela wayo. Qaphela: lokhu kulahlwa kwehipu kungaqukatha noma yiluphi ulwazi lakho lomuntu siqu uhlelo lokusebenza elinokufinyelela kukho."</string>
<string name="sendText" msgid="5209874571959469142">"Khetha okufanele kwenziwe okomqhafazo"</string>
@@ -1045,8 +1040,7 @@
<!-- no translation found for network_available_sign_in_detailed (8000081941447976118) -->
<skip />
<string name="wifi_no_internet" msgid="8451173622563841546">"I-Wi-Fi ayinakho ukufinyelela kwe-inthanethi"</string>
- <!-- no translation found for wifi_no_internet_detailed (8083079241212301741) -->
- <skip />
+ <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"Thepha ukuze uthole izinketho"</string>
<string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Ayikwazanga ukuxhuma kwi-Wi-Fi"</string>
<string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" inoxhumano oluphansi lwe-inthanethi."</string>
<string name="wifi_connect_alert_title" msgid="8455846016001810172">"Vumela ukuxhumeka?"</string>
@@ -1056,8 +1050,7 @@
<string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Qala ukusebenza kwe-Wi-Fi Okuqondile. Lokhu kuzocima ikhasimende le-Wi-Fi/Ukusebenza okwe-hotspot"</string>
<string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Yehlulekile ukuqala i-Wi-Fi Ngqo"</string>
<string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"I-Wi-Fi Direct ivulekile"</string>
- <!-- no translation found for wifi_p2p_enabled_notification_message (8064677407830620023) -->
- <skip />
+ <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Thepha ukuze uthole izilungiselelo"</string>
<string name="accept" msgid="1645267259272829559">"Yamukela"</string>
<string name="decline" msgid="2112225451706137894">"Nqaba"</string>
<string name="wifi_p2p_invitation_sent_title" msgid="1318975185112070734">"Isimemo sithunyelwe"</string>
@@ -1109,11 +1102,9 @@
<string name="usb_ptp_notification_title" msgid="1347328437083192112">"I-USB yokudluliswa kwesithombe"</string>
<string name="usb_midi_notification_title" msgid="4850904915889144654">"I-USB ye-MIDI"</string>
<string name="usb_accessory_notification_title" msgid="7848236974087653666">"Ixhunywe ku-accessory ye-USB"</string>
- <!-- no translation found for usb_notification_message (3370903770828407960) -->
- <skip />
+ <string name="usb_notification_message" msgid="3370903770828407960">"Thepha ngezinketho eziningi."</string>
<string name="adb_active_notification_title" msgid="6729044778949189918">"Ukulungisa iphutha le-USB kuxhunyiwe"</string>
- <!-- no translation found for adb_active_notification_message (4948470599328424059) -->
- <skip />
+ <string name="adb_active_notification_message" msgid="4948470599328424059">"Thepha ukuze ukhubaze ukususa isiphazamisi se-USB."</string>
<string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"Ithatha umbiko wesiphazamisi..."</string>
<string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"Yabelana ngombiko wesiphazamisi?"</string>
<string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"Yabelana ngombiko wesiphazamisi..."</string>
@@ -1133,11 +1124,9 @@
<string name="ext_media_new_notification_message" msgid="7589986898808506239">"I-<xliff:g id="NAME">%s</xliff:g> entsha itholiwe"</string>
<string name="ext_media_ready_notification_message" msgid="4083398150380114462">"Ukuze kudluliselwe izithombe nemidiya"</string>
<string name="ext_media_unmountable_notification_title" msgid="8295123366236989588">"Yonakele <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unmountable_notification_message (2343202057122495773) -->
- <skip />
+ <string name="ext_media_unmountable_notification_message" msgid="2343202057122495773">"<xliff:g id="NAME">%s</xliff:g> yonakele. Thepha ukuze ulungise."</string>
<string name="ext_media_unsupported_notification_title" msgid="3797642322958803257">"Akusekelwe <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for ext_media_unsupported_notification_message (6121601473787888589) -->
- <skip />
+ <string name="ext_media_unsupported_notification_message" msgid="6121601473787888589">"Le divayisi ayisekeli le <xliff:g id="NAME">%s</xliff:g>. Thepha ukuze usethe ngefomethi esekelwayo."</string>
<string name="ext_media_badremoval_notification_title" msgid="3206248947375505416">"I-<xliff:g id="NAME">%s</xliff:g> isuswe ngokungalindelekile"</string>
<string name="ext_media_badremoval_notification_message" msgid="380176703346946313">"Yehlisa i-<xliff:g id="NAME">%s</xliff:g> ngaphambi kokususa ukuze ugweme ukulahleka kwedatha"</string>
<string name="ext_media_nomedia_notification_title" msgid="1704840188641749091">"I-<xliff:g id="NAME">%s</xliff:g> isusiwe"</string>
@@ -1209,18 +1198,15 @@
<string name="vpn_lockdown_connecting" msgid="6443438964440960745">"I-VPN ehlala ikhanya iyaxhuma…"</string>
<string name="vpn_lockdown_connected" msgid="8202679674819213931">"I-VPN ehlala ikhanya ixhunyiwe"</string>
<string name="vpn_lockdown_error" msgid="6009249814034708175">"Iphutha le-VPN ehlala ikhanya"</string>
- <!-- no translation found for vpn_lockdown_config (4655589351146766608) -->
- <skip />
+ <string name="vpn_lockdown_config" msgid="4655589351146766608">"Thinta ukuze umise"</string>
<string name="upload_file" msgid="2897957172366730416">"Khetha ifayela"</string>
<string name="no_file_chosen" msgid="6363648562170759465">"Ayikho ifayela ekhethiwe"</string>
<string name="reset" msgid="2448168080964209908">"Setha kabusha"</string>
<string name="submit" msgid="1602335572089911941">"Hambisa"</string>
<string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Imodi yemoto ivunyelwe"</string>
- <!-- no translation found for car_mode_disable_notification_message (6301524980144350051) -->
- <skip />
+ <string name="car_mode_disable_notification_message" msgid="6301524980144350051">"Thepha ukuze uphume kumodi yemoto."</string>
<string name="tethered_notification_title" msgid="3146694234398202601">"Ukusebenzisa njengemodemu noma i-hotspot ephathekayo kuvuliwe"</string>
- <!-- no translation found for tethered_notification_message (2113628520792055377) -->
- <skip />
+ <string name="tethered_notification_message" msgid="2113628520792055377">"Thepha ukuze usethe."</string>
<string name="back_button_label" msgid="2300470004503343439">"Emuva"</string>
<string name="next_button_label" msgid="1080555104677992408">"Okulandelayo"</string>
<string name="skip_button_label" msgid="1275362299471631819">"Yeqa"</string>
@@ -1253,8 +1239,7 @@
<string name="add_account_button_label" msgid="3611982894853435874">"Engeza i-akhawunti"</string>
<string name="number_picker_increment_button" msgid="2412072272832284313">"Khulisa"</string>
<string name="number_picker_decrement_button" msgid="476050778386779067">"Yehlisa"</string>
- <!-- no translation found for number_picker_increment_scroll_mode (5259126567490114216) -->
- <skip />
+ <string name="number_picker_increment_scroll_mode" msgid="5259126567490114216">"<xliff:g id="VALUE">%s</xliff:g> thinta futhi ubambe."</string>
<string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Shelelisela phezulu ukuze ungeze futhi phansi ukuze wehlise."</string>
<string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Khulisa iminithi"</string>
<string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Yehlisa iminithi"</string>
@@ -1298,8 +1283,7 @@
<string name="storage_usb" msgid="3017954059538517278">"Isitoreji se-USB"</string>
<string name="extract_edit_menu_button" msgid="8940478730496610137">"Hlela"</string>
<string name="data_usage_warning_title" msgid="1955638862122232342">"Isexwayiso sokusetshenziswa kwedatha"</string>
- <!-- no translation found for data_usage_warning_body (6660692274311972007) -->
- <skip />
+ <string name="data_usage_warning_body" msgid="6660692274311972007">"Thepha ukuze ubuke ukusetshenziswa nezilungiselelo."</string>
<string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G umkhawulo wedatha ufinyelelwe"</string>
<string name="data_usage_4g_limit_title" msgid="4609566827219442376">"4G umkhawulo wedatha ufinyelelwe"</string>
<string name="data_usage_mobile_limit_title" msgid="557158376602636112">"Umkhawulo wedatha yeselula ufinyelelwe"</string>
@@ -1311,8 +1295,7 @@
<string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"Kufinyelwe kunkhawulo we-Wi-Fi ongedlulwe"</string>
<string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> ngaphezu komkhawulo ocacisiwe"</string>
<string name="data_usage_restricted_title" msgid="5965157361036321914">"Imininingo egciniwe ivinjelwe"</string>
- <!-- no translation found for data_usage_restricted_body (469866376337242726) -->
- <skip />
+ <string name="data_usage_restricted_body" msgid="469866376337242726">"Thepha ukuze ususe umkhawulo."</string>
<string name="ssl_certificate" msgid="6510040486049237639">"Isitifiketi sokuvikeleka"</string>
<string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Lesi sitifiketi silungile."</string>
<string name="issued_to" msgid="454239480274921032">"Ikhishelwe u:"</string>
@@ -1528,10 +1511,8 @@
<string name="select_year" msgid="7952052866994196170">"Khetha unyaka"</string>
<string name="deleted_key" msgid="7659477886625566590">"I-<xliff:g id="KEY">%1$s</xliff:g> isusiwe"</string>
<string name="managed_profile_label_badge" msgid="2355652472854327647">"Umsebenzi <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <!-- no translation found for lock_to_app_toast (1420543809500606964) -->
- <skip />
- <!-- no translation found for lock_to_app_toast_accessible (2302154926850846096) -->
- <skip />
+ <string name="lock_to_app_toast" msgid="1420543809500606964">"Ukuze ususe ukuphina lesi sikrini, thinta futhi ubambe okuthi Emuva."</string>
+ <string name="lock_to_app_toast_accessible" msgid="2302154926850846096">"Ukuze ususe ukuphina lesi sikrini, thinta futhi ubambe okuthi Buka konke."</string>
<string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Uhlelo lokusebenza luphiniwe: Ukususa ukuphina akuvunyelwe kule divayisi."</string>
<string name="lock_to_app_start" msgid="6643342070839862795">"Isikrini siphiniwe"</string>
<string name="lock_to_app_exit" msgid="8598219838213787430">"Isikrini sisuswe ukuphina"</string>
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 191afe5fd521..8c5cb473295e 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -553,12 +553,12 @@
<attr name="immersive" format="boolean" />
<!-- Flag declaring that this activity will be run in VR mode, and specifying
- the component of the VrListenerService that should be bound while this
- Activity is visible if installed and enabled on this device. This is
- equivalent to calling {@link android.app.Activity#setVrModeEnabled} with the
- the given component name within this Activity. Declaring this will prevent
- the system from leaving VR mode during an Activity transtion one VR activity
- to another. -->
+ the component of the {@link android.service.vr.VrListenerService} that should be
+ bound while this Activity is visible if it is installed and enabled on this device.
+ This is equivalent to calling {@link android.app.Activity#setVrModeEnabled} with the
+ the given component name within the Activity that this attribute is set for.
+ Declaring this will prevent the system from leaving VR mode during an Activity
+ transtion from one VR activity to another. -->
<attr name="enableVrMode" format="string" />
<!-- Specify the order in which content providers hosted by a process
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index e73fa9a81cc0..2a83d888bde5 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -2474,4 +2474,6 @@
remote provider -->
<string name="config_tvRemoteServicePackage" translatable="false"></string>
+ <!-- True if the device supports persisting security logs across reboots. -->
+ <bool name="config_supportPreRebootSecurityLogs">false</bool>
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 14c17f37e35a..c64a93485b07 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2586,4 +2586,6 @@
<!-- TV Remote Service package -->
<java-symbol type="string" name="config_tvRemoteServicePackage" />
+
+ <java-symbol type="bool" name="config_supportPreRebootSecurityLogs" />
</resources>
diff --git a/core/tests/coretests/src/android/net/NetworkPolicyManagerTest.java b/core/tests/coretests/src/android/net/NetworkPolicyManagerTest.java
new file mode 100644
index 000000000000..fc9c9d335467
--- /dev/null
+++ b/core/tests/coretests/src/android/net/NetworkPolicyManagerTest.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.net;
+
+import static android.net.NetworkPolicyManager.MASK_ALL_NETWORKS;
+import static android.net.NetworkPolicyManager.MASK_METERED_NETWORKS;
+import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL;
+import static android.net.NetworkPolicyManager.RULE_ALLOW_METERED;
+import static android.net.NetworkPolicyManager.RULE_NONE;
+import static android.net.NetworkPolicyManager.RULE_REJECT_ALL;
+import static android.net.NetworkPolicyManager.RULE_REJECT_METERED;
+import static android.net.NetworkPolicyManager.RULE_TEMPORARY_ALLOW_METERED;
+import static android.net.NetworkPolicyManager.uidRulesToString;
+
+import junit.framework.TestCase;
+
+public class NetworkPolicyManagerTest extends TestCase {
+
+ public void testUidRulesToString() {
+ uidRulesToStringTest(RULE_NONE, "0 (NONE)");
+ uidRulesToStringTest(RULE_ALLOW_METERED, "1 (ALLOW_METERED)");
+ uidRulesToStringTest(RULE_TEMPORARY_ALLOW_METERED, "2 (TEMPORARY_ALLOW_METERED)");
+ uidRulesToStringTest(RULE_REJECT_METERED, "4 (REJECT_METERED)");
+ uidRulesToStringTest(RULE_ALLOW_ALL, "32 (ALLOW_ALL)");
+ uidRulesToStringTest(RULE_REJECT_ALL, "64 (REJECT_ALL)");
+
+ uidRulesToStringTest(RULE_ALLOW_METERED | RULE_ALLOW_ALL,
+ "33 (ALLOW_METERED|ALLOW_ALL)");
+ uidRulesToStringTest(RULE_ALLOW_METERED | RULE_REJECT_ALL,
+ "65 (ALLOW_METERED|REJECT_ALL)");
+ uidRulesToStringTest(RULE_TEMPORARY_ALLOW_METERED | RULE_ALLOW_ALL,
+ "34 (TEMPORARY_ALLOW_METERED|ALLOW_ALL)");
+ uidRulesToStringTest(RULE_TEMPORARY_ALLOW_METERED | RULE_REJECT_ALL,
+ "66 (TEMPORARY_ALLOW_METERED|REJECT_ALL)");
+ uidRulesToStringTest(RULE_REJECT_METERED | RULE_ALLOW_ALL,
+ "36 (REJECT_METERED|ALLOW_ALL)");
+ uidRulesToStringTest(RULE_REJECT_METERED | RULE_REJECT_ALL,
+ "68 (REJECT_METERED|REJECT_ALL)");
+ }
+
+ private void uidRulesToStringTest(int uidRules, String expected) {
+ final String actual = uidRulesToString(uidRules);
+ assertEquals("Wrong string for uidRules " + uidRules, expected, actual);
+ }
+
+ public void testMeteredNetworksMask() {
+ assertEquals(RULE_NONE, MASK_METERED_NETWORKS
+ & RULE_NONE);
+
+ assertEquals(RULE_ALLOW_METERED, MASK_METERED_NETWORKS
+ & RULE_ALLOW_METERED);
+ assertEquals(RULE_ALLOW_METERED, MASK_METERED_NETWORKS
+ & (RULE_ALLOW_METERED | RULE_ALLOW_ALL));
+ assertEquals(RULE_ALLOW_METERED, MASK_METERED_NETWORKS
+ & (RULE_ALLOW_METERED | RULE_REJECT_ALL));
+
+ assertEquals(RULE_TEMPORARY_ALLOW_METERED, MASK_METERED_NETWORKS
+ & RULE_TEMPORARY_ALLOW_METERED);
+ assertEquals(RULE_TEMPORARY_ALLOW_METERED, MASK_METERED_NETWORKS
+ & (RULE_TEMPORARY_ALLOW_METERED | RULE_ALLOW_ALL));
+ assertEquals(RULE_TEMPORARY_ALLOW_METERED, MASK_METERED_NETWORKS
+ & (RULE_TEMPORARY_ALLOW_METERED | RULE_REJECT_ALL));
+
+ assertEquals(RULE_REJECT_METERED, MASK_METERED_NETWORKS
+ & RULE_REJECT_METERED);
+ assertEquals(RULE_REJECT_METERED, MASK_METERED_NETWORKS
+ & (RULE_REJECT_METERED | RULE_ALLOW_ALL));
+ assertEquals(RULE_REJECT_METERED, MASK_METERED_NETWORKS
+ & (RULE_REJECT_METERED | RULE_REJECT_ALL));
+ }
+
+ public void testAllNetworksMask() {
+ assertEquals(RULE_NONE, MASK_ALL_NETWORKS
+ & RULE_NONE);
+
+ assertEquals(RULE_ALLOW_ALL, MASK_ALL_NETWORKS
+ & RULE_ALLOW_ALL);
+ assertEquals(RULE_ALLOW_ALL, MASK_ALL_NETWORKS
+ & (RULE_ALLOW_ALL | RULE_ALLOW_METERED));
+ assertEquals(RULE_ALLOW_ALL, MASK_ALL_NETWORKS
+ & (RULE_ALLOW_ALL | RULE_TEMPORARY_ALLOW_METERED));
+ assertEquals(RULE_ALLOW_ALL, MASK_ALL_NETWORKS
+ & (RULE_ALLOW_ALL | RULE_REJECT_METERED));
+
+ assertEquals(RULE_REJECT_ALL, MASK_ALL_NETWORKS
+ & RULE_REJECT_ALL);
+ assertEquals(RULE_REJECT_ALL, MASK_ALL_NETWORKS
+ & (RULE_REJECT_ALL | RULE_ALLOW_METERED));
+ assertEquals(RULE_REJECT_ALL, MASK_ALL_NETWORKS
+ & (RULE_REJECT_ALL | RULE_TEMPORARY_ALLOW_METERED));
+ assertEquals(RULE_REJECT_ALL, MASK_ALL_NETWORKS
+ & (RULE_REJECT_ALL | RULE_REJECT_METERED));
+ }
+}
diff --git a/docs/html/_redirects.yaml b/docs/html/_redirects.yaml
index 30f8ce4365a0..07b8ef784f7e 100644
--- a/docs/html/_redirects.yaml
+++ b/docs/html/_redirects.yaml
@@ -1,3 +1,5 @@
+# For information about this file's format, see
+# https://developers.google.com/internal/publishing/redirects
redirects:
- from: /about/versions/index.html
to: /about/index.html
@@ -22,11 +24,11 @@ redirects:
- from: /tools/debugging/debugging-projects-cmdline.html
to: /studio/tools/debugging/index.html
- from: /sdk/compatibility-library.html
- to: /go/libraries/support-library/index.html
+ to: /topic/libraries/support-library/index.html
- from: /tools/extras/support-library.html
- to: /go/libraries/support-library/index.html
+ to: /topic/libraries/support-library/index.html
- from: /training/basics/fragments/support-lib.html
- to: /go/libraries/support-library/setup.html
+ to: /topic/libraries/support-library/setup.html
- from: /sdk/eclipse-adt.html
to: /studio/tools/sdk/eclipse-adt.html
- from: /sdk/RELEASENOTES.html
@@ -70,7 +72,7 @@ redirects:
- from: /tools/publishing/app-signing-eclipse.html
to: /studio/tools/help/adt.html
- from: /tools/help/uiautomator/...
- to: /go/libraries/testing-support-library/
+ to: /topic/libraries/testing-support-library/
- from: /tools/testing/testing_ui.html
to: /training/testing/ui-testing/index.html
- from: /tools/testing/activity_test.html
@@ -816,19 +818,19 @@ redirects:
- from: /r/studio-ui/am-network.html
to: /studio/tools/help/am-network.html
- from: /r/studio-ui/am-hprof.html
- to: /studio/tools/help/am-memory.html
+ to: /studio/tools/help/am-hprof.html
- from: /r/studio-ui/am-allocation.html
- to: /studio/tools/help/am-memory.html
+ to: /studio/tools/help/am-allocation.html
- from: /r/studio-ui/am-methodtrace.html
- to: /studio/tools/help/am-cpu.html
+ to: /studio/tools/help/am-methodtrace.html
- from: /r/studio-ui/am-sysinfo.html
- to: /studio/tools/help/android-monitor.html
+ to: /studio/tools/help/am-sysinfo.html
- from: /r/studio-ui/am-screenshot.html
- to: /studio/tools/help/android-monitor.html
+ to: /studio/tools/help/am-screenshot.html
- from: /r/studio-ui/am-video.html
- to: /studio/tools/help/android-monitor.html
+ to: /studio/tools/help/am-video.html
- from: /r/studio-ui/avd-manager.html
- to: /studio/tools/help/avd-manager.html
+ to: /studio/tools/devices/managing-avds.html
- from: /r/studio-ui/rundebugconfig.html
to: /studio/tools/devices/emulator.html
- from: /r/studio-ui/devicechooser.html
@@ -846,16 +848,16 @@ redirects:
- from: /downloads/
to: https://commondatastorage.googleapis.com/androiddevelopers/
-# Redirects for the new go/libraries/ area
+# Redirects for the new [dac]/topic/libraries/ area
- from: /tools/support-library
- to: /go/libraries/support-library
+ to: /topic/libraries/support-library
- from: /tools/data-binding/...
- to: /go/libraries/data-binding
+ to: /topic/libraries/data-binding
- from: /tools/testing-support-library
- to: /go/libraries/testing-support-library
+ to: /topic/libraries/testing-support-library
# GCM redirects
- from: /reference/com/google/...
@@ -898,7 +900,19 @@ redirects:
to: /studio/tools/debugging/improving-w-lint.html
- from: /tools/debugging/index.html
to: /studio/tools/debugging/debugging-studio.html
+- from: /tools/help/project-mgmt.html
+ to: /studio/tools/projects/index.html
# Handle the rest of the tool pages that moved into /studio
- from: /tools/...
- to: /studio/tools/... \ No newline at end of file
+ to: /studio/tools/...
+
+# Vanity urls
+- from: /background_optimizations
+ to: /preview/features/background-optimization.html
+- from: /background_optimizations/
+ to: /preview/features/background-optimization.html
+- from: /bgopt
+ to: /preview/features/background-optimization.html
+- from: /bgopt/
+ to: /preview/features/background-optimization.html \ No newline at end of file
diff --git a/docs/html/go/libraries/_book.yaml b/docs/html/go/libraries/_book.yaml
deleted file mode 100644
index 209dae5980b5..000000000000
--- a/docs/html/go/libraries/_book.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-toc:
-- title: Support Library
- path: /tools/support-library/index.html
- section:
- - title: Features
- path: /tools/support-library/features.html
- - title: Setup
- path: /tools/support-library/setup.html
-
-- title: Data Binding Library
- path: /tools/data-binding/guide.html
-
-- title: Testing Support Library
- path: /tools/testing-support-library/index.html
- section:
- - title: API Reference
- path: /reference/android/support/test/package-summary.html
diff --git a/docs/html/guide/_book.yaml b/docs/html/guide/_book.yaml
index 4163f0f494b6..6d6686b3cf3f 100644
--- a/docs/html/guide/_book.yaml
+++ b/docs/html/guide/_book.yaml
@@ -365,11 +365,10 @@ toc:
- title: App Install Location
path: /guide/topics/data/install-location.html
-
- title: Libraries
- path: /go/libraries/index.html
+ path: /topic/libraries/index.html
section:
- - include: /go/libraries/_book.yaml
+ - include: /topic/libraries/_book.yaml
- title: Administration
path: /guide/topics/admin/index.html
diff --git a/docs/html/guide/topics/resources/drawable-resource.jd b/docs/html/guide/topics/resources/drawable-resource.jd
index b489b43699a6..aae0cbae99b3 100644
--- a/docs/html/guide/topics/resources/drawable-resource.jd
+++ b/docs/html/guide/topics/resources/drawable-resource.jd
@@ -1468,8 +1468,8 @@ In XML: <code>@[<em>package</em>:]drawable/<em>filename</em></code>
android:bottomRightRadius="<em>integer</em>" /&gt;
&lt;<a href="#gradient-element">gradient</a>
android:angle="<em>integer</em>"
- android:centerX="<em>integer</em>"
- android:centerY="<em>integer</em>"
+ android:centerX="<em>float</em>"
+ android:centerY="<em>float</em>"
android:centerColor="<em>integer</em>"
android:endColor="<em>color</em>"
android:gradientRadius="<em>integer</em>"
diff --git a/docs/html/jd_extras_en.js b/docs/html/jd_extras_en.js
index e3fbb253bc39..18e1f993fcae 100644
--- a/docs/html/jd_extras_en.js
+++ b/docs/html/jd_extras_en.js
@@ -3,7 +3,7 @@
'Extras' defined in this file are metadata represendations of
resources that are outside the autogenerated local resource lists,
- or representations that override the default representations.
+ or representations that override the default representations.
(Overriding the default is not recommended)
'Collections' are a predefined set of resources that pages can
@@ -4535,12 +4535,12 @@ METADATA['en'].collections = {
"https://support.google.com/googleplay/answer/2651410"
]
},
- "go/libraries": {
+ "topic/libraries": {
"title": "",
"resources": [
- "go/libraries/support-library/index.html",
- "go/libraries/testing-support-library/index.html",
- "go/libraries/data-binding/index.html"
+ "topic/libraries/support-library/index.html",
+ "topic/libraries/testing-support-library/index.html",
+ "topic/libraries/data-binding/index.html"
]
},
"autolanding": {
diff --git a/docs/html/ndk/guides/graphics/getting-started.jd b/docs/html/ndk/guides/graphics/getting-started.jd
index 9099b03f342c..c0dd463c9db3 100644
--- a/docs/html/ndk/guides/graphics/getting-started.jd
+++ b/docs/html/ndk/guides/graphics/getting-started.jd
@@ -30,6 +30,7 @@ be using one of the following devices, running at least Android N, Developer Pre
<ul>
<li>Nexus 6P.</li>
<li>Nexus 5X.</li>
+ <li>Nexus Player.</li>
</ul>
<p>
diff --git a/docs/html/preview/support.jd b/docs/html/preview/support.jd
index f0da709b7043..ea870a89fca3 100644
--- a/docs/html/preview/support.jd
+++ b/docs/html/preview/support.jd
@@ -16,6 +16,74 @@ page.image=images/cards/card-n-support_2x.png
<p>To discuss issues or ideas with other developers working with Android N, join the
<a href="{@docRoot}preview/dev-community">Developer Preview Google+ community</a>.</p>
+<h2 id="dp3">Developer Preview 3</h2>
+
+<div class="wrap">
+ <div class="cols">
+ <div class="col-6of12">
+ <p>
+ <em>Date: April 2016<br>
+ Builds: TODO<br>
+ Emulator support: x86 &amp; ARM (32/64-bit)<br>
+ Google Play services: TODO</em>
+ </p>
+ </div>
+ </div>
+</div>
+
+<h3 id="new">New in DP3</h3>
+
+<ul>
+ <li>TODO</li>
+</ul>
+
+<h4 id="dp2-fixes">Fixes for issues reported by developers</h4>
+
+<p>
+ A number of issues reported by developers have been fixed, including:
+</p>
+
+<ul>
+ <li>TODO</li>
+</ul>
+
+<h3 id="general">General advisories</h3>
+
+<p>
+ This Developer Preview release is for <strong>app developers only</strong>
+ and is designed for use in compatibility testing and early development only.
+ Please be aware of these general notes about the release:
+</p>
+
+<ul>
+
+ <li>TODO</li>
+</ul>
+
+<h3 id="ki">Known Issues</h3>
+
+<p>TODO</p>
+
+<h4>Device-specific issues</h4>
+
+<p>TODO</p>
+
+<dl>
+ <dt>
+ <strong>Device Name</strong>
+ </dt>
+
+ <dd>
+ Issue 1
+ </dd>
+
+ <dd>
+ Issue 2
+ </dd>
+</dl>
+
+<!-- DP2 Release Notes Archive -->
+
<h2 id="dp2">Developer Preview 2</h2>
<div class="wrap">
@@ -31,7 +99,7 @@ page.image=images/cards/card-n-support_2x.png
</div>
</div>
-<h3 id="new">New in DP2</h3>
+<h3 id="dp2-new">New in DP2</h3>
<ul>
<li>Platform support for Vulkan, a new 3D rendering API that provides
@@ -87,7 +155,7 @@ page.image=images/cards/card-n-support_2x.png
</li>
</ul>
-<h3 id="general">General advisories</h3>
+<h3 id="dp2-general">General advisories</h3>
<p>
This Developer Preview release is for <strong>app developers only</strong>
@@ -145,7 +213,7 @@ page.image=images/cards/card-n-support_2x.png
</li>
</ul>
-<h3 id="ki">Known Issues</h3>
+<h3 id="dp2-ki">Known Issues</h3>
<h4>Performance and battery</h4>
@@ -393,7 +461,7 @@ page.image=images/cards/card-n-support_2x.png
<h3 id="dp1-platform">Platform Issues</h3>
-<h4 id="performance">Performance and battery</h4>
+<h4>Performance and battery</h4>
<ul>
<li>System and app performance is known to be <strong>periodically slow /
@@ -416,7 +484,7 @@ page.image=images/cards/card-n-support_2x.png
</li>
</ul>
-<h4 id="microphone">Microphone</h4>
+<h4>Microphone</h4>
<ul>
<li>The system may incorrect persists the microphone mute state across apps and reboots. If you mute the microphone in an app and the state is persisted, open any app that has microphone mute controls and unmute the microphone.</li>
@@ -552,19 +620,20 @@ page.image=images/cards/card-n-support_2x.png
</li>
</ul>
-<h4 id="keyboard">Keyboard</h4>
+<h4 >Keyboard</h4>
<ul>
-<li>Bluetooth pairing between keyboards and Android devices may be unstable. </li>
+ <li>Bluetooth pairing between keyboards and Android devices may be unstable.
+ </li>
</ul>
-<h4 id="video">Video</h4>
+<h4 >Video</h4>
<ul>
<li>Video playback may lag and show interruptions.</li>
</ul>
-<h4 id="wifi">Wi-Fi</h4>
+<h4>Wi-Fi</h4>
<ul>
<li>Wi-Fi has undergone some refactoring which may change API corner case
@@ -577,7 +646,7 @@ page.image=images/cards/card-n-support_2x.png
</li>
</ul>
-<h4 id="direct">Direct boot</h4>
+<h4>Direct boot</h4>
<ul>
<li>NFC doesn't function until first unlock.
@@ -607,7 +676,7 @@ page.image=images/cards/card-n-support_2x.png
</li>
</ul>
-<h4 id="pip">Picture-in-picture for Android TV</h4>
+<h4>Picture-in-picture for Android TV</h4>
<ul>
<li>The PIP integration in the Recents UI is not finalized, and is subject to
@@ -624,7 +693,7 @@ page.image=images/cards/card-n-support_2x.png
</li>
</ul>
-<h4 id="bugs">Bug reports</h4>
+<h4>Bug reports</h4>
<ul>
<li>Bug reports do not always complete successfully (as a workaround,
@@ -633,7 +702,7 @@ page.image=images/cards/card-n-support_2x.png
</li>
</ul>
-<h4 id="split">Split-screen Multi-window</h4>
+<h4>Split-screen Multi-window</h4>
<ul>
<li>Apps may experience crashes and unexpected UI behavior when put into
@@ -656,7 +725,7 @@ page.image=images/cards/card-n-support_2x.png
</li>
</ul>
-<h4 id="ime">Input method</h4>
+<h4>Input method</h4>
<ul>
<li>Google Keyboard unexpectedly falls back to the generic Google keyboard
@@ -670,26 +739,31 @@ page.image=images/cards/card-n-support_2x.png
</li>
</ul>
-
-<h4 id="accessibility">Accessibility</h4>
+<h4>Accessibility</h4>
<ul>
- <li>TalkBack exhibits issues with features including Notifications, Quick Settings Tiles and Multi-window display that may cause system crashing or lack of spoken feedback from TalkBack. Future releases of the preview will address these issues.</li>
+ <li>TalkBack exhibits issues with features including Notifications, Quick
+ Settings Tiles and Multi-window display that may cause system crashing or
+ lack of spoken feedback from TalkBack. Future releases of the preview will
+ address these issues.
+ </li>
</ul>
-<h3 id="device-sp">Device-Specific Notes and Issues</h3>
+<h3 id="dp1-device-sp">Device-Specific Notes and Issues</h3>
-<h4 id="player">Nexus Player</h4>
+<h4>Nexus Player</h4>
<ul>
-<li>Video playback, app compatibility and stability issues are expected on Nexus Player in this release of the Preview.</li>
+ <li>Video playback, app compatibility and stability issues are expected on
+ Nexus Player in this release of the Preview.
+ </li>
</ul>
-<h4 id="pixelc">Pixel C</h4>
+<h4>Pixel C</h4>
<ul>
<li>Multi-window resizing may cause crashing.</li>
</ul>
-<h4 id="n9">Nexus 9</h4>
+<h4>Nexus 9</h4>
<ul>
<li>Nexus 9 devices may not start after receiving an over-the-air (OTA) update
via the Android Beta Program. To recover from this issue, you can try
diff --git a/docs/html/topic/libraries/_book.yaml b/docs/html/topic/libraries/_book.yaml
new file mode 100644
index 000000000000..ead95e7a09c7
--- /dev/null
+++ b/docs/html/topic/libraries/_book.yaml
@@ -0,0 +1,17 @@
+toc:
+- title: Support Library
+ path: /topic/libraries/support-library/index.html
+ section:
+ - title: Features
+ path: /topic/libraries/support-library/features.html
+ - title: Setup
+ path: /topic/libraries/support-library/setup.html
+
+- title: Data Binding Library
+ path: /topic/libraries/data-binding/index.html
+
+- title: Testing Support Library
+ path: /topic/libraries/testing-support-library/index.html
+ section:
+ - title: API Reference
+ path: /reference/android/support/test/package-summary.html
diff --git a/docs/html/go/libraries/data-binding/index.jd b/docs/html/topic/libraries/data-binding/index.jd
index ca8784ebfcfb..ca8784ebfcfb 100644
--- a/docs/html/go/libraries/data-binding/index.jd
+++ b/docs/html/topic/libraries/data-binding/index.jd
diff --git a/docs/html/go/libraries/index.jd b/docs/html/topic/libraries/index.jd
index 2831d15e2eab..90520a724807 100644
--- a/docs/html/go/libraries/index.jd
+++ b/docs/html/topic/libraries/index.jd
@@ -7,7 +7,7 @@ included with the Android Framework.</p>
<div class="dynamic-grid">
<div class="resource-widget resource-flow-layout landing col-12"
- data-query="collection:go/libraries"
+ data-query="collection:topic/libraries"
data-cardSizes="6x6"
data-maxResults="6">
</div>
diff --git a/docs/html/go/libraries/support-library/features.jd b/docs/html/topic/libraries/support-library/features.jd
index 089357a5465e..d9616d951c5c 100755
--- a/docs/html/go/libraries/support-library/features.jd
+++ b/docs/html/topic/libraries/support-library/features.jd
@@ -34,11 +34,11 @@ page.title=Support Library Features
<h2>See also</h2>
<ol>
- <li><a href="{@docRoot}go/libraries/support-library/index.html#revisions">
+ <li><a href="{@docRoot}topic/libraries/support-library/index.html#revisions">
Support Library Revisions</a></li>
- <li><a href="{@docRoot}go/libraries/support-library/setup.html">
+ <li><a href="{@docRoot}topic/libraries/support-library/setup.html">
Support Library Setup</a></li>
- <li><a href="{@docRoot}go/libraries/testing-support-library/index.html">
+ <li><a href="{@docRoot}topic/libraries/testing-support-library/index.html">
Testing Support Library</a></li>
</ol>
diff --git a/docs/html/go/libraries/support-library/index.jd b/docs/html/topic/libraries/support-library/index.jd
index 61f0bc2a30d6..61f0bc2a30d6 100644
--- a/docs/html/go/libraries/support-library/index.jd
+++ b/docs/html/topic/libraries/support-library/index.jd
diff --git a/docs/html/go/libraries/support-library/setup.jd b/docs/html/topic/libraries/support-library/setup.jd
index 8fbcee156d32..8fbcee156d32 100755
--- a/docs/html/go/libraries/support-library/setup.jd
+++ b/docs/html/topic/libraries/support-library/setup.jd
diff --git a/docs/html/go/libraries/testing-support-library/index.jd b/docs/html/topic/libraries/testing-support-library/index.jd
index f69a35b7cf25..f69a35b7cf25 100644
--- a/docs/html/go/libraries/testing-support-library/index.jd
+++ b/docs/html/topic/libraries/testing-support-library/index.jd
diff --git a/docs/html/training/index.jd b/docs/html/training/index.jd
index 18971ab1ba0b..ea8b4bba84ce 100644
--- a/docs/html/training/index.jd
+++ b/docs/html/training/index.jd
@@ -43,7 +43,4 @@ an interactive video experience.</p>
data-items-per-page="24"
data-initial-results="6"></div>
</div>
-</section>
-
-<h2 class="norule" id="class-list"
- style="margin:0 0 -40px">Training guides</h2> \ No newline at end of file
+</section> \ No newline at end of file
diff --git a/libs/hwui/AmbientShadow.cpp b/libs/hwui/AmbientShadow.cpp
index 20ecda28b22a..3982fa0938bf 100644
--- a/libs/hwui/AmbientShadow.cpp
+++ b/libs/hwui/AmbientShadow.cpp
@@ -43,9 +43,7 @@
/**
* Other constants:
*/
-// For the edge of the penumbra, the opacity is 0. After transform (1 - alpha),
-// it is 1.
-#define TRANSFORMED_OUTER_OPACITY (1.0f)
+#define OUTER_ALPHA (0.0f)
// Once the alpha difference is greater than this threshold, we will allocate extra
// edge vertices.
@@ -81,17 +79,6 @@ inline float getAlphaFromFactoredZ(float factoredZ) {
return 1.0 / (1 + std::max(factoredZ, 0.0f));
}
-// The shader is using gaussian function e^-(1-x)*(1-x)*4, therefore, we transform
-// the alpha value to (1 - alpha)
-inline float getTransformedAlphaFromAlpha(float alpha) {
- return 1.0f - alpha;
-}
-
-// The output is ranged from 0 to 1.
-inline float getTransformedAlphaFromFactoredZ(float factoredZ) {
- return getTransformedAlphaFromAlpha(getAlphaFromFactoredZ(factoredZ));
-}
-
inline int getEdgeExtraAndUpdateSpike(Vector2* currentSpike,
const Vector3& secondVertex, const Vector3& centroid) {
Vector2 secondSpike = {secondVertex.x - centroid.x, secondVertex.y - centroid.y};
@@ -225,9 +212,9 @@ void AmbientShadow::createAmbientShadow(bool isCasterOpaque,
if (!isCasterOpaque) {
umbraVertices[umbraIndex++] = vertexBufferIndex;
}
- AlphaVertex::set(&shadowVertices[vertexBufferIndex++], casterVertices[i].x,
- casterVertices[i].y,
- getTransformedAlphaFromAlpha(currentAlpha));
+ AlphaVertex::set(&shadowVertices[vertexBufferIndex++],
+ casterVertices[i].x, casterVertices[i].y,
+ currentAlpha);
const Vector3& innerStart = casterVertices[i];
@@ -249,7 +236,7 @@ void AmbientShadow::createAmbientShadow(bool isCasterOpaque,
indexBuffer[indexBufferIndex++] = vertexBufferIndex;
indexBuffer[indexBufferIndex++] = currentInnerVertexIndex;
AlphaVertex::set(&shadowVertices[vertexBufferIndex++], outerVertex.x,
- outerVertex.y, TRANSFORMED_OUTER_OPACITY);
+ outerVertex.y, OUTER_ALPHA);
if (j == 0) {
outerStart = outerVertex;
@@ -285,7 +272,7 @@ void AmbientShadow::createAmbientShadow(bool isCasterOpaque,
(outerLast * startWeight + outerNext * k) / extraVerticesNumber;
indexBuffer[indexBufferIndex++] = vertexBufferIndex;
AlphaVertex::set(&shadowVertices[vertexBufferIndex++], currentOuter.x,
- currentOuter.y, TRANSFORMED_OUTER_OPACITY);
+ currentOuter.y, OUTER_ALPHA);
if (!isCasterOpaque) {
umbraVertices[umbraIndex++] = vertexBufferIndex;
@@ -295,7 +282,7 @@ void AmbientShadow::createAmbientShadow(bool isCasterOpaque,
indexBuffer[indexBufferIndex++] = vertexBufferIndex;
AlphaVertex::set(&shadowVertices[vertexBufferIndex++], currentInner.x,
currentInner.y,
- getTransformedAlphaFromFactoredZ(currentInner.z * heightFactor));
+ getAlphaFromFactoredZ(currentInner.z * heightFactor));
}
}
currentAlpha = nextAlpha;
@@ -307,7 +294,7 @@ void AmbientShadow::createAmbientShadow(bool isCasterOpaque,
if (!isCasterOpaque) {
// Add the centroid as the last one in the vertex buffer.
float centroidOpacity =
- getTransformedAlphaFromFactoredZ(centroid3d.z * heightFactor);
+ getAlphaFromFactoredZ(centroid3d.z * heightFactor);
int centroidIndex = vertexBufferIndex;
AlphaVertex::set(&shadowVertices[vertexBufferIndex++], centroid3d.x,
centroid3d.y, centroidOpacity);
diff --git a/libs/hwui/BakedOpDispatcher.cpp b/libs/hwui/BakedOpDispatcher.cpp
index 0f670a822899..831473cf97a4 100644
--- a/libs/hwui/BakedOpDispatcher.cpp
+++ b/libs/hwui/BakedOpDispatcher.cpp
@@ -346,11 +346,12 @@ static void renderVertexBuffer(BakedOpRenderer& renderer, const BakedOpState& st
bool shadowInterp = vertexBufferRenderFlags & VertexBufferRenderFlags::ShadowInterp;
const int transformFlags = vertexBufferRenderFlags & VertexBufferRenderFlags::Offset
? TransformFlags::OffsetByFudgeFactor : 0;
+
Glop glop;
GlopBuilder(renderer.renderState(), renderer.caches(), &glop)
.setRoundRectClipState(state.roundRectClipState)
- .setMeshVertexBuffer(vertexBuffer, shadowInterp)
- .setFillPaint(paint, state.alpha)
+ .setMeshVertexBuffer(vertexBuffer)
+ .setFillPaint(paint, state.alpha, shadowInterp)
.setTransform(state.computedState.transform, transformFlags)
.setModelViewOffsetRect(translateX, translateY, vertexBuffer.getBounds())
.build();
diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp
index eaa1c330d5dd..949ad450d5f7 100644
--- a/libs/hwui/Caches.cpp
+++ b/libs/hwui/Caches.cpp
@@ -74,6 +74,7 @@ bool Caches::init() {
mPixelBufferState = new PixelBufferState();
mTextureState = new TextureState();
+ mTextureState->constructTexture(*this);
return true;
}
diff --git a/libs/hwui/FrameBuilder.cpp b/libs/hwui/FrameBuilder.cpp
index 502f027029a7..84c8a745ad1e 100644
--- a/libs/hwui/FrameBuilder.cpp
+++ b/libs/hwui/FrameBuilder.cpp
@@ -82,6 +82,9 @@ void FrameBuilder::deferLayers(const LayerUpdateQueue& layers) {
// removed during a dropped frame, but layers may still remain scheduled so
// as not to lose info on what portion is damaged
if (CC_LIKELY(layerNode->getLayer() != nullptr)) {
+ ATRACE_FORMAT("Optimize HW Layer DisplayList %s %ux%u",
+ layerNode->getName(), layerNode->getWidth(), layerNode->getHeight());
+
const Rect& layerDamage = layers.entries()[i].damage;
layerNode->computeOrdering();
diff --git a/libs/hwui/Glop.h b/libs/hwui/Glop.h
index 6a9663412a00..6433c86908e7 100644
--- a/libs/hwui/Glop.h
+++ b/libs/hwui/Glop.h
@@ -44,9 +44,14 @@ class Texture;
namespace VertexAttribFlags {
enum {
+ // Mesh is pure x,y vertex pairs
None = 0,
+ // Mesh has texture coordinates embedded. Note that texture can exist without this flag
+ // being set, if coordinates passed to sampler are determined another way.
TextureCoord = 1 << 0,
+ // Mesh has color embedded (to export to varying)
Color = 1 << 1,
+ // Mesh has alpha embedded (to export to varying)
Alpha = 1 << 2,
};
};
diff --git a/libs/hwui/GlopBuilder.cpp b/libs/hwui/GlopBuilder.cpp
index 0a8e3f3b4db3..e502725ddb09 100644
--- a/libs/hwui/GlopBuilder.cpp
+++ b/libs/hwui/GlopBuilder.cpp
@@ -193,7 +193,7 @@ GlopBuilder& GlopBuilder::setMeshColoredTexturedMesh(ColorTextureVertex* vertexD
return *this;
}
-GlopBuilder& GlopBuilder::setMeshVertexBuffer(const VertexBuffer& vertexBuffer, bool shadowInterp) {
+GlopBuilder& GlopBuilder::setMeshVertexBuffer(const VertexBuffer& vertexBuffer) {
TRIGGER_STAGE(kMeshStage);
const VertexBuffer::MeshFeatureFlags flags = vertexBuffer.getMeshFeatureFlags();
@@ -210,8 +210,6 @@ GlopBuilder& GlopBuilder::setMeshVertexBuffer(const VertexBuffer& vertexBuffer,
alphaVertex ? kAlphaVertexStride : kVertexStride };
mOutGlop->mesh.elementCount = indices
? vertexBuffer.getIndexCount() : vertexBuffer.getVertexCount();
-
- mDescription.useShadowAlphaInterp = shadowInterp;
return *this;
}
@@ -368,15 +366,23 @@ GlopBuilder& GlopBuilder::setFillTexturePaint(Texture& texture,
return *this;
}
-GlopBuilder& GlopBuilder::setFillPaint(const SkPaint& paint, float alphaScale) {
+GlopBuilder& GlopBuilder::setFillPaint(const SkPaint& paint, float alphaScale, bool shadowInterp) {
TRIGGER_STAGE(kFillStage);
REQUIRE_STAGES(kMeshStage | kRoundRectClipStage);
- mOutGlop->fill.texture = { nullptr, GL_INVALID_ENUM, GL_INVALID_ENUM, GL_INVALID_ENUM, nullptr };
+ if (CC_LIKELY(!shadowInterp)) {
+ mOutGlop->fill.texture = {
+ nullptr, GL_INVALID_ENUM, GL_INVALID_ENUM, GL_INVALID_ENUM, nullptr };
+ } else {
+ mOutGlop->fill.texture = {
+ mCaches.textureState().getShadowLutTexture(), GL_TEXTURE_2D,
+ GL_INVALID_ENUM, GL_INVALID_ENUM, nullptr };
+ }
setFill(paint.getColor(), alphaScale,
PaintUtils::getXfermode(paint.getXfermode()), Blend::ModeOrderSwap::NoSwap,
paint.getShader(), paint.getColorFilter());
+ mDescription.useShadowAlphaInterp = shadowInterp;
mDescription.modulate = mOutGlop->fill.color.a < 1.0f;
return *this;
}
@@ -593,8 +599,11 @@ GlopBuilder& GlopBuilder::setRoundRectClipState(const RoundRectClipState* roundR
void verify(const ProgramDescription& description, const Glop& glop) {
if (glop.fill.texture.texture != nullptr) {
LOG_ALWAYS_FATAL_IF(((description.hasTexture && description.hasExternalTexture)
- || (!description.hasTexture && !description.hasExternalTexture)
- || ((glop.mesh.vertices.attribFlags & VertexAttribFlags::TextureCoord) == 0)),
+ || (!description.hasTexture
+ && !description.hasExternalTexture
+ && !description.useShadowAlphaInterp)
+ || ((glop.mesh.vertices.attribFlags & VertexAttribFlags::TextureCoord) == 0
+ && !description.useShadowAlphaInterp)),
"Texture %p, hT%d, hET %d, attribFlags %x",
glop.fill.texture.texture,
description.hasTexture, description.hasExternalTexture,
diff --git a/libs/hwui/GlopBuilder.h b/libs/hwui/GlopBuilder.h
index a9dd56f385b1..1c520c26110e 100644
--- a/libs/hwui/GlopBuilder.h
+++ b/libs/hwui/GlopBuilder.h
@@ -51,14 +51,14 @@ public:
GlopBuilder& setMeshUnitQuad();
GlopBuilder& setMeshTexturedUnitQuad(const UvMapper* uvMapper);
GlopBuilder& setMeshTexturedUvQuad(const UvMapper* uvMapper, const Rect uvs);
- GlopBuilder& setMeshVertexBuffer(const VertexBuffer& vertexBuffer, bool shadowInterp);
+ GlopBuilder& setMeshVertexBuffer(const VertexBuffer& vertexBuffer);
GlopBuilder& setMeshIndexedQuads(Vertex* vertexData, int quadCount);
GlopBuilder& setMeshTexturedMesh(TextureVertex* vertexData, int elementCount); // TODO: delete
GlopBuilder& setMeshColoredTexturedMesh(ColorTextureVertex* vertexData, int elementCount); // TODO: use indexed quads
GlopBuilder& setMeshTexturedIndexedQuads(TextureVertex* vertexData, int elementCount); // TODO: take quadCount
GlopBuilder& setMeshPatchQuads(const Patch& patch);
- GlopBuilder& setFillPaint(const SkPaint& paint, float alphaScale);
+ GlopBuilder& setFillPaint(const SkPaint& paint, float alphaScale, bool shadowInterp = false); // TODO: avoid boolean with default
GlopBuilder& setFillTexturePaint(Texture& texture, const int textureFillFlags,
const SkPaint* paint, float alphaScale);
GlopBuilder& setFillPathTexturePaint(PathTexture& texture,
diff --git a/libs/hwui/LayerBuilder.cpp b/libs/hwui/LayerBuilder.cpp
index 30007772b1bc..66413dcf0d97 100644
--- a/libs/hwui/LayerBuilder.cpp
+++ b/libs/hwui/LayerBuilder.cpp
@@ -336,7 +336,13 @@ void LayerBuilder::deferMergeableOp(LinearAllocator& allocator,
void LayerBuilder::replayBakedOpsImpl(void* arg,
BakedOpReceiver* unmergedReceivers, MergedOpReceiver* mergedReceivers) const {
- ATRACE_NAME("flush drawing commands");
+ if (renderNode) {
+ ATRACE_FORMAT_BEGIN("Issue HW Layer DisplayList %s %ux%u",
+ renderNode->getName(), width, height);
+ } else {
+ ATRACE_BEGIN("flush drawing commands");
+ }
+
for (const BatchBase* batch : mBatches) {
size_t size = batch->getOps().size();
if (size > 1 && batch->isMerging()) {
@@ -355,6 +361,7 @@ void LayerBuilder::replayBakedOpsImpl(void* arg,
}
}
}
+ ATRACE_END();
}
void LayerBuilder::clear() {
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 53ea7fa6f77d..b68240ac7519 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -1697,8 +1697,8 @@ void OpenGLRenderer::drawVertexBuffer(float translateX, float translateY,
Glop glop;
GlopBuilder(mRenderState, mCaches, &glop)
.setRoundRectClipState(currentSnapshot()->roundRectClipState)
- .setMeshVertexBuffer(vertexBuffer, shadowInterp)
- .setFillPaint(*paint, currentSnapshot()->alpha)
+ .setMeshVertexBuffer(vertexBuffer)
+ .setFillPaint(*paint, currentSnapshot()->alpha, shadowInterp)
.setTransform(*currentSnapshot(), transformFlags)
.setModelViewOffsetRect(translateX, translateY, vertexBuffer.getBounds())
.build();
diff --git a/libs/hwui/ProgramCache.cpp b/libs/hwui/ProgramCache.cpp
index 05be48822fb2..59225e108ac7 100644
--- a/libs/hwui/ProgramCache.cpp
+++ b/libs/hwui/ProgramCache.cpp
@@ -231,9 +231,8 @@ const char* gFS_Main_ModulateColor =
const char* gFS_Main_ApplyVertexAlphaLinearInterp =
" fragColor *= alpha;\n";
const char* gFS_Main_ApplyVertexAlphaShadowInterp =
- // Use a gaussian function for the shadow fall off. Note that alpha here
- // is actually (1.0 - alpha) for saving computation.
- " fragColor *= exp(- alpha * alpha * 4.0) - 0.018;\n";
+ // map alpha through shadow alpha sampler
+ " fragColor *= texture2D(baseSampler, vec2(alpha, 0.5)).a;\n";
const char* gFS_Main_FetchTexture[2] = {
// Don't modulate
" fragColor = texture2D(baseSampler, outTexCoords);\n",
@@ -565,7 +564,7 @@ String8 ProgramCache::generateFragmentShader(const ProgramDescription& descripti
shader.append(gFS_Uniforms_Color);
if (!singleColor) modulateOp = MODULATE_OP_MODULATE;
}
- if (description.hasTexture) {
+ if (description.hasTexture || description.useShadowAlphaInterp) {
shader.append(gFS_Uniforms_TextureSampler);
} else if (description.hasExternalTexture) {
shader.append(gFS_Uniforms_ExternalTextureSampler);
diff --git a/libs/hwui/SpotShadow.cpp b/libs/hwui/SpotShadow.cpp
index 759e39b2e4e2..760d814f27a8 100644
--- a/libs/hwui/SpotShadow.cpp
+++ b/libs/hwui/SpotShadow.cpp
@@ -42,9 +42,8 @@
// For each RADIANS_DIVISOR, we would allocate one more vertex b/t the normals.
#define SPOT_CORNER_RADIANS_DIVISOR (M_PI / SPOT_EXTRA_CORNER_VERTEX_PER_PI)
-// For performance, we use (1 - alpha) value for the shader input.
-#define TRANSFORMED_PENUMBRA_ALPHA 1.0f
-#define TRANSFORMED_UMBRA_ALPHA 0.0f
+#define PENUMBRA_ALPHA 0.0f
+#define UMBRA_ALPHA 1.0f
#include "SpotShadow.h"
@@ -941,11 +940,11 @@ void SpotShadow::generateTriangleStrip(bool isCasterOpaque, float shadowStrength
// Fill the IB and VB for the penumbra area.
for (int i = 0; i < newPenumbraLength; i++) {
AlphaVertex::set(&shadowVertices[vertexBufferIndex++], newPenumbra[i].x,
- newPenumbra[i].y, TRANSFORMED_PENUMBRA_ALPHA);
+ newPenumbra[i].y, PENUMBRA_ALPHA);
}
for (int i = 0; i < umbraLength; i++) {
AlphaVertex::set(&shadowVertices[vertexBufferIndex++], umbra[i].x, umbra[i].y,
- TRANSFORMED_UMBRA_ALPHA);
+ UMBRA_ALPHA);
}
for (int i = 0; i < verticesPairIndex; i++) {
@@ -985,14 +984,14 @@ void SpotShadow::generateTriangleStrip(bool isCasterOpaque, float shadowStrength
indexBuffer[indexBufferIndex++] = newPenumbraLength + i;
indexBuffer[indexBufferIndex++] = vertexBufferIndex;
AlphaVertex::set(&shadowVertices[vertexBufferIndex++],
- closerVertex.x, closerVertex.y, TRANSFORMED_UMBRA_ALPHA);
+ closerVertex.x, closerVertex.y, UMBRA_ALPHA);
}
} else {
// If there is no occluded umbra at all, then draw the triangle fan
// starting from the centroid to all umbra vertices.
int lastCentroidIndex = vertexBufferIndex;
AlphaVertex::set(&shadowVertices[vertexBufferIndex++], centroid.x,
- centroid.y, TRANSFORMED_UMBRA_ALPHA);
+ centroid.y, UMBRA_ALPHA);
for (int i = 0; i < umbraLength; i++) {
indexBuffer[indexBufferIndex++] = newPenumbraLength + i;
indexBuffer[indexBufferIndex++] = lastCentroidIndex;
diff --git a/libs/hwui/renderstate/OffscreenBufferPool.cpp b/libs/hwui/renderstate/OffscreenBufferPool.cpp
index 73b6c02a3fdc..10a26e08f897 100644
--- a/libs/hwui/renderstate/OffscreenBufferPool.cpp
+++ b/libs/hwui/renderstate/OffscreenBufferPool.cpp
@@ -20,6 +20,7 @@
#include "Properties.h"
#include "renderstate/RenderState.h"
#include "utils/FatVector.h"
+#include "utils/TraceUtils.h"
#include <utils/Log.h>
@@ -41,6 +42,7 @@ OffscreenBuffer::OffscreenBuffer(RenderState& renderState, Caches& caches,
, texture(caches) {
uint32_t width = computeIdealDimension(viewportWidth);
uint32_t height = computeIdealDimension(viewportHeight);
+ ATRACE_FORMAT("Allocate %ux%u HW Layer", width, height);
caches.textureState().activateTexture(0);
texture.resize(width, height, GL_RGBA);
texture.blend = true;
@@ -101,6 +103,7 @@ uint32_t OffscreenBuffer::computeIdealDimension(uint32_t dimension) {
}
OffscreenBuffer::~OffscreenBuffer() {
+ ATRACE_FORMAT("Destroy %ux%u HW Layer", texture.width(), texture.height());
texture.deleteTexture();
renderState.meshState().deleteMeshBuffer(vbo);
elementCount = 0;
diff --git a/libs/hwui/renderstate/RenderState.cpp b/libs/hwui/renderstate/RenderState.cpp
index ea4391b87006..e78cd7296f42 100644
--- a/libs/hwui/renderstate/RenderState.cpp
+++ b/libs/hwui/renderstate/RenderState.cpp
@@ -298,7 +298,8 @@ void RenderState::render(const Glop& glop, const Matrix4& orthoMatrix) {
// indices
meshState().bindIndicesBuffer(indices.bufferObject);
- if (vertices.attribFlags & VertexAttribFlags::TextureCoord) {
+ // texture
+ if (fill.texture.texture != nullptr) {
const Glop::Fill::TextureData& texture = fill.texture;
// texture always takes slot 0, shader samplers increment from there
mCaches->textureState().activateTexture(0);
@@ -311,13 +312,16 @@ void RenderState::render(const Glop& glop, const Matrix4& orthoMatrix) {
texture.texture->setFilter(texture.filter, false, false, texture.target);
}
- meshState().enableTexCoordsVertexArray();
- meshState().bindTexCoordsVertexPointer(vertices.texCoord, vertices.stride);
-
if (texture.textureTransform) {
glUniformMatrix4fv(fill.program->getUniform("mainTextureTransform"), 1,
GL_FALSE, &texture.textureTransform->data[0]);
}
+ }
+
+ // vertex attributes (tex coord, color, alpha)
+ if (vertices.attribFlags & VertexAttribFlags::TextureCoord) {
+ meshState().enableTexCoordsVertexArray();
+ meshState().bindTexCoordsVertexPointer(vertices.texCoord, vertices.stride);
} else {
meshState().disableTexCoordsVertexArray();
}
diff --git a/libs/hwui/renderstate/TextureState.cpp b/libs/hwui/renderstate/TextureState.cpp
index 78b8edae2eed..f9a1f8c38895 100644
--- a/libs/hwui/renderstate/TextureState.cpp
+++ b/libs/hwui/renderstate/TextureState.cpp
@@ -26,6 +26,9 @@
namespace android {
namespace uirenderer {
+// Width of mShadowLutTexture, defines how accurate the shadow alpha lookup table is
+static const int SHADOW_LUT_SIZE = 128;
+
// Must define as many texture units as specified by kTextureUnitsCount
const GLenum kTextureUnits[] = {
GL_TEXTURE0,
@@ -46,6 +49,41 @@ TextureState::TextureState()
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
}
+TextureState::~TextureState() {
+ if (mShadowLutTexture != nullptr) {
+ mShadowLutTexture->deleteTexture();
+ }
+}
+
+/**
+ * Maps shadow geometry 'alpha' varying (1 for darkest, 0 for transparent) to
+ * darkness at that spot. Input values of 0->1 should be mapped within the same
+ * range, but can affect the curve for a different visual falloff.
+ *
+ * This is used to populate the shadow LUT texture for quick lookup in the
+ * shadow shader.
+ */
+static float computeShadowOpacity(float ratio) {
+ // exponential falloff function provided by UX
+ float val = 1 - ratio;
+ return exp(-val * val * 4.0) - 0.018;
+}
+
+void TextureState::constructTexture(Caches& caches) {
+ if (mShadowLutTexture == nullptr) {
+ mShadowLutTexture.reset(new Texture(caches));
+
+ unsigned char bytes[SHADOW_LUT_SIZE];
+ for (int i = 0; i < SHADOW_LUT_SIZE; i++) {
+ float inputRatio = i / (SHADOW_LUT_SIZE - 1.0f);
+ bytes[i] = computeShadowOpacity(inputRatio) * 255;
+ }
+ mShadowLutTexture->upload(GL_ALPHA, SHADOW_LUT_SIZE, 1, GL_ALPHA, GL_UNSIGNED_BYTE, &bytes);
+ mShadowLutTexture->setFilter(GL_LINEAR);
+ mShadowLutTexture->setWrap(GL_CLAMP_TO_EDGE);
+ }
+}
+
void TextureState::activateTexture(GLuint textureUnit) {
LOG_ALWAYS_FATAL_IF(textureUnit >= kTextureUnitsCount,
"Tried to use texture unit index %d, only %d exist",
diff --git a/libs/hwui/renderstate/TextureState.h b/libs/hwui/renderstate/TextureState.h
index ec94d7e9e267..7296fd39a705 100644
--- a/libs/hwui/renderstate/TextureState.h
+++ b/libs/hwui/renderstate/TextureState.h
@@ -17,14 +17,12 @@
#define RENDERSTATE_TEXTURESTATE_H
#include "Vertex.h"
+#include "Texture.h"
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
-#include <SkXfermode.h>
#include <memory>
-class SkBitmap;
-
namespace android {
namespace uirenderer {
@@ -33,6 +31,9 @@ class Texture;
class TextureState {
friend class Caches; // TODO: move to RenderState
public:
+
+ void constructTexture(Caches& caches);
+
/**
* Activate the specified texture unit. The texture unit must
* be specified using an integer number (0 for GL_TEXTURE0 etc.)
@@ -76,15 +77,20 @@ public:
*/
void unbindTexture(GLuint texture);
+ Texture* getShadowLutTexture() { return mShadowLutTexture.get(); }
+
private:
// total number of texture units available for use
static const int kTextureUnitsCount = 4;
TextureState();
+ ~TextureState();
GLuint mTextureUnit;
// Caches texture bindings for the GL_TEXTURE_2D target
GLuint mBoundTextures[kTextureUnitsCount];
+
+ std::unique_ptr<Texture> mShadowLutTexture;
};
} /* namespace uirenderer */
diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java
index 60444e0c20ca..73485afcecff 100644
--- a/media/java/android/media/MediaRecorder.java
+++ b/media/java/android/media/MediaRecorder.java
@@ -206,13 +206,34 @@ public class MediaRecorder
/** Microphone audio source */
public static final int MIC = 1;
- /** Voice call uplink (Tx) audio source */
+ /** Voice call uplink (Tx) audio source.
+ * <p>
+ * Capturing from <code>VOICE_UPLINK</code> source requires the
+ * {@link android.Manifest.permission#CAPTURE_AUDIO_OUTPUT} permission.
+ * This permission is reserved for use by system components and is not available to
+ * third-party applications.
+ * </p>
+ */
public static final int VOICE_UPLINK = 2;
- /** Voice call downlink (Rx) audio source */
+ /** Voice call downlink (Rx) audio source.
+ * <p>
+ * Capturing from <code>VOICE_DOWNLINK</code> source requires the
+ * {@link android.Manifest.permission#CAPTURE_AUDIO_OUTPUT} permission.
+ * This permission is reserved for use by system components and is not available to
+ * third-party applications.
+ * </p>
+ */
public static final int VOICE_DOWNLINK = 3;
- /** Voice call uplink + downlink audio source */
+ /** Voice call uplink + downlink audio source
+ * <p>
+ * Capturing from <code>VOICE_CALL</code> source requires the
+ * {@link android.Manifest.permission#CAPTURE_AUDIO_OUTPUT} permission.
+ * This permission is reserved for use by system components and is not available to
+ * third-party applications.
+ * </p>
+ */
public static final int VOICE_CALL = 4;
/** Microphone audio source with same orientation as camera if available, the main
diff --git a/media/java/android/media/midi/package.html b/media/java/android/media/midi/package.html
index 93dbf3f779ab..8c1010d610fe 100644
--- a/media/java/android/media/midi/package.html
+++ b/media/java/android/media/midi/package.html
@@ -1,11 +1,12 @@
<html>
<body>
-<p>Android MIDI User Guide</p>
-
-<h1 id=overview>Overview</h1>
+<p>
+Provides classes for sending and receiving messages using the standard MIDI
+event protocol over USB, Bluetooth LE, and virtual (inter-app) transports.
+</p>
-<p>This document describes how to use the Android MIDI API in Java.</p>
+<h1 id=overview>Overview</h1>
<p>The Android MIDI package allows users to:</p>
diff --git a/media/java/android/media/tv/TvInputManager.java b/media/java/android/media/tv/TvInputManager.java
index 22bb5f1bdcef..dfddaa57109d 100644
--- a/media/java/android/media/tv/TvInputManager.java
+++ b/media/java/android/media/tv/TvInputManager.java
@@ -223,9 +223,10 @@ public final class TvInputManager {
* State for {@link #getInputState(String)} and
* {@link TvInputCallback#onInputStateChanged(String, int)}: The input source is connected.
*
- * <p>This state indicates that a source device is connected to the input port and in the normal
- * operation mode. It is mostly relevant to hardware inputs such as HDMI input.
- * Non-hardware inputs are considered connected all the time.
+ * <p>This state indicates that a source device is connected to the input port and is in the
+ * normal operation mode. It is mostly relevant to hardware inputs such as HDMI input. This is
+ * the default state for any hardware inputs where their states are unknown. Non-hardware inputs
+ * are considered connected all the time.
*/
public static final int INPUT_STATE_CONNECTED = 0;
@@ -234,9 +235,8 @@ public final class TvInputManager {
* {@link TvInputCallback#onInputStateChanged(String, int)}: The input source is connected but
* in standby mode.
*
- * <p>This state indicates that a source device is connected to the input port and in standby or
- * low power mode. It is mostly relevant to hardware inputs such as HDMI inputs and Component
- * inputs.
+ * <p>This state indicates that a source device is connected to the input port but is in standby
+ * mode. It is mostly relevant to hardware inputs such as HDMI input.
*/
public static final int INPUT_STATE_CONNECTED_STANDBY = 1;
diff --git a/media/java/android/media/tv/TvStreamConfig.java b/media/java/android/media/tv/TvStreamConfig.java
index eae83cfff5f1..0c2f3fec26a4 100644
--- a/media/java/android/media/tv/TvStreamConfig.java
+++ b/media/java/android/media/tv/TvStreamConfig.java
@@ -28,15 +28,8 @@ import android.util.Log;
public class TvStreamConfig implements Parcelable {
static final String TAG = TvStreamConfig.class.getSimpleName();
- // Must be in sync with tv_input.h
public final static int STREAM_TYPE_INDEPENDENT_VIDEO_SOURCE = 1;
public final static int STREAM_TYPE_BUFFER_PRODUCER = 2;
- /**
- * A flag indicating whether the HAL is sure about signal at this stream. Note that
- * value of 0 here does not necessarily mean no signal. It just means that it may not have
- * signal and the underlying layer is not sure.
- */
- public static final int FLAG_MASK_SIGNAL_DETECTION = 0x1;
private int mStreamId;
private int mType;
@@ -48,10 +41,6 @@ public class TvStreamConfig implements Parcelable {
* via tv_input_device::get_stream_configurations().
*/
private int mGeneration;
- /**
- * Flags for stream status. See FLAG_MASK_* for details.
- */
- private int mFlags;
public static final Parcelable.Creator<TvStreamConfig> CREATOR =
new Parcelable.Creator<TvStreamConfig>() {
@@ -63,8 +52,7 @@ public class TvStreamConfig implements Parcelable {
type(source.readInt()).
maxWidth(source.readInt()).
maxHeight(source.readInt()).
- generation(source.readInt()).
- flags(source.readInt()).build();
+ generation(source.readInt()).build();
} catch (Exception e) {
Log.e(TAG, "Exception creating TvStreamConfig from parcel", e);
return null;
@@ -99,10 +87,6 @@ public class TvStreamConfig implements Parcelable {
return mGeneration;
}
- public int getFlags() {
- return mFlags;
- }
-
@Override
public String toString() {
return "TvStreamConfig {mStreamId=" + mStreamId + ";" + "mType=" + mType + ";mGeneration="
@@ -122,7 +106,6 @@ public class TvStreamConfig implements Parcelable {
dest.writeInt(mMaxWidth);
dest.writeInt(mMaxHeight);
dest.writeInt(mGeneration);
- dest.writeInt(mFlags);
}
/**
@@ -134,7 +117,6 @@ public class TvStreamConfig implements Parcelable {
private Integer mMaxWidth;
private Integer mMaxHeight;
private Integer mGeneration;
- private int mFlags = 0;
public Builder() {
}
@@ -164,11 +146,6 @@ public class TvStreamConfig implements Parcelable {
return this;
}
- public Builder flags(int flag) {
- mFlags = flag;
- return this;
- }
-
public TvStreamConfig build() {
if (mStreamId == null || mType == null || mMaxWidth == null || mMaxHeight == null
|| mGeneration == null) {
@@ -181,7 +158,6 @@ public class TvStreamConfig implements Parcelable {
config.mMaxWidth = mMaxWidth;
config.mMaxHeight = mMaxHeight;
config.mGeneration = mGeneration;
- config.mFlags = mFlags;
return config;
}
}
@@ -196,7 +172,6 @@ public class TvStreamConfig implements Parcelable {
&& config.mStreamId == mStreamId
&& config.mType == mType
&& config.mMaxWidth == mMaxWidth
- && config.mMaxHeight == mMaxHeight
- && config.mFlags == mFlags;
+ && config.mMaxHeight == mMaxHeight;
}
}
diff --git a/packages/DefaultContainerService/res/values-ky-rKG/strings.xml b/packages/DefaultContainerService/res/values-ky-rKG/strings.xml
new file mode 100644
index 000000000000..d91e67ddd0a1
--- /dev/null
+++ b/packages/DefaultContainerService/res/values-ky-rKG/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2008, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="service_name" msgid="4841491635055379553">"Топтомго уруксат берүү"</string>
+</resources>
diff --git a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
index 50273afeceb6..7444797c9cf5 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
@@ -22,6 +22,7 @@ import static com.android.documentsui.State.ACTION_CREATE;
import static com.android.documentsui.State.ACTION_GET_CONTENT;
import static com.android.documentsui.State.ACTION_OPEN;
import static com.android.documentsui.State.ACTION_OPEN_TREE;
+import static com.android.documentsui.State.ACTION_PICK_COPY_DESTINATION;
import static com.android.documentsui.State.MODE_GRID;
import android.app.Activity;
@@ -213,20 +214,27 @@ public abstract class BaseActivity extends Activity
includeState(state);
- // Advanced roots are shown by deafult without menu option if forced by config or intent.
+ // Advanced roots are shown by default without menu option if forced by config or intent.
state.showAdvanced = Shared.shouldShowDeviceRoot(this, intent);
// Menu option is shown for whitelisted intents if advanced roots are not shown by default.
- state.showAdvancedOption = !state.showAdvanced &&
- (state.action == ACTION_OPEN ||
- state.action == ACTION_CREATE ||
- state.action == ACTION_OPEN_TREE ||
- state.action == ACTION_GET_CONTENT);
+ state.showAdvancedOption = !state.showAdvanced && (
+ !directLaunch(intent) ||
+ state.action == ACTION_OPEN ||
+ state.action == ACTION_CREATE ||
+ state.action == ACTION_OPEN_TREE ||
+ state.action == ACTION_PICK_COPY_DESTINATION ||
+ state.action == ACTION_GET_CONTENT);
if (DEBUG) Log.d(mTag, "Created new state object: " + state);
return state;
}
+ private static boolean directLaunch(Intent intent) {
+ return LauncherActivity.isLaunchUri(intent.getData())
+ && intent.hasExtra(Shared.EXTRA_STACK);
+ }
+
public void setRootsDrawerOpen(boolean open) {
mNavigator.revealRootsDrawer(open);
}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentClipper.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentClipper.java
index 059b5e09cc90..72387de49682 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DocumentClipper.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentClipper.java
@@ -32,7 +32,9 @@ import com.android.documentsui.model.DocumentInfo;
import libcore.io.IoUtils;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
/**
@@ -125,22 +127,39 @@ public final class DocumentClipper {
*/
public @Nullable ClipData getClipDataForDocuments(List<DocumentInfo> docs) {
final ContentResolver resolver = mContext.getContentResolver();
+ final String[] mimeTypes = getMimeTypes(resolver, docs);
ClipData clipData = null;
for (DocumentInfo doc : docs) {
- final Uri uri = DocumentsContract.buildDocumentUri(doc.authority, doc.documentId);
if (clipData == null) {
// TODO: figure out what this string should be.
// Currently it is not displayed anywhere in the UI, but this might change.
final String label = "";
- clipData = ClipData.newUri(resolver, label, uri);
+ clipData = new ClipData(label, mimeTypes, new ClipData.Item(doc.derivedUri));
} else {
// TODO: update list of mime types in ClipData.
- clipData.addItem(new ClipData.Item(uri));
+ clipData.addItem(new ClipData.Item(doc.derivedUri));
}
}
return clipData;
}
+ private static String[] getMimeTypes(ContentResolver resolver, List<DocumentInfo> docs) {
+ final HashSet<String> mimeTypes = new HashSet<>();
+ for (DocumentInfo doc : docs) {
+ assert(doc != null);
+ assert(doc.derivedUri != null);
+ final Uri uri = doc.derivedUri;
+ if ("content".equals(uri.getScheme())) {
+ mimeTypes.add(resolver.getType(uri));
+ final String[] streamTypes = resolver.getStreamTypes(uri, "*/*");
+ if (streamTypes != null) {
+ mimeTypes.addAll(Arrays.asList(streamTypes));
+ }
+ }
+ }
+ return mimeTypes.toArray(new String[0]);
+ }
+
public void clipDocuments(List<DocumentInfo> docs) {
ClipData data = getClipDataForDocuments(docs);
mClipboard.setPrimaryClip(data);
diff --git a/packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java b/packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java
index 2f202e7b976b..859763b833f0 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java
@@ -17,6 +17,7 @@
package com.android.documentsui;
import android.annotation.Nullable;
+import android.provider.DocumentsContract.Document;
import com.android.documentsui.model.DocumentInfo;
import com.android.internal.util.Predicate;
@@ -99,4 +100,8 @@ public class MimePredicate implements Predicate<DocumentInfo> {
public static boolean isApkType(@Nullable String mimeType) {
return APK_TYPE.equals(mimeType);
}
+
+ public static boolean isDirectoryType(@Nullable String mimeType) {
+ return Document.MIME_TYPE_DIR.equals(mimeType);
+ }
}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
index 312acb593922..5e7a229fda9d 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
@@ -62,7 +62,6 @@ import android.support.v7.widget.RecyclerView.ViewHolder;
import android.text.TextUtils;
import android.util.Log;
import android.util.SparseArray;
-import android.util.TypedValue;
import android.view.ActionMode;
import android.view.DragEvent;
import android.view.GestureDetector;
@@ -89,6 +88,7 @@ import com.android.documentsui.Events.MotionInputEvent;
import com.android.documentsui.Menus;
import com.android.documentsui.MessageBar;
import com.android.documentsui.Metrics;
+import com.android.documentsui.MimePredicate;
import com.android.documentsui.R;
import com.android.documentsui.RecentsLoader;
import com.android.documentsui.RootsCache;
@@ -103,6 +103,7 @@ import com.android.documentsui.model.RootInfo;
import com.android.documentsui.services.FileOperationService;
import com.android.documentsui.services.FileOperationService.OpType;
import com.android.documentsui.services.FileOperations;
+
import com.google.common.collect.Lists;
import java.lang.annotation.Retention;
@@ -110,7 +111,6 @@ import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.Set;
@@ -170,6 +170,7 @@ public class DirectoryFragment extends Fragment
private RootInfo mRoot;
private DocumentInfo mDocument;
private String mQuery = null;
+ // Save selection found during creation so it can be restored during directory loading.
private Selection mSelection = null;
private boolean mSearchMode = false;
private @Nullable ActionMode mActionMode;
@@ -458,13 +459,17 @@ public class DirectoryFragment extends Fragment
* ActionMode when there is a selection, canceling it when there is no selection,
* and clearing selection when action mode is explicitly exited by the user.
*/
- private final class SelectionModeListener
- implements MultiSelectManager.Callback, ActionMode.Callback {
+ private final class SelectionModeListener implements MultiSelectManager.Callback,
+ ActionMode.Callback, FragmentTuner.SelectionDetails {
private Selection mSelected = new Selection();
- private int mNoCopyCount = 0;
+
+ // Partial files are files that haven't been fully downloaded.
+ private int mPartialCount = 0;
+ private int mDirectoryCount = 0;
private int mNoDeleteCount = 0;
- private int mNoRenameCount = -1;
+ private int mNoRenameCount = 0;
+
private Menu mMenu;
@Override
@@ -506,14 +511,19 @@ public class DirectoryFragment extends Fragment
// TODO: Should this be happening in onSelectionChanged? Technically this callback is
// triggered on "silent" selection updates (i.e. we might be reacting to unfinalized
// selection changes here)
+ final String mimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
+ if (MimePredicate.isDirectoryType(mimeType)) {
+ mDirectoryCount += selected ? 1 : -1;
+ }
+
final int docFlags = getCursorInt(cursor, Document.COLUMN_FLAGS);
if ((docFlags & Document.FLAG_PARTIAL) != 0) {
- mNoCopyCount += selected ? 1 : -1;
+ mPartialCount += selected ? 1 : -1;
}
if ((docFlags & Document.FLAG_SUPPORTS_DELETE) == 0) {
mNoDeleteCount += selected ? 1 : -1;
}
- if ((docFlags & Document.FLAG_SUPPORTS_RENAME) != 0) {
+ if ((docFlags & Document.FLAG_SUPPORTS_RENAME) == 0) {
mNoRenameCount += selected ? 1 : -1;
}
}
@@ -552,8 +562,11 @@ public class DirectoryFragment extends Fragment
// clear selection
mSelectionManager.clearSelection();
mSelected.clear();
+
+ mDirectoryCount = 0;
+ mPartialCount = 0;
mNoDeleteCount = 0;
- mNoRenameCount = -1;
+ mNoRenameCount = 0;
// Re-enable TalkBack for the toolbars, as they are no longer covered by action mode.
final Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
@@ -601,24 +614,29 @@ public class DirectoryFragment extends Fragment
return true;
}
- boolean canCopySelection() {
- return mNoCopyCount == 0;
+ @Override
+ public boolean containsDirectories() {
+ return mDirectoryCount > 0;
}
- boolean canDeleteSelection() {
+ @Override
+ public boolean containsPartialFiles() {
+ return mPartialCount > 0;
+ }
+
+ @Override
+ public boolean canDelete() {
return mNoDeleteCount == 0;
}
- boolean canRenameSelection() {
+ @Override
+ public boolean canRename() {
return mNoRenameCount == 0 && mSelectionManager.getSelection().size() == 1;
}
private void updateActionMenu() {
assert(mMenu != null);
-
- // Delegate update logic to our owning action, since specialized logic is desired.
- mTuner.updateActionMenu(
- mMenu, mType, canCopySelection(), canDeleteSelection(), canRenameSelection());
+ mTuner.updateActionMenu(mMenu, this);
Menus.disableHiddenItems(mMenu);
}
@@ -634,6 +652,8 @@ public class DirectoryFragment extends Fragment
case R.id.menu_share:
shareDocuments(selection);
+ // TODO: Only finish selection if share action is completed.
+ mode.finish();
return true;
case R.id.menu_delete:
@@ -644,6 +664,9 @@ public class DirectoryFragment extends Fragment
case R.id.menu_copy_to:
transferDocuments(selection, FileOperationService.OPERATION_COPY);
+ // TODO: Only finish selection mode if copy-to is not canceled.
+ // Need to plum down into handling the way we do with deleteDocuments.
+ mode.finish();
return true;
case R.id.menu_move_to:
@@ -676,7 +699,7 @@ public class DirectoryFragment extends Fragment
public final boolean onBackPressed() {
if (mSelectionManager.hasSelection()) {
- if (DEBUG) Log.d(TAG, "Clearing selection on back pressed.");
+ if (DEBUG) Log.d(TAG, "Clearing selection on selection manager.");
mSelectionManager.clearSelection();
return true;
}
@@ -1174,7 +1197,7 @@ public class DirectoryFragment extends Fragment
view.setOnDragListener(mOnDragListener);
}
- if (mTuner.allowDragNDrop()) {
+ if (mTuner.dragAndDropEnabled()) {
// Make all items draggable.
view.setOnLongClickListener(onLongClickListener);
}
@@ -1761,7 +1784,7 @@ public class DirectoryFragment extends Fragment
mRoot.authority, mRoot.rootId, mQuery)
: DocumentsContract.buildChildDocumentsUri(
mDocument.authority, mDocument.documentId);
- if (mTuner.enableManagedMode()) {
+ if (mTuner.managedModeEnabled()) {
contentsUri = DocumentsContract.setManageMode(contentsUri);
}
return new DirectoryLoader(
@@ -1795,6 +1818,7 @@ public class DirectoryFragment extends Fragment
if (mSelection != null) {
mSelectionManager.setItemsSelected(mSelection.toList(), true);
+ mSelection.clear();
}
// Restore any previous instance state
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java
index 9e2b86a8cea9..7b0510be644e 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java
@@ -58,9 +58,6 @@ public abstract class FragmentTuner {
}
}
- public abstract void updateActionMenu(
- Menu menu, @ResultType int dirType,
- boolean canCopy, boolean canDelete, boolean canRename);
// Subtly different from isDocumentEnabled. The reason may be illuminated as follows.
// A folder is enabled such that it may be double clicked, even in settings
@@ -73,18 +70,23 @@ public abstract class FragmentTuner {
return true;
}
- abstract void onModelLoaded(Model model, @ResultType int resultType, boolean isSearch);
-
/**
* When managed mode is enabled, active downloads will be visible in the UI.
* Presumably this should only be true when in the downloads directory.
*/
- abstract boolean enableManagedMode();
+ boolean managedModeEnabled() {
+ return false;
+ }
/**
* Whether drag n' drop is allowed in this context
*/
- abstract boolean allowDragNDrop();
+ boolean dragAndDropEnabled() {
+ return false;
+ }
+
+ abstract void updateActionMenu(Menu menu, SelectionDetails selection);
+ abstract void onModelLoaded(Model model, @ResultType int resultType, boolean isSearch);
/**
* Provides support for Platform specific specializations of DirectoryFragment.
@@ -105,7 +107,7 @@ public abstract class FragmentTuner {
return false;
}
- if (isDirectory(docMimeType)) {
+ if (MimePredicate.isDirectoryType(docMimeType)) {
return false;
}
@@ -121,9 +123,9 @@ public abstract class FragmentTuner {
}
@Override
- public boolean isDocumentEnabled(String docMimeType, int docFlags) {
+ public boolean isDocumentEnabled(String mimeType, int docFlags) {
// Directories are always enabled.
- if (isDirectory(docMimeType)) {
+ if (MimePredicate.isDirectoryType(mimeType)) {
return true;
}
@@ -141,13 +143,11 @@ public abstract class FragmentTuner {
}
}
- return MimePredicate.mimeMatches(mState.acceptMimes, docMimeType);
+ return MimePredicate.mimeMatches(mState.acceptMimes, mimeType);
}
@Override
- public void updateActionMenu(
- Menu menu, @ResultType int dirType,
- boolean canCopy, boolean canDelete, boolean canRename) {
+ public void updateActionMenu(Menu menu, SelectionDetails selection) {
MenuItem open = menu.findItem(R.id.menu_open);
MenuItem share = menu.findItem(R.id.menu_share);
@@ -155,8 +155,8 @@ public abstract class FragmentTuner {
MenuItem rename = menu.findItem(R.id.menu_rename);
MenuItem selectAll = menu.findItem(R.id.menu_select_all);
- open.setVisible(mState.action == ACTION_GET_CONTENT ||
- mState.action == ACTION_OPEN);
+ open.setVisible(mState.action == ACTION_GET_CONTENT
+ || mState.action == ACTION_OPEN);
share.setVisible(false);
delete.setVisible(false);
rename.setVisible(false);
@@ -191,16 +191,6 @@ public abstract class FragmentTuner {
}
mModelPreviousLoaded = true;
}
-
- @Override
- public boolean enableManagedMode() {
- return false;
- }
-
- @Override
- public boolean allowDragNDrop() {
- return false;
- }
}
/**
@@ -217,29 +207,39 @@ public abstract class FragmentTuner {
}
@Override
- public void updateActionMenu(
- Menu menu, @ResultType int dirType,
- boolean canCopy, boolean canDelete, boolean canRename) {
+ public void updateActionMenu(Menu menu, SelectionDetails selection) {
+
+ menu.findItem(R.id.menu_open).setVisible(false); // "open" is never used in Files.
+ // Commands accessible only via keyboard...
MenuItem copy = menu.findItem(R.id.menu_copy_to_clipboard);
MenuItem paste = menu.findItem(R.id.menu_paste_from_clipboard);
- copy.setEnabled(canCopy);
+ // Commands visible in the UI...
MenuItem rename = menu.findItem(R.id.menu_rename);
MenuItem moveTo = menu.findItem(R.id.menu_move_to);
MenuItem copyTo = menu.findItem(R.id.menu_copy_to);
+ MenuItem share = menu.findItem(R.id.menu_share);
+ MenuItem delete = menu.findItem(R.id.menu_delete);
+
+ // copy is not visible, keyboard only
+ copy.setEnabled(!selection.containsPartialFiles());
+ // Commands usually on action-bar, so we always manage visibility.
+ share.setVisible(!selection.containsDirectories() && !selection.containsPartialFiles());
+ delete.setVisible(selection.canDelete());
+
+ share.setEnabled(!selection.containsDirectories() && !selection.containsPartialFiles());
+ delete.setEnabled(selection.canDelete());
+
+ // Commands always in overflow, so we don't bother showing/hiding...
copyTo.setVisible(true);
moveTo.setVisible(true);
rename.setVisible(true);
- copyTo.setEnabled(canCopy);
- moveTo.setEnabled(canCopy && canDelete);
- rename.setEnabled(canRename);
-
- menu.findItem(R.id.menu_share).setVisible(true);
- menu.findItem(R.id.menu_delete).setVisible(canDelete);
- menu.findItem(R.id.menu_open).setVisible(false);
+ copyTo.setEnabled(!selection.containsPartialFiles());
+ moveTo.setEnabled(!selection.containsPartialFiles() && selection.canDelete());
+ rename.setEnabled(!selection.containsPartialFiles() && selection.canRename());
Menus.disableHiddenItems(menu, copy, paste);
}
@@ -256,7 +256,7 @@ public abstract class FragmentTuner {
}
@Override
- public boolean enableManagedMode() {
+ public boolean managedModeEnabled() {
// When in downloads top level directory, we also show active downloads.
// And while we don't allow folders in Downloads, we do allow Zip files in
// downloads that themselves can be opened and viewed like directories.
@@ -267,12 +267,21 @@ public abstract class FragmentTuner {
}
@Override
- public boolean allowDragNDrop() {
+ public boolean dragAndDropEnabled() {
return true;
}
}
- private static boolean isDirectory(String mimeType) {
- return Document.MIME_TYPE_DIR.equals(mimeType);
+ /**
+ * Access to meta data about the selection.
+ */
+ interface SelectionDetails {
+ boolean containsDirectories();
+ boolean containsPartialFiles();
+
+ // TODO: Update these to express characteristics instead of answering concrete questions,
+ // since the answer to those questions is (or can be) activity specific.
+ boolean canDelete();
+ boolean canRename();
}
}
diff --git a/packages/InputDevices/res/values-ky-rKG/strings.xml b/packages/InputDevices/res/values-ky-rKG/strings.xml
index aa7473320394..578f70bc4076 100644
--- a/packages/InputDevices/res/values-ky-rKG/strings.xml
+++ b/packages/InputDevices/res/values-ky-rKG/strings.xml
@@ -33,7 +33,7 @@
<string name="keyboard_layout_portuguese" msgid="2888198587329660305">"Португал"</string>
<string name="keyboard_layout_slovak" msgid="2469379934672837296">"Словак"</string>
<string name="keyboard_layout_slovenian" msgid="1735933028924982368">"Словен"</string>
- <string name="keyboard_layout_turkish" msgid="7736163250907964898">"Түрк"</string>
+ <string name="keyboard_layout_turkish" msgid="7736163250907964898">"түркчө"</string>
<string name="keyboard_layout_ukrainian" msgid="8176637744389480417">"Украин"</string>
<string name="keyboard_layout_arabic" msgid="5671970465174968712">"Арабча"</string>
<string name="keyboard_layout_greek" msgid="7289253560162386040">"Грекче"</string>
diff --git a/packages/InputDevices/res/values-ur-rPK/strings.xml b/packages/InputDevices/res/values-ur-rPK/strings.xml
index 3d2f618be1c5..2f2b84f1d8e3 100644
--- a/packages/InputDevices/res/values-ur-rPK/strings.xml
+++ b/packages/InputDevices/res/values-ur-rPK/strings.xml
@@ -28,7 +28,7 @@
<string name="keyboard_layout_czech" msgid="1349256901452975343">"چیک"</string>
<string name="keyboard_layout_estonian" msgid="8775830985185665274">"اسٹونیائی"</string>
<string name="keyboard_layout_hungarian" msgid="4154963661406035109">"ہنگریائی"</string>
- <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"آئس لینڈی"</string>
+ <string name="keyboard_layout_icelandic" msgid="5836645650912489642">"آئس لینڈک"</string>
<string name="keyboard_layout_brazilian" msgid="5117896443147781939">"برازیلی"</string>
<string name="keyboard_layout_portuguese" msgid="2888198587329660305">"پرتگالی"</string>
<string name="keyboard_layout_slovak" msgid="2469379934672837296">"سلوووک"</string>
diff --git a/packages/PrintRecommendationService/res/values/donottranslate.xml b/packages/PrintRecommendationService/res/values/donottranslate.xml
index 4cf0eaf4181b..68effbfbdf35 100644
--- a/packages/PrintRecommendationService/res/values/donottranslate.xml
+++ b/packages/PrintRecommendationService/res/values/donottranslate.xml
@@ -15,4 +15,25 @@
-->
<resources>
<string name="app_label">Print Service Recommendation Service</string>
+
+ <!-- HP / Mopria plugin -->
+ <string-array name="known_print_vendor_info_for_mopria" translatable="false">
+ <item>org.mopria.printplugin</item>
+ <item>WFDS</item>
+ <!-- no specific mDNS values to list -->
+ </string-array>
+
+ <string-array name="known_print_vendor_info_for_hp" translatable="false">
+ <item>com.hp.android.printservice</item>
+ <item>HP</item>
+ <!-- HP has used these values in mDNS records over the years -->
+ <item>HP</item>
+ <item>Hewlett-Packard</item>
+ <item>Hewlett Packard</item>
+ </string-array>
+
+ <array name="known_print_plugin_vendors" translatable="false">
+ <item>@array/known_print_vendor_info_for_mopria</item>
+ <item>@array/known_print_vendor_info_for_hp</item>
+ </array>
</resources>
diff --git a/packages/PrintRecommendationService/res/values/strings.xml b/packages/PrintRecommendationService/res/values/strings.xml
index 07d0004fa09b..2d127e2994d3 100644
--- a/packages/PrintRecommendationService/res/values/strings.xml
+++ b/packages/PrintRecommendationService/res/values/strings.xml
@@ -27,4 +27,5 @@
<string name="plugin_vendor_epson">Epson</string>
<string name="plugin_vendor_konika_minolta">Konika Minolta</string>
<string name="plugin_vendor_fuji">Fuji</string>
+ <string name="plugin_vendor_morpia">Mopria</string>
</resources>
diff --git a/packages/PrintRecommendationService/res/xml/vendorconfigs.xml b/packages/PrintRecommendationService/res/xml/vendorconfigs.xml
index 119943cd5f9f..98d466c038d3 100644
--- a/packages/PrintRecommendationService/res/xml/vendorconfigs.xml
+++ b/packages/PrintRecommendationService/res/xml/vendorconfigs.xml
@@ -18,16 +18,6 @@
<vendors>
<vendor>
- <name>@string/plugin_vendor_hp</name>
- <package>com.hp.android.printservice</package>
- <mdns-names>
- <mdns-name>HP</mdns-name>
- <mdns-name>Hewlett-Packard</mdns-name>
- <mdns-name>Hewlett Packard</mdns-name>
- </mdns-names>
- </vendor>
-
- <vendor>
<name>@string/plugin_vendor_lexmark</name>
<package>com.lexmark.print.plugin</package>
<mdns-names>
diff --git a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/RecommendationServiceImpl.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/RecommendationServiceImpl.java
index 9f6dad8f2e2a..4b4b47084b82 100644
--- a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/RecommendationServiceImpl.java
+++ b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/RecommendationServiceImpl.java
@@ -21,8 +21,10 @@ import android.printservice.recommendation.RecommendationInfo;
import android.printservice.recommendation.RecommendationService;
import android.printservice.PrintService;
import android.util.Log;
+import com.android.printservice.recommendation.plugin.hp.HPRecommendationPlugin;
import com.android.printservice.recommendation.plugin.mdnsFilter.MDNSFilterPlugin;
import com.android.printservice.recommendation.plugin.mdnsFilter.VendorConfig;
+import com.android.printservice.recommendation.plugin.mopria.MopriaRecommendationPlugin;
import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
@@ -56,6 +58,22 @@ public class RecommendationServiceImpl extends RecommendationService
new RuntimeException("Could not parse vendorconfig", e);
}
+ try {
+ mPlugins.add(new RemotePrintServicePlugin(new HPRecommendationPlugin(this), this,
+ false));
+ } catch (Exception e) {
+ Log.e(LOG_TAG, "Could not initiate " + getString(R.string.plugin_vendor_hp) + " plugin",
+ e);
+ }
+
+ try {
+ mPlugins.add(new RemotePrintServicePlugin(new MopriaRecommendationPlugin(this), this,
+ true));
+ } catch (Exception e) {
+ Log.e(LOG_TAG, "Could not initiate " + getString(R.string.plugin_vendor_morpia) +
+ " plugin", e);
+ }
+
final int numPlugins = mPlugins.size();
for (int i = 0; i < numPlugins; i++) {
try {
diff --git a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/HPRecommendationPlugin.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/HPRecommendationPlugin.java
new file mode 100644
index 000000000000..54d257263172
--- /dev/null
+++ b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/HPRecommendationPlugin.java
@@ -0,0 +1,100 @@
+/*
+(c) Copyright 2016 HP Inc.
+Copyright (C) 2016 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+package com.android.printservice.recommendation.plugin.hp;
+
+import android.content.Context;
+import android.net.nsd.NsdServiceInfo;
+import android.text.TextUtils;
+
+import com.android.printservice.recommendation.R;
+
+import java.util.Locale;
+
+public class HPRecommendationPlugin extends ServiceRecommendationPlugin {
+
+ private static final String PDL__PCL = "application/vnd.hp-PCL";
+ private static final String PDL__PCLM = "application/PCLm";
+ private static final String PDL__PDF = "application/pdf";
+ private static final String PDL__PWG_RASTER = "image/pwg-raster";
+
+ private static final String TAG_DESIGNJET = "DESIGNJET";
+ private static final String TAG_PAGEWIDE = "PAGEWIDE";
+ private static final String TAG_LATEX = "LATEX";
+ private static final String TAG_SCITEX = "SCITEX";
+ private static final String TAG_XL = "XL";
+ private static final String ATTRIBUTE_VALUE__TRUE = "T";
+ private static final String MDNS_ATTRIBUTE__HPLFMOBILEPRINTER = "hplfpmobileprinter";
+ private static final String MDNS_ATTRIBUTE__TY = "ty";
+
+
+ private static String[] mSupportedDesignJet = new String[]{
+ "HP DESIGNJET T120",
+ "HP DESIGNJET T520",
+ "HP DESIGNJET T930",
+ "HP DESIGNJET T1530",
+ "HP DESIGNJET T2530",
+ "HP DESIGNJET T730",
+ "HP DESIGNJET T830",
+ };
+
+ private boolean isPrintSupported(String printerModel) {
+ boolean isSupported;
+ if (!TextUtils.isEmpty(printerModel)) {
+ String modelToUpper = printerModel.toUpperCase(Locale.US);
+ if (modelToUpper.contains(TAG_DESIGNJET)) {
+ isSupported = isSupportedDesignjet(printerModel);
+ } else
+ isSupported = !(modelToUpper.contains(TAG_LATEX) || modelToUpper.contains(TAG_SCITEX)) && !(modelToUpper.contains(TAG_PAGEWIDE) && modelToUpper.contains(TAG_XL));
+ } else {
+ isSupported = false;
+ }
+
+ return isSupported;
+ }
+
+ private static boolean isSupportedDesignjet(String printerModel) {
+ boolean isSupported = false;
+ if (!TextUtils.isEmpty(printerModel)) {
+ String modelToUpper = printerModel.toUpperCase(Locale.US);
+ for (String supportedPrinter : mSupportedDesignJet) {
+ if (modelToUpper.contains(supportedPrinter)) {
+ isSupported = true;
+ }
+ }
+ }
+ return isSupported;
+ }
+
+ public HPRecommendationPlugin(Context context) {
+ super(context, R.string.plugin_vendor_hp, new VendorInfo(context.getResources(), R.array.known_print_vendor_info_for_hp), new String[]{"_pdl-datastream._tcp","_ipp._tcp", "_ipps._tcp"});
+ }
+
+ @Override
+ public boolean matchesCriteria(String vendor, NsdServiceInfo nsdServiceInfo) {
+ if (!TextUtils.equals(vendor, mVendorInfo.mVendorID)) return false;
+
+ String pdls = MDnsUtils.getString(nsdServiceInfo.getAttributes().get(PDL_ATTRIBUTE));
+ boolean hasMobileSupport = TextUtils.equals(ATTRIBUTE_VALUE__TRUE, MDnsUtils.getString(nsdServiceInfo.getAttributes().get(MDNS_ATTRIBUTE__HPLFMOBILEPRINTER)));
+
+ return (((hasMobileSupport || isPrintSupported(MDnsUtils.getString(nsdServiceInfo.getAttributes().get(MDNS_ATTRIBUTE__TY))))
+ &&!TextUtils.isEmpty(pdls))
+ && (pdls.contains(PDL__PCL)
+ || pdls.contains(PDL__PDF)
+ || pdls.contains(PDL__PCLM)
+ || pdls.contains(PDL__PWG_RASTER)));
+ }
+}
diff --git a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/MDnsUtils.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/MDnsUtils.java
new file mode 100644
index 000000000000..8c97064beac8
--- /dev/null
+++ b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/MDnsUtils.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.printservice.recommendation.plugin.hp;
+
+import android.net.nsd.NsdServiceInfo;
+import android.text.TextUtils;
+
+import java.nio.charset.StandardCharsets;
+import java.util.Locale;
+import java.util.Map;
+
+public class MDnsUtils {
+ public static final String ATTRIBUTE__TY = "ty";
+ public static final String ATTRIBUTE__PRODUCT = "product";
+ public static final String ATTRIBUTE__USB_MFG = "usb_MFG";
+ public static final String ATTRIBUTE__MFG = "mfg";
+
+ public static String getString(byte[] value) {
+ if (value != null) return new String(value,StandardCharsets.UTF_8);
+ return null;
+ }
+
+ public static boolean isVendorPrinter(NsdServiceInfo networkDevice, String[] vendorValues) {
+
+ Map<String,byte[]> attributes = networkDevice.getAttributes();
+ String product = getString(attributes.get(ATTRIBUTE__PRODUCT));
+ String ty = getString(attributes.get(ATTRIBUTE__TY));
+ String usbMfg = getString(attributes.get(ATTRIBUTE__USB_MFG));
+ String mfg = getString(attributes.get(ATTRIBUTE__MFG));
+ return containsVendor(product, vendorValues) || containsVendor(ty, vendorValues) || containsVendor(usbMfg, vendorValues) || containsVendor(mfg, vendorValues);
+
+ }
+
+ public static String getVendor(NsdServiceInfo networkDevice) {
+ String vendor;
+
+ Map<String,byte[]> attributes = networkDevice.getAttributes();
+ vendor = getString(attributes.get(ATTRIBUTE__MFG));
+ if (!TextUtils.isEmpty(vendor)) return vendor;
+ vendor = getString(attributes.get(ATTRIBUTE__USB_MFG));
+ if (!TextUtils.isEmpty(vendor)) return vendor;
+
+ return null;
+ }
+
+ private static boolean containsVendor(String container, String[] vendorValues) {
+ if ((container == null) || (vendorValues == null)) return false;
+ for (String value : vendorValues) {
+ if (containsString(container, value)
+ || containsString(container.toLowerCase(Locale.US), value.toLowerCase(Locale.US))
+ || containsString(container.toUpperCase(Locale.US), value.toUpperCase(Locale.US)))
+ return true;
+ }
+ return false;
+ }
+
+ private static boolean containsString(String container, String contained) {
+ return (container != null) && (contained != null) && (container.equalsIgnoreCase(contained) || container.contains(contained + " "));
+ }
+}
diff --git a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/PrinterHashMap.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/PrinterHashMap.java
new file mode 100644
index 000000000000..61956f694245
--- /dev/null
+++ b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/PrinterHashMap.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.printservice.recommendation.plugin.hp;
+
+import android.net.nsd.NsdServiceInfo;
+
+import java.util.HashMap;
+
+final class PrinterHashMap extends HashMap<String, NsdServiceInfo> {
+ public static String getKey(NsdServiceInfo serviceInfo) {
+ return serviceInfo.getServiceName();
+ }
+ public NsdServiceInfo addPrinter(NsdServiceInfo device) {
+ return put(getKey(device), device);
+ }
+ public NsdServiceInfo removePrinter(NsdServiceInfo device) {
+ return remove(getKey(device));
+ }
+}
diff --git a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/ServiceListener.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/ServiceListener.java
new file mode 100644
index 000000000000..e34247a66fb6
--- /dev/null
+++ b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/ServiceListener.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.printservice.recommendation.plugin.hp;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.net.nsd.NsdManager;
+import android.net.nsd.NsdServiceInfo;
+import android.text.TextUtils;
+import android.util.Pair;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import com.android.printservice.recommendation.R;
+import com.android.printservice.recommendation.util.DiscoveryListenerMultiplexer;
+
+public class ServiceListener implements ServiceResolveQueue.ResolveCallback {
+
+ private final NsdManager mNSDManager;
+ private final Map<String, VendorInfo> mVendorInfoHashMap;
+ private final String[] mServiceType;
+ private final Observer mObserver;
+ private final ServiceResolveQueue mResolveQueue;
+ private List<NsdManager.DiscoveryListener> mListeners = new ArrayList<>();
+ public HashMap<String, PrinterHashMap> mVendorHashMap = new HashMap<>();
+
+ public interface Observer {
+ boolean matchesCriteria(String vendor, NsdServiceInfo serviceInfo);
+ void dataSetChanged();
+ }
+
+ public ServiceListener(Context context, Observer observer, String[] serviceTypes) {
+ mObserver = observer;
+ mServiceType = serviceTypes;
+ mNSDManager = (NsdManager)context.getSystemService(Context.NSD_SERVICE);
+ mResolveQueue = ServiceResolveQueue.getInstance(mNSDManager);
+
+ Map<String, VendorInfo> vendorInfoMap = new HashMap<>();
+ TypedArray testArray = context.getResources().obtainTypedArray(R.array.known_print_plugin_vendors);
+ for(int i = 0; i < testArray.length(); i++) {
+ int arrayID = testArray.getResourceId(i, 0);
+ if (arrayID != 0) {
+ VendorInfo info = new VendorInfo(context.getResources(), arrayID);
+ vendorInfoMap.put(info.mVendorID, info);
+ vendorInfoMap.put(info.mPackageName, info);
+ }
+ }
+ testArray.recycle();
+ mVendorInfoHashMap = vendorInfoMap;
+ }
+
+ @Override
+ public void serviceResolved(NsdServiceInfo nsdServiceInfo) {
+ printerFound(nsdServiceInfo);
+ }
+
+ private synchronized void printerFound(NsdServiceInfo nsdServiceInfo) {
+ if (nsdServiceInfo == null) return;
+ if (TextUtils.isEmpty(PrinterHashMap.getKey(nsdServiceInfo))) return;
+ String vendor = MDnsUtils.getVendor(nsdServiceInfo);
+ if (vendor == null) vendor = "";
+ for(Map.Entry<String,VendorInfo> entry : mVendorInfoHashMap.entrySet()) {
+ for(String vendorValues : entry.getValue().mDNSValues) {
+ if (vendor.equalsIgnoreCase(vendorValues)) {
+ vendor = entry.getValue().mVendorID;
+ break;
+ }
+ }
+ // intentional pointer check
+ //noinspection StringEquality
+ if ((vendor != entry.getValue().mVendorID) &&
+ MDnsUtils.isVendorPrinter(nsdServiceInfo, entry.getValue().mDNSValues)) {
+ vendor = entry.getValue().mVendorID;
+ }
+ // intentional pointer check
+ //noinspection StringEquality
+ if (vendor == entry.getValue().mVendorID) break;
+ }
+
+ if (TextUtils.isEmpty(vendor)) {
+ return;
+ }
+
+ if (!mObserver.matchesCriteria(vendor, nsdServiceInfo))
+ return;
+ boolean mapsChanged;
+
+ PrinterHashMap vendorHash = mVendorHashMap.get(vendor);
+ if (vendorHash == null) {
+ vendorHash = new PrinterHashMap();
+ }
+ mapsChanged = (vendorHash.addPrinter(nsdServiceInfo) == null);
+ mVendorHashMap.put(vendor, vendorHash);
+
+ if (mapsChanged) {
+ mObserver.dataSetChanged();
+ }
+ }
+
+ private synchronized void printerRemoved(NsdServiceInfo nsdServiceInfo) {
+ boolean wasRemoved = false;
+ Set<String> vendors = mVendorHashMap.keySet();
+ for(String vendor : vendors) {
+ PrinterHashMap map = mVendorHashMap.get(vendor);
+ wasRemoved |= (map.removePrinter(nsdServiceInfo) != null);
+ if (map.isEmpty()) wasRemoved |= (mVendorHashMap.remove(vendor) != null);
+ }
+ if (wasRemoved) {
+ mObserver.dataSetChanged();
+ }
+ }
+
+ public void start() {
+ stop();
+ for(final String service :mServiceType) {
+ NsdManager.DiscoveryListener listener = new NsdManager.DiscoveryListener() {
+ @Override
+ public void onStartDiscoveryFailed(String s, int i) {
+
+ }
+
+ @Override
+ public void onStopDiscoveryFailed(String s, int i) {
+
+ }
+
+ @Override
+ public void onDiscoveryStarted(String s) {
+
+ }
+
+ @Override
+ public void onDiscoveryStopped(String s) {
+
+ }
+
+ @Override
+ public void onServiceFound(NsdServiceInfo nsdServiceInfo) {
+ mResolveQueue.queueRequest(nsdServiceInfo, ServiceListener.this);
+ }
+
+ @Override
+ public void onServiceLost(NsdServiceInfo nsdServiceInfo) {
+ mResolveQueue.removeRequest(nsdServiceInfo, ServiceListener.this);
+ printerRemoved(nsdServiceInfo);
+ }
+ };
+ DiscoveryListenerMultiplexer.addListener(mNSDManager, service, listener);
+ mListeners.add(listener);
+ }
+ }
+
+ public void stop() {
+ for(NsdManager.DiscoveryListener listener : mListeners) {
+ DiscoveryListenerMultiplexer.removeListener(mNSDManager, listener);
+ }
+ mVendorHashMap.clear();
+ mListeners.clear();
+ }
+
+ public Pair<Integer, Integer> getCount() {
+ int count = 0;
+ for (PrinterHashMap map : mVendorHashMap.values()) {
+ count += map.size();
+ }
+ return Pair.create(mVendorHashMap.size(), count);
+ }
+}
diff --git a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/ServiceRecommendationPlugin.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/ServiceRecommendationPlugin.java
new file mode 100644
index 000000000000..7ea530dda9d8
--- /dev/null
+++ b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/ServiceRecommendationPlugin.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.printservice.recommendation.plugin.hp;
+
+import android.content.Context;
+import android.net.nsd.NsdManager;
+import android.net.nsd.NsdServiceInfo;
+import android.annotation.NonNull;
+import android.text.TextUtils;
+import com.android.printservice.recommendation.PrintServicePlugin;
+
+public abstract class ServiceRecommendationPlugin implements PrintServicePlugin, ServiceListener.Observer {
+
+ protected static final String PDL_ATTRIBUTE = "pdl";
+
+ protected final Object mLock = new Object();
+ protected PrinterDiscoveryCallback mCallback = null;
+ protected final ServiceListener mListener;
+ protected final NsdManager mNSDManager;
+ protected final VendorInfo mVendorInfo;
+ private final int mVendorStringID;
+
+ protected ServiceRecommendationPlugin(Context context, int vendorStringID, VendorInfo vendorInfo, String[] services) {
+ mNSDManager = (NsdManager)context.getSystemService(Context.NSD_SERVICE);
+ mVendorStringID = vendorStringID;
+ mVendorInfo = vendorInfo;
+ mListener = new ServiceListener(context, this, services);
+ }
+
+ @Override
+ public int getName() {
+ return mVendorStringID;
+ }
+
+ @NonNull
+ @Override
+ public CharSequence getPackageName() {
+ return mVendorInfo.mPackageName;
+ }
+
+ @Override
+ public void start(@NonNull PrinterDiscoveryCallback callback) throws Exception {
+ synchronized (mLock) {
+ mCallback = callback;
+ }
+ mListener.start();
+ }
+
+ @Override
+ public void stop() throws Exception {
+ synchronized (mLock) {
+ mCallback = null;
+ }
+ mListener.stop();
+ }
+
+ @Override
+ public void dataSetChanged() {
+ synchronized (mLock) {
+ if (mCallback != null) mCallback.onChanged(getCount());
+ }
+ }
+
+ @Override
+ public boolean matchesCriteria(String vendor, NsdServiceInfo nsdServiceInfo) {
+ return TextUtils.equals(vendor, mVendorInfo.mVendorID);
+ }
+
+ public int getCount() {
+ return mListener.getCount().second;
+ }
+}
diff --git a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/ServiceResolveQueue.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/ServiceResolveQueue.java
new file mode 100644
index 000000000000..fc9e7adf1f64
--- /dev/null
+++ b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/ServiceResolveQueue.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.printservice.recommendation.plugin.hp;
+
+import android.net.nsd.NsdManager;
+import android.net.nsd.NsdServiceInfo;
+import android.util.Pair;
+import com.android.printservice.recommendation.util.NsdResolveQueue;
+
+import java.util.LinkedList;
+
+final class ServiceResolveQueue {
+
+ private final NsdManager mNsdManager;
+ private final LinkedList<Pair<NsdServiceInfo, ResolveCallback>> mQueue = new LinkedList<>();
+ private final Object mLock = new Object();
+
+ private static Object sLock = new Object();
+ private static ServiceResolveQueue sInstance = null;
+ private final NsdResolveQueue mNsdResolveQueue;
+ private Pair<NsdServiceInfo, ResolveCallback> mCurrentRequest = null;
+
+ public static void createInstance(NsdManager nsdManager) {
+ if (sInstance == null) sInstance = new ServiceResolveQueue(nsdManager);
+ }
+
+ public static ServiceResolveQueue getInstance(NsdManager nsdManager) {
+ synchronized (sLock) {
+ createInstance(nsdManager);
+ return sInstance;
+ }
+ }
+
+ public static void destroyInstance() {
+ sInstance = null;
+ }
+
+ public interface ResolveCallback {
+ void serviceResolved(NsdServiceInfo nsdServiceInfo);
+ }
+
+ public ServiceResolveQueue(NsdManager nsdManager) {
+ mNsdManager = nsdManager;
+ mNsdResolveQueue = NsdResolveQueue.getInstance();
+ }
+
+ public void queueRequest(NsdServiceInfo serviceInfo, ResolveCallback callback) {
+ synchronized (mLock) {
+ Pair<NsdServiceInfo, ResolveCallback> newRequest = Pair.create(serviceInfo, callback);
+ if (mQueue.contains(newRequest)) return;
+ mQueue.add(newRequest);
+ makeNextRequest();
+ }
+ }
+
+ public void removeRequest(NsdServiceInfo serviceInfo, ResolveCallback callback) {
+ synchronized (mLock) {
+ Pair<NsdServiceInfo, ResolveCallback> newRequest = Pair.create(serviceInfo, callback);
+ mQueue.remove(newRequest);
+ if ((mCurrentRequest != null) && newRequest.equals(mCurrentRequest)) mCurrentRequest = null;
+ }
+ }
+
+ private void makeNextRequest() {
+ synchronized (mLock) {
+ if (mCurrentRequest != null) return;
+ if (mQueue.isEmpty()) return;
+ mCurrentRequest = mQueue.removeFirst();
+ mNsdResolveQueue.resolve(mNsdManager, mCurrentRequest.first,
+ new NsdManager.ResolveListener() {
+ @Override
+ public void onResolveFailed(NsdServiceInfo nsdServiceInfo, int i) {
+ synchronized (mLock) {
+ if (mCurrentRequest != null) mQueue.add(mCurrentRequest);
+ makeNextRequest();
+ }
+ }
+
+ @Override
+ public void onServiceResolved(NsdServiceInfo nsdServiceInfo) {
+ synchronized (mLock) {
+ if (mCurrentRequest != null) {
+ mCurrentRequest.second.serviceResolved(nsdServiceInfo);
+ mCurrentRequest = null;
+ }
+ makeNextRequest();
+ }
+ }
+ });
+
+ }
+ }
+
+
+}
diff --git a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/VendorInfo.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/VendorInfo.java
new file mode 100644
index 000000000000..0ff59a2d6dc4
--- /dev/null
+++ b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/hp/VendorInfo.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.printservice.recommendation.plugin.hp;
+
+import android.content.res.Resources;
+
+import java.util.Arrays;
+
+public final class VendorInfo {
+
+ public final String mPackageName;
+ public final String mVendorID;
+ public final String[] mDNSValues;
+ public final int mID;
+
+ public VendorInfo(Resources resources, int vendor_info_id) {
+ mID = vendor_info_id;
+ String[] data = resources.getStringArray(vendor_info_id);
+ if ((data == null) || (data.length < 2)) {
+ data = new String[] { null, null };
+ }
+ mPackageName = data[0];
+ mVendorID = data[1];
+ mDNSValues = (data.length > 2) ? Arrays.copyOfRange(data, 2, data.length) : new String[]{};
+ }
+}
diff --git a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/MDNSFilterPlugin.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/MDNSFilterPlugin.java
index 26300b1e37b9..a2c0485f3d0a 100644
--- a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/MDNSFilterPlugin.java
+++ b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/MDNSFilterPlugin.java
@@ -26,7 +26,7 @@ import android.util.Log;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.Preconditions;
import com.android.printservice.recommendation.PrintServicePlugin;
-import com.android.printservice.recommendation.util.MDNSUtils;
+import com.android.printservice.recommendation.util.DiscoveryListenerMultiplexer;
import com.android.printservice.recommendation.util.NsdResolveQueue;
import java.util.HashSet;
@@ -81,7 +81,7 @@ public class MDNSFilterPlugin implements PrintServicePlugin, NsdManager.Discover
@NonNull CharSequence packageName, @NonNull List<String> mDNSNames) {
mContext = Preconditions.checkNotNull(context, "context");
mName = mContext.getResources().getIdentifier(Preconditions.checkStringNotEmpty(name,
- "name"), null, mContext.getPackageName());
+ "name"), null, "com.android.printservice.recommendation");
mPackageName = Preconditions.checkStringNotEmpty(packageName);
mMDNSNames = new HashSet<>(Preconditions
.checkCollectionNotEmpty(Preconditions.checkCollectionElementsNotNull(mDNSNames,
@@ -107,8 +107,7 @@ public class MDNSFilterPlugin implements PrintServicePlugin, NsdManager.Discover
public void start(@NonNull PrinterDiscoveryCallback callback) throws Exception {
mCallback = callback;
- getNDSManager().discoverServices(PRINTER_SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD,
- this);
+ DiscoveryListenerMultiplexer.addListener(getNDSManager(), PRINTER_SERVICE_TYPE, this);
}
@Override
@@ -121,7 +120,7 @@ public class MDNSFilterPlugin implements PrintServicePlugin, NsdManager.Discover
mCallback.onChanged(0);
mCallback = null;
- getNDSManager().stopServiceDiscovery(this);
+ DiscoveryListenerMultiplexer.removeListener(getNDSManager(), this);
}
@Override
diff --git a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/MDNSUtils.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/MDNSUtils.java
index 0541c3565dba..4c27a47e144f 100644
--- a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/MDNSUtils.java
+++ b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/MDNSUtils.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.android.printservice.recommendation.util;
+package com.android.printservice.recommendation.plugin.mdnsFilter;
import android.annotation.NonNull;
import android.net.nsd.NsdServiceInfo;
@@ -27,7 +27,7 @@ import java.util.Set;
/**
* Utils for dealing with mDNS attributes
*/
-public class MDNSUtils {
+class MDNSUtils {
public static final String ATTRIBUTE_TY = "ty";
public static final String ATTRIBUTE_PRODUCT = "product";
public static final String ATTRIBUTE_USB_MFG = "usb_mfg";
diff --git a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mopria/MopriaRecommendationPlugin.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mopria/MopriaRecommendationPlugin.java
new file mode 100644
index 000000000000..18c9da51865a
--- /dev/null
+++ b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mopria/MopriaRecommendationPlugin.java
@@ -0,0 +1,54 @@
+/*
+ * (c) Copyright 2016 Mopria Alliance, Inc.
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.printservice.recommendation.plugin.mopria;
+
+import android.content.Context;
+import android.net.nsd.NsdServiceInfo;
+import android.text.TextUtils;
+import android.util.Pair;
+
+import com.android.printservice.recommendation.plugin.hp.MDnsUtils;
+import com.android.printservice.recommendation.plugin.hp.ServiceRecommendationPlugin;
+import com.android.printservice.recommendation.plugin.hp.VendorInfo;
+import com.android.printservice.recommendation.R;
+
+public class MopriaRecommendationPlugin extends ServiceRecommendationPlugin {
+
+ private static final String PDL__PDF = "application/pdf";
+ private static final String PDL__PCLM = "application/PCLm";
+ private static final String PDL__PWG_RASTER = "image/pwg-raster";
+
+ public MopriaRecommendationPlugin(Context context) {
+ super(context, R.string.plugin_vendor_morpia, new VendorInfo(context.getResources(), R.array.known_print_vendor_info_for_mopria), new String[]{"_ipp._tcp", "_ipps._tcp"});
+ }
+
+ @Override
+ public boolean matchesCriteria(String vendor, NsdServiceInfo nsdServiceInfo) {
+ String pdls = MDnsUtils.getString(nsdServiceInfo.getAttributes().get(PDL_ATTRIBUTE));
+ return (!TextUtils.isEmpty(pdls)
+ && (pdls.contains(PDL__PDF)
+ || pdls.contains(PDL__PCLM)
+ || pdls.contains(PDL__PWG_RASTER)));
+ }
+
+ @Override
+ public int getCount() {
+ Pair<Integer, Integer> count = mListener.getCount();
+ return ((count.first > 1) ? count.second : 0);
+ }
+}
diff --git a/packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/DiscoveryListenerMultiplexer.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/DiscoveryListenerMultiplexer.java
new file mode 100644
index 000000000000..d82b87176299
--- /dev/null
+++ b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/DiscoveryListenerMultiplexer.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.printservice.recommendation.util;
+
+import android.annotation.NonNull;
+import android.net.nsd.NsdManager;
+import android.net.nsd.NsdServiceInfo;
+import android.util.ArrayMap;
+import android.util.Log;
+
+import java.util.ArrayList;
+
+/**
+ * Used to multiplex listening for NSD services. This is needed as only a limited amount of
+ * {@link NsdManager.DiscoveryListener listeners} are allowed.
+ */
+public class DiscoveryListenerMultiplexer {
+ private static final String LOG_TAG = "DiscoveryListenerMx";
+
+ /** List of registered {@link DiscoveryListenerSet discovery sets}. */
+ private static final @NonNull ArrayMap<String, DiscoveryListenerSet> sListeners =
+ new ArrayMap<>();
+
+ /**
+ * Add a new {@link NsdManager.DiscoveryListener listener} for a {@code serviceType}.
+ *
+ * @param nsdManager The {@link NsdManager NSD manager} to use
+ * @param serviceType The service type to listen for
+ * @param newListener the {@link NsdManager.DiscoveryListener listener} to add.
+ */
+ public static void addListener(@NonNull NsdManager nsdManager, @NonNull String serviceType,
+ @NonNull NsdManager.DiscoveryListener newListener) {
+ synchronized (sListeners) {
+ DiscoveryListenerSet listenerSet = sListeners.get(serviceType);
+
+ if (listenerSet == null) {
+ ArrayList<NsdManager.DiscoveryListener> subListeners = new ArrayList<>(1);
+ listenerSet = new DiscoveryListenerSet(subListeners,
+ new MultiListener(subListeners));
+
+ sListeners.put(serviceType, listenerSet);
+ }
+
+ synchronized (listenerSet.subListeners) {
+ if (listenerSet.subListeners.isEmpty()) {
+ nsdManager.discoverServices(serviceType, NsdManager.PROTOCOL_DNS_SD,
+ listenerSet.mainListener);
+ }
+
+ listenerSet.subListeners.add(newListener);
+ }
+ }
+ }
+
+ /**
+ * Remove a previously added {@link NsdManager.DiscoveryListener listener}.
+ *
+ * @param nsdManager The {@link NsdManager NSD manager} to use
+ * @param listener The {@link NsdManager.DiscoveryListener listener} that was registered
+ *
+ * @return true iff the listener was removed
+ */
+ public static boolean removeListener(@NonNull NsdManager nsdManager,
+ @NonNull NsdManager.DiscoveryListener listener) {
+ boolean wasRemoved = false;
+
+ synchronized (sListeners) {
+ for (DiscoveryListenerSet listeners : sListeners.values()) {
+ synchronized (listeners) {
+ wasRemoved = listeners.subListeners.remove(listener);
+
+ if (wasRemoved) {
+ if (listeners.subListeners.isEmpty()) {
+ nsdManager.stopServiceDiscovery(listeners.mainListener);
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ return wasRemoved;
+ }
+
+ /** Private class holding all data for a service type */
+ private static class DiscoveryListenerSet {
+ /** The plugin's listeners */
+ final @NonNull ArrayList<NsdManager.DiscoveryListener> subListeners;
+
+ /** The listener registered with the NSD Manager */
+ final @NonNull MultiListener mainListener;
+
+ private DiscoveryListenerSet(ArrayList<NsdManager.DiscoveryListener> subListeners,
+ MultiListener mainListener) {
+ this.subListeners = subListeners;
+ this.mainListener = mainListener;
+ }
+ }
+
+ /**
+ * A {@link NsdManager.DiscoveryListener} that calls a list of registered listeners when
+ * a service is found or lost.
+ */
+ private static class MultiListener implements NsdManager.DiscoveryListener {
+ private final @NonNull ArrayList<NsdManager.DiscoveryListener> mListeners;
+
+ /**
+ * Create a new multi listener.
+ *
+ * @param listeners The listeners to forward the calls.
+ */
+ public MultiListener(@NonNull ArrayList<NsdManager.DiscoveryListener> listeners) {
+ mListeners = listeners;
+ }
+
+ @Override
+ public void onStartDiscoveryFailed(String serviceType, int errorCode) {
+ Log.w(LOG_TAG, "Failed to start network discovery for type " + serviceType + ": "
+ + errorCode);
+ }
+
+ @Override
+ public void onStopDiscoveryFailed(String serviceType, int errorCode) {
+ Log.w(LOG_TAG, "Failed to stop network discovery for type " + serviceType + ": "
+ + errorCode);
+ }
+
+ @Override
+ public void onDiscoveryStarted(String serviceType) {
+ // not implemented
+ }
+
+ @Override
+ public void onDiscoveryStopped(String serviceType) {
+ // not implemented
+ }
+
+ @Override
+ public void onServiceFound(NsdServiceInfo serviceInfo) {
+ synchronized (mListeners) {
+ int numListeners = mListeners.size();
+ for (int i = 0; i < numListeners; i++) {
+ NsdManager.DiscoveryListener listener = mListeners.get(i);
+
+ listener.onServiceFound(serviceInfo);
+ }
+ }
+ }
+
+ @Override
+ public void onServiceLost(NsdServiceInfo serviceInfo) {
+ synchronized (mListeners) {
+ int numListeners = mListeners.size();
+ for (int i = 0; i < numListeners; i++) {
+ NsdManager.DiscoveryListener listener = mListeners.get(i);
+
+ listener.onServiceLost(serviceInfo);
+ }
+ }
+ }
+ }
+}
diff --git a/packages/SettingsLib/res/values-ar/arrays.xml b/packages/SettingsLib/res/values-ar/arrays.xml
index 60eebeb25564..9d2a14a86fe4 100644
--- a/packages/SettingsLib/res/values-ar/arrays.xml
+++ b/packages/SettingsLib/res/values-ar/arrays.xml
@@ -60,25 +60,25 @@
</string-array>
<string-array name="select_logd_size_titles">
<item msgid="8665206199209698501">"إيقاف"</item>
- <item msgid="1593289376502312923">"64 كيلوبايت"</item>
- <item msgid="487545340236145324">"256 كيلوبايت"</item>
+ <item msgid="1593289376502312923">"٦٤ كيلوبايت"</item>
+ <item msgid="487545340236145324">"٢٥٦ كيلوبايت"</item>
<item msgid="2423528675294333831">"1 ميغابايت"</item>
- <item msgid="180883774509476541">"4 ميغابايت"</item>
- <item msgid="2803199102589126938">"16 ميغابايت"</item>
+ <item msgid="180883774509476541">"٤ ميغابايت"</item>
+ <item msgid="2803199102589126938">"١٦ ميغابايت"</item>
</string-array>
<string-array name="select_logd_size_lowram_titles">
<item msgid="6089470720451068364">"إيقاف"</item>
- <item msgid="4622460333038586791">"64 كيلوبايت"</item>
- <item msgid="2212125625169582330">"256 كيلوبايت"</item>
+ <item msgid="4622460333038586791">"٦٤ كيلوبايت"</item>
+ <item msgid="2212125625169582330">"٢٥٦ كيلوبايت"</item>
<item msgid="1704946766699242653">"1 ميغابايت"</item>
</string-array>
<string-array name="select_logd_size_summaries">
<item msgid="6921048829791179331">"إيقاف"</item>
- <item msgid="2969458029344750262">"64 كيلوبايت لكل ذاكرة تخزين مؤقت للتسجيل"</item>
- <item msgid="1342285115665698168">"256 كيلوبايت لكل ذاكرة تخزين مؤقت للتسجيل"</item>
+ <item msgid="2969458029344750262">"٦٤ كيلوبايت لكل ذاكرة تخزين مؤقت للتسجيل"</item>
+ <item msgid="1342285115665698168">"٢٥٦ كيلوبايت لكل ذاكرة تخزين مؤقت للتسجيل"</item>
<item msgid="1314234299552254621">"1 ميغابايت لكل ذاكرة تخزين مؤقت للتسجيل"</item>
- <item msgid="3606047780792894151">"4 ميغابايت لكل ذاكرة تخزين مؤقت للتسجيل"</item>
- <item msgid="5431354956856655120">"16 ميغابايت لكل ذاكرة تخزين مؤقت للتسجيل"</item>
+ <item msgid="3606047780792894151">"٤ ميغابايت لكل ذاكرة تخزين مؤقت للتسجيل"</item>
+ <item msgid="5431354956856655120">"١٦ ميغابايت لكل ذاكرة تخزين مؤقت للتسجيل"</item>
</string-array>
<string-array name="window_animation_scale_entries">
<item msgid="8134156599370824081">"إيقاف الرسوم المتحركة"</item>
@@ -148,7 +148,7 @@
<item msgid="4810006996171705398">"عملية واحدة بحد أقصى"</item>
<item msgid="8586370216857360863">"عمليتان بحد أقصى"</item>
<item msgid="836593137872605381">"3 عمليات بحد أقصى"</item>
- <item msgid="7899496259191969307">"4 عمليات بحد أقصى"</item>
+ <item msgid="7899496259191969307">"٤ عمليات بحد أقصى"</item>
</string-array>
<string-array name="usb_configuration_titles">
<item msgid="488237561639712799">"الشحن"</item>
diff --git a/packages/SettingsLib/res/values-es/arrays.xml b/packages/SettingsLib/res/values-es/arrays.xml
index e4b661ef5b65..a64e873fd154 100644
--- a/packages/SettingsLib/res/values-es/arrays.xml
+++ b/packages/SettingsLib/res/values-es/arrays.xml
@@ -29,7 +29,7 @@
<item msgid="4221763391123233270">"Conexión establecida"</item>
<item msgid="624838831631122137">"Suspendida"</item>
<item msgid="7979680559596111948">"Desconectando..."</item>
- <item msgid="1634960474403853625">"Desconectada"</item>
+ <item msgid="1634960474403853625">"Desconectado"</item>
<item msgid="746097431216080650">"Con error"</item>
<item msgid="6367044185730295334">"Bloqueada"</item>
<item msgid="503942654197908005">"Inhabilitando conexión inestable temporalmente..."</item>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index 16331bab7d5a..bfbb746d8f53 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -32,7 +32,7 @@
<string name="saved_network" msgid="4352716707126620811">"ذخیره‌شده توسط <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="connected_via_wfa" msgid="3805736726317410714">"‏متصل شده از طریق دستیار Wi-Fi"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"‏متصل از طریق %1$s"</string>
- <string name="available_via_passpoint" msgid="1617440946846329613">"‏دردسترس از طریق %1$s"</string>
+ <string name="available_via_passpoint" msgid="1617440946846329613">"‏در دسترس از طریق %1$s"</string>
<string name="wifi_connected_no_internet" msgid="3149853966840874992">"متصل، بدون اینترنت"</string>
<string name="bluetooth_disconnected" msgid="6557104142667339895">"اتصال قطع شد"</string>
<string name="bluetooth_disconnecting" msgid="8913264760027764974">"در حال قطع اتصال..."</string>
diff --git a/packages/SettingsLib/res/values-fr/arrays.xml b/packages/SettingsLib/res/values-fr/arrays.xml
index 1cfd3d422cfd..dd828c166959 100644
--- a/packages/SettingsLib/res/values-fr/arrays.xml
+++ b/packages/SettingsLib/res/values-fr/arrays.xml
@@ -50,12 +50,12 @@
</string-array>
<string-array name="hdcp_checking_titles">
<item msgid="441827799230089869">"Ne jamais vérifier"</item>
- <item msgid="6042769699089883931">"Vérifier le contenu GDN uniquement"</item>
+ <item msgid="6042769699089883931">"Vérifier le contenu DRM uniquement"</item>
<item msgid="9174900380056846820">"Toujours vérifier"</item>
</string-array>
<string-array name="hdcp_checking_summaries">
<item msgid="505558545611516707">"Ne jamais utiliser la vérification HDCP"</item>
- <item msgid="3878793616631049349">"Utiliser la vérification HDCP uniquement pour le contenu GDN"</item>
+ <item msgid="3878793616631049349">"Utiliser la vérification HDCP uniquement pour le contenu DRM"</item>
<item msgid="45075631231212732">"Toujours utiliser la vérification HDCP"</item>
</string-array>
<string-array name="select_logd_size_titles">
diff --git a/packages/SettingsLib/res/values-hy-rAM/arrays.xml b/packages/SettingsLib/res/values-hy-rAM/arrays.xml
index 0755a8ab0370..3e477cd933ec 100644
--- a/packages/SettingsLib/res/values-hy-rAM/arrays.xml
+++ b/packages/SettingsLib/res/values-hy-rAM/arrays.xml
@@ -125,7 +125,7 @@
<item msgid="3191973083884253830">"Ոչ մեկը"</item>
<item msgid="9089630089455370183">"Logcat"</item>
<item msgid="5397807424362304288">"Համակարգային հետագիծ (գծապատկերներ)"</item>
- <item msgid="1340692776955662664">"Կանչել glGetError-ի կույտը"</item>
+ <item msgid="1340692776955662664">"glGetError կանչերի ցուցակ"</item>
</string-array>
<string-array name="show_non_rect_clip_entries">
<item msgid="993742912147090253">"Անջատված"</item>
diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java
index 59637bee2e87..3c32615d5b05 100644
--- a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java
@@ -272,6 +272,29 @@ public class RestrictedLockUtils {
return null;
}
+ /**
+ * @param context
+ * @param userId user id of a managed profile.
+ * @return is remote contacts search disallowed.
+ */
+ public static EnforcedAdmin checkIfRemoteContactSearchDisallowed(Context context, int userId) {
+ DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(
+ Context.DEVICE_POLICY_SERVICE);
+ if (dpm == null) {
+ return null;
+ }
+ EnforcedAdmin admin = getProfileOwner(context, userId);
+ if (admin == null) {
+ return null;
+ }
+ UserHandle userHandle = UserHandle.of(userId);
+ if (dpm.getCrossProfileContactsSearchDisabled(userHandle)
+ && dpm.getCrossProfileCallerIdDisabled(userHandle)) {
+ return admin;
+ }
+ return null;
+ }
+
public static EnforcedAdmin checkIfAccessibilityServiceDisallowed(Context context,
String packageName, int userId) {
DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(
@@ -536,6 +559,22 @@ public class RestrictedLockUtils {
return null;
}
+ private static EnforcedAdmin getProfileOwner(Context context, int userId) {
+ if (userId == UserHandle.USER_NULL) {
+ return null;
+ }
+ final DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(
+ Context.DEVICE_POLICY_SERVICE);
+ if (dpm == null) {
+ return null;
+ }
+ ComponentName adminComponent = dpm.getProfileOwnerAsUser(userId);
+ if (adminComponent != null) {
+ return new EnforcedAdmin(adminComponent, userId);
+ }
+ return null;
+ }
+
/**
* Set the menu item as disabled by admin by adding a restricted padlock at the end of the
* text and set the click listener which will send an intent to show the admin support details
diff --git a/packages/SettingsProvider/res/values-ky-rKG/strings.xml b/packages/SettingsProvider/res/values-ky-rKG/strings.xml
new file mode 100644
index 000000000000..2b3cf616658b
--- /dev/null
+++ b/packages/SettingsProvider/res/values-ky-rKG/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * Copyright (c) 2007, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_label" msgid="4567566098528588863">"Жөндөөлөрдү сактоо"</string>
+</resources>
diff --git a/packages/SystemUI/res/layout/qs_paged_tile_layout.xml b/packages/SystemUI/res/layout/qs_paged_tile_layout.xml
index 68129cee28cc..ee55ec2d3ce2 100644
--- a/packages/SystemUI/res/layout/qs_paged_tile_layout.xml
+++ b/packages/SystemUI/res/layout/qs_paged_tile_layout.xml
@@ -47,7 +47,8 @@
android:textAppearance="@style/TextAppearance.QS.DetailButton"
android:textColor="#64FFFFFF"
android:focusable="true"
- android:text="@string/qs_edit" />
+ android:text="@string/qs_edit"
+ android:contentDescription="@string/accessibility_quick_settings_edit"/>
</FrameLayout>
diff --git a/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml b/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml
index 5d3b5ff12047..87f46828f796 100644
--- a/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml
+++ b/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml
@@ -20,12 +20,13 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res-auto"
android:id="@+id/header"
- android:layout_width="@dimen/notification_panel_width"
+ android:layout_width="match_parent"
android:layout_height="@dimen/status_bar_header_height"
android:layout_gravity="@integer/notification_panel_layout_gravity"
android:clipChildren="false"
android:clipToPadding="false"
android:baselineAligned="false"
+ android:clickable="false"
>
<LinearLayout
@@ -64,7 +65,7 @@
android:layout_height="match_parent"
android:background="@drawable/ripple_drawable"
android:src="@drawable/ic_settings"
- android:contentDescription="@string/accessibility_desc_settings" />
+ android:contentDescription="@string/accessibility_quick_settings_settings" />
<com.android.systemui.statusbar.AlphaOptimizedImageView android:id="@+id/tuner_icon"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -102,7 +103,8 @@
android:textAppearance="@style/TextAppearance.StatusBar.Expanded.EmergencyCallsOnly"
android:text="@*android:string/emergency_calls_only"
android:singleLine="true"
- android:gravity="center_vertical" />
+ android:gravity="center_vertical"
+ android:focusable="true" />
<LinearLayout
android:id="@+id/date_time_alarm_group"
@@ -118,7 +120,8 @@
android:id="@+id/date_time_group"
android:layout_width="wrap_content"
android:layout_height="19dp"
- android:orientation="horizontal">
+ android:orientation="horizontal"
+ android:focusable="true" >
<include layout="@layout/split_clock_view"
android:layout_width="wrap_content"
@@ -138,17 +141,13 @@
android:gravity="top"
systemui:datePattern="@string/abbrev_wday_month_day_no_year_alarm" />
- <com.android.systemui.statusbar.AlphaOptimizedButton
+ <com.android.systemui.statusbar.AlphaOptimizedImageView
android:id="@+id/alarm_status_collapsed"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:drawablePadding="6dp"
- android:drawableStart="@drawable/ic_access_alarms_small"
- android:textColor="#64ffffff"
- android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Date"
+ android:layout_height="match_parent"
+ android:src="@drawable/ic_access_alarms_small"
android:paddingStart="6dp"
- android:gravity="top"
- android:background="?android:attr/selectableItemBackground"
+ android:gravity="center"
android:visibility="gone" />
</LinearLayout>
@@ -176,7 +175,11 @@
android:layout_marginEnd="12dp"
android:layout_alignParentEnd="true"
android:clipChildren="false"
- android:clipToPadding="false" />
+ android:clipToPadding="false"
+ android:importantForAccessibility="yes"
+ android:focusable="true"
+ android:accessibilityTraversalAfter="@id/date_time_group"
+ android:accessibilityTraversalBefore="@id/expand_indicator" />
<com.android.systemui.statusbar.AlphaOptimizedImageView
android:id="@+id/qs_detail_header_progress"
diff --git a/packages/SystemUI/res/values-ky-rKG-land/strings.xml b/packages/SystemUI/res/values-ky-rKG-land/strings.xml
new file mode 100644
index 000000000000..4b70bb8e8852
--- /dev/null
+++ b/packages/SystemUI/res/values-ky-rKG-land/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * Copyright (c) 2010, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="toast_rotation_locked" msgid="7609673011431556092">"Экран азыр туурасынан кулпуланган."</string>
+</resources>
diff --git a/packages/SystemUI/res/values-uz-rUZ/strings.xml b/packages/SystemUI/res/values-uz-rUZ/strings.xml
index 942c9216eb3a..f9815d933b3a 100644
--- a/packages/SystemUI/res/values-uz-rUZ/strings.xml
+++ b/packages/SystemUI/res/values-uz-rUZ/strings.xml
@@ -309,9 +309,9 @@
<string name="quick_settings_flashlight_label" msgid="2133093497691661546">"Fonar"</string>
<string name="quick_settings_cellular_detail_title" msgid="8575062783675171695">"Mobil internet"</string>
<string name="quick_settings_cellular_detail_data_usage" msgid="1964260360259312002">"Trafik sarfi"</string>
- <string name="quick_settings_cellular_detail_remaining_data" msgid="722715415543541249">"Qolayotgan ma\'lumot"</string>
+ <string name="quick_settings_cellular_detail_remaining_data" msgid="722715415543541249">"Qolgan trafik"</string>
<string name="quick_settings_cellular_detail_over_limit" msgid="967669665390990427">"Limitdan oshgan"</string>
- <string name="quick_settings_cellular_detail_data_used" msgid="1476810587475761478">"<xliff:g id="DATA_USED">%s</xliff:g> foydalanilgan"</string>
+ <string name="quick_settings_cellular_detail_data_used" msgid="1476810587475761478">"<xliff:g id="DATA_USED">%s</xliff:g> ishlatilgan"</string>
<string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"Cheklov: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"Ogohlantirish: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string>
<string name="quick_settings_work_mode_label" msgid="6244915274350490429">"Ish rejimi"</string>
diff --git a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
index cecbfcb236ba..b6d8095d6c83 100644
--- a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
@@ -44,6 +44,7 @@ public class ExpandHelper implements Gefingerpoken {
void setUserExpandedChild(View v, boolean userExpanded);
void setUserLockedChild(View v, boolean userLocked);
void expansionStateChanged(boolean isExpanding);
+ int getMaxExpandHeight(ExpandableView view);
}
private static final String TAG = "ExpandHelper";
@@ -144,7 +145,7 @@ public class ExpandHelper implements Gefingerpoken {
return mView.getActualHeight();
}
public int getNaturalHeight() {
- return mView.getMaxContentHeight();
+ return mCallback.getMaxExpandHeight(mView);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index 55fa10bc238d..cad7f647e031 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -1542,7 +1542,7 @@ public class KeyguardViewMediator extends SystemUI {
private void updateActivityLockScreenState() {
try {
- ActivityManagerNative.getDefault().setLockScreenShown(mShowing && !mOccluded);
+ ActivityManagerNative.getDefault().setLockScreenShown(mShowing, mOccluded);
} catch (RemoteException e) {
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
index 5a236104806f..f07e8fccd894 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
@@ -134,7 +134,8 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
TileRecord tile = mTiles.get(i);
if (mPages.get(index).isFull()) {
if (++index == mPages.size()) {
- if (DEBUG) Log.d(TAG, "Adding page for " + tile.tile.getClass().getSimpleName());
+ if (DEBUG) Log.d(TAG, "Adding page for "
+ + tile.tile.getClass().getSimpleName());
mPages.add((TilePage) LayoutInflater.from(mContext)
.inflate(R.layout.qs_paged_page, this, false));
}
@@ -145,7 +146,12 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
}
if (mNumPages != index + 1) {
mNumPages = index + 1;
+ while (mPages.size() > mNumPages) {
+ mPages.remove(mPages.size() - 1);
+ }
+ if (DEBUG) Log.d(TAG, "Size: " + mNumPages);
mPageIndicator.setNumPages(mNumPages);
+ setAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
setCurrentItem(0, false);
}
@@ -197,6 +203,7 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
public TilePage(Context context, AttributeSet attrs) {
super(context, attrs);
updateResources();
+ setContentDescription(mContext.getString(R.string.accessibility_desc_quick_settings));
}
@Override
@@ -231,7 +238,6 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
private final PagerAdapter mAdapter = new PagerAdapter() {
public void destroyItem(ViewGroup container, int position, Object object) {
if (DEBUG) Log.d(TAG, "Destantiating " + position);
- // TODO: Find way to clean up the extra pages.
container.removeView((View) object);
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
index 74f1b804999a..0e8d76ac50bd 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
@@ -220,6 +220,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback {
}
MetricsLogger.visibility(mContext, MetricsEvent.QS_PANEL, mExpanded);
if (!mExpanded) {
+ mTriggeredExpand = false;
closeDetail();
} else {
logTiles();
@@ -271,12 +272,16 @@ public class QSPanel extends LinearLayout implements Tunable, Callback {
}
public void setTiles(Collection<QSTile<?>> tiles) {
+ setTiles(tiles, false);
+ }
+
+ public void setTiles(Collection<QSTile<?>> tiles, boolean collapsedView) {
for (TileRecord record : mRecords) {
mTileLayout.removeTile(record);
}
mRecords.clear();
for (QSTile<?> tile : tiles) {
- addTile(tile);
+ addTile(tile, collapsedView);
}
}
@@ -284,14 +289,14 @@ public class QSPanel extends LinearLayout implements Tunable, Callback {
r.tileView.onStateChanged(state);
}
- protected QSTileBaseView createTileView(QSTile<?> tile) {
- return new QSTileView(mContext, tile.createTileView(mContext));
+ protected QSTileBaseView createTileView(QSTile<?> tile, boolean collapsedView) {
+ return new QSTileView(mContext, tile.createTileView(mContext), collapsedView);
}
- protected void addTile(final QSTile<?> tile) {
+ protected void addTile(final QSTile<?> tile, boolean collapsedView) {
final TileRecord r = new TileRecord();
r.tile = tile;
- r.tileView = createTileView(tile);
+ r.tileView = createTileView(tile, collapsedView);
final QSTile.Callback callback = new QSTile.Callback() {
@Override
public void onStateChanged(QSTile.State state) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
index 76925981c8f5..0cc30a8642ea 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
@@ -513,9 +513,12 @@ public abstract class QSTile<TState extends State> implements Listenable {
public CharSequence label;
public CharSequence contentDescription;
public CharSequence dualLabelContentDescription;
+ public CharSequence minimalContentDescription;
public boolean autoMirrorDrawable = true;
public boolean disabledByPolicy;
public EnforcedAdmin enforcedAdmin;
+ public String minimalAccessibilityClassName;
+ public String expandedAccessibilityClassName;
public boolean copyTo(State other) {
if (other == null) throw new IllegalArgumentException();
@@ -526,12 +529,21 @@ public abstract class QSTile<TState extends State> implements Listenable {
|| !Objects.equals(other.autoMirrorDrawable, autoMirrorDrawable)
|| !Objects.equals(other.dualLabelContentDescription,
dualLabelContentDescription)
+ || !Objects.equals(other.minimalContentDescription,
+ minimalContentDescription)
+ || !Objects.equals(other.minimalAccessibilityClassName,
+ minimalAccessibilityClassName)
+ || !Objects.equals(other.expandedAccessibilityClassName,
+ expandedAccessibilityClassName)
|| !Objects.equals(other.disabledByPolicy, disabledByPolicy)
|| !Objects.equals(other.enforcedAdmin, enforcedAdmin);
other.icon = icon;
other.label = label;
other.contentDescription = contentDescription;
other.dualLabelContentDescription = dualLabelContentDescription;
+ other.minimalContentDescription = minimalContentDescription;
+ other.minimalAccessibilityClassName = minimalAccessibilityClassName;
+ other.expandedAccessibilityClassName = expandedAccessibilityClassName;
other.autoMirrorDrawable = autoMirrorDrawable;
other.disabledByPolicy = disabledByPolicy;
if (enforcedAdmin == null) {
@@ -555,6 +567,9 @@ public abstract class QSTile<TState extends State> implements Listenable {
sb.append(",label=").append(label);
sb.append(",contentDescription=").append(contentDescription);
sb.append(",dualLabelContentDescription=").append(dualLabelContentDescription);
+ sb.append(",minimalContentDescription=").append(minimalContentDescription);
+ sb.append(",minimalAccessibilityClassName=").append(minimalAccessibilityClassName);
+ sb.append(",expandedAccessibilityClassName=").append(expandedAccessibilityClassName);
sb.append(",autoMirrorDrawable=").append(autoMirrorDrawable);
sb.append(",disabledByPolicy=").append(disabledByPolicy);
sb.append(",enforcedAdmin=").append(enforcedAdmin);
@@ -581,8 +596,7 @@ public abstract class QSTile<TState extends State> implements Listenable {
}
}
- public static final class SignalState extends State {
- public boolean enabled;
+ public static final class SignalState extends BooleanState {
public boolean connected;
public boolean activityIn;
public boolean activityOut;
@@ -593,12 +607,10 @@ public abstract class QSTile<TState extends State> implements Listenable {
@Override
public boolean copyTo(State other) {
final SignalState o = (SignalState) other;
- final boolean changed = o.enabled != enabled
- || o.connected != connected || o.activityIn != activityIn
+ final boolean changed = o.connected != connected || o.activityIn != activityIn
|| o.activityOut != activityOut
|| o.overlayIconId != overlayIconId
|| o.isOverlayIconWide != isOverlayIconWide;
- o.enabled = enabled;
o.connected = connected;
o.activityIn = activityIn;
o.activityOut = activityOut;
@@ -611,7 +623,6 @@ public abstract class QSTile<TState extends State> implements Listenable {
@Override
protected StringBuilder toStringBuilder() {
final StringBuilder rt = super.toStringBuilder();
- rt.insert(rt.length() - 1, ",enabled=" + enabled);
rt.insert(rt.length() - 1, ",connected=" + connected);
rt.insert(rt.length() - 1, ",activityIn=" + activityIn);
rt.insert(rt.length() - 1, ",activityOut=" + activityOut);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileBaseView.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileBaseView.java
index 44b38f1b6e6a..f05aa3cdd89c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTileBaseView.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileBaseView.java
@@ -22,8 +22,12 @@ import android.graphics.drawable.RippleDrawable;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
+import android.text.TextUtils;
import android.view.View;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.LinearLayout;
+import android.widget.Switch;
import com.android.systemui.R;
@@ -33,8 +37,15 @@ public class QSTileBaseView extends LinearLayout {
private QSIconView mIcon;
private RippleDrawable mRipple;
private Drawable mTileBackground;
+ private String mAccessibilityClass;
+ private boolean mTileState;
+ private boolean mCollapsedView;
public QSTileBaseView(Context context, QSIconView icon) {
+ this(context, icon, false);
+ }
+
+ public QSTileBaseView(Context context, QSIconView icon, boolean collapsedView) {
super(context);
mIcon = icon;
addView(mIcon);
@@ -51,6 +62,7 @@ public class QSTileBaseView extends LinearLayout {
setPadding(0, padding, 0, padding);
setClipChildren(false);
setClipToPadding(false);
+ mCollapsedView = collapsedView;
}
private Drawable newTileBackground() {
@@ -116,13 +128,54 @@ public class QSTileBaseView extends LinearLayout {
protected void handleStateChanged(QSTile.State state) {
mIcon.setIcon(state);
- setContentDescription(state.contentDescription);
+ if (mCollapsedView && !TextUtils.isEmpty(state.minimalContentDescription)) {
+ setContentDescription(state.minimalContentDescription);
+ } else {
+ setContentDescription(state.contentDescription);
+ }
+ if (mCollapsedView) {
+ mAccessibilityClass = state.minimalAccessibilityClassName;
+ } else {
+ mAccessibilityClass = state.expandedAccessibilityClassName;
+ }
+ if (state instanceof QSTile.BooleanState) {
+ mTileState = ((QSTile.BooleanState) state).value;
+ }
}
public QSIconView getIcon() {
return mIcon;
}
+ @Override
+ public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
+ super.onInitializeAccessibilityEvent(event);
+ if (!TextUtils.isEmpty(mAccessibilityClass)) {
+ event.setClassName(mAccessibilityClass);
+ if (Switch.class.getName().equals(mAccessibilityClass)) {
+ String label = getResources()
+ .getString(mTileState ? R.string.switch_bar_on : R.string.switch_bar_off);
+ event.setContentDescription(label);
+ event.setChecked(mTileState);
+ }
+ }
+ }
+
+ @Override
+ public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
+ super.onInitializeAccessibilityNodeInfo(info);
+ if (!TextUtils.isEmpty(mAccessibilityClass)) {
+ info.setClassName(mAccessibilityClass);
+ if (Switch.class.getName().equals(mAccessibilityClass)) {
+ String label = getResources()
+ .getString(mTileState ? R.string.switch_bar_on : R.string.switch_bar_off);
+ info.setText(label);
+ info.setChecked(mTileState);
+ info.setCheckable(true);
+ }
+ }
+ }
+
private class H extends Handler {
private static final int STATE_CHANGED = 1;
public H() {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java
index c3766e89402e..924779494bc1 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileView.java
@@ -40,7 +40,11 @@ public class QSTileView extends QSTileBaseView {
private ImageView mPadLock;
public QSTileView(Context context, QSIconView icon) {
- super(context, icon);
+ this(context, icon, false);
+ }
+
+ public QSTileView(Context context, QSIconView icon, boolean collapsedView) {
+ super(context, icon, collapsedView);
mContext = context;
final Resources res = context.getResources();
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java
index 2ef3672c69f0..a11a6e59009f 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java
@@ -23,6 +23,7 @@ import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Space;
+
import com.android.systemui.R;
import com.android.systemui.qs.QSTile.SignalState;
import com.android.systemui.qs.QSTile.State;
@@ -93,8 +94,8 @@ public class QuickQSPanel extends QSPanel {
}
@Override
- protected QSTileBaseView createTileView(QSTile<?> tile) {
- return new QSTileBaseView(mContext, tile.createTileView(mContext));
+ protected QSTileBaseView createTileView(QSTile<?> tile, boolean collapsedView) {
+ return new QSTileBaseView(mContext, tile.createTileView(mContext), collapsedView);
}
@Override
@@ -133,7 +134,7 @@ public class QuickQSPanel extends QSPanel {
break;
}
}
- super.setTiles(quickTiles);
+ super.setTiles(quickTiles, true);
}
private final Tunable mNumTiles = new Tunable() {
@@ -150,6 +151,7 @@ public class QuickQSPanel extends QSPanel {
private static class HeaderTileLayout extends LinearLayout implements QSTileLayout {
private final Space mEndSpacer;
+ protected final ArrayList<TileRecord> mRecords = new ArrayList<>();
public HeaderTileLayout(Context context) {
super(context);
@@ -185,6 +187,7 @@ public class QuickQSPanel extends QSPanel {
// Add a spacer.
addView(new Space(mContext), getChildCount() - 1 /* Leave icon at end */,
generateSpaceParams());
+ mRecords.add(tile);
}
private LayoutParams generateSpaceParams() {
@@ -209,6 +212,7 @@ public class QuickQSPanel extends QSPanel {
removeViewAt(childIndex);
// Remove its spacer as well.
removeViewAt(childIndex);
+ mRecords.remove(tile);
}
private int getChildIndex(QSTileBaseView tileView) {
@@ -236,5 +240,21 @@ public class QuickQSPanel extends QSPanel {
public boolean hasOverlappingRendering() {
return false;
}
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+ if (mRecords != null && mRecords.size() > 0) {
+ View previousView = this;
+ for (TileRecord record : mRecords) {
+ if (record.tileView.getVisibility() == GONE) continue;
+ previousView = record.tileView.updateAccessibilityOrder(previousView);
+ }
+ mRecords.get(0).tileView.setAccessibilityTraversalAfter(
+ R.id.alarm_status_collapsed);
+ mRecords.get(mRecords.size() - 1).tileView.setAccessibilityTraversalBefore(
+ R.id.expand_indicator);
+ }
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java
index 1e3c458d00bd..a578e6c9cb9e 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java
@@ -32,6 +32,7 @@ public class TileLayout extends ViewGroup implements QSTileLayout {
public TileLayout(Context context, AttributeSet attrs) {
super(context, attrs);
+ setFocusableInTouchMode(true);
updateResources();
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java
index b2aa966c7449..61933b44aeeb 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java
@@ -127,6 +127,8 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
new TileQueryHelper(mContext, mHost).setListener(mTileAdapter);
mNotifQsContainer.setCustomizerAnimating(true);
mNotifQsContainer.setCustomizerShowing(true);
+ announceForAccessibility(mContext.getString(
+ R.string.accessibility_desc_quick_settings_edit));
}
}
@@ -140,6 +142,8 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
mClipper.animateCircularClip(x, y, false, mCollapseAnimationListener);
mNotifQsContainer.setCustomizerAnimating(true);
mNotifQsContainer.setCustomizerShowing(false);
+ announceForAccessibility(mContext.getString(
+ R.string.accessibility_desc_quick_settings));
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
index ceb40540d25b..eaf375eefdb0 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
@@ -285,10 +285,11 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
private void selectPosition(int position, View v) {
// Remove the placeholder.
- notifyItemRemoved(mEditIndex);
- mTiles.remove(mEditIndex--);
mAccessibilityMoving = false;
move(mAccessibilityFromIndex, position, v);
+ mTiles.remove(mEditIndex);
+ notifyItemRemoved(mEditIndex - 1);
+ updateDividerLocations();
saveSpecs(mHost);
}
@@ -321,7 +322,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
mAccessibilityFromIndex = position;
// Add placeholder for last slot.
mTiles.add(mEditIndex++, null);
- notifyItemInserted(mEditIndex - 1);
+ notifyDataSetChanged();
}
public SpanSizeLookup getSizeLookup() {
@@ -330,23 +331,32 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
private boolean move(int from, int to, View v) {
if (to >= mEditIndex) {
- if (from >= mEditIndex) {
- return false;
- }
- // Sort tiles into system/non-system groups.
- TileInfo tile = mTiles.get(from);
- if (tile.isSystem) {
- if (to > mTileDividerIndex) {
- to = mTileDividerIndex;
+ if (from < mEditIndex) {
+ // Removing a tile.
+ // Sort tiles into system/non-system groups.
+ TileInfo tile = mTiles.get(from);
+ if (tile.isSystem) {
+ if (to > mTileDividerIndex) {
+ to = mTileDividerIndex;
+ }
+ } else {
+ if (mTileDividerIndex == mTiles.size()) {
+ notifyItemInserted(mTiles.size());
+ mTiles.add(null);
+ }
+ if (to <= mTileDividerIndex) {
+ to = mTileDividerIndex;
+ }
}
} else {
- if (mTileDividerIndex == mTiles.size()) {
- notifyItemInserted(mTiles.size());
- mTiles.add(null);
- }
- if (to <= mTileDividerIndex) {
- to = mTileDividerIndex;
+ if (to > mEditIndex) {
+ // Don't allow tiles to be dragged around when they aren't added.
+ return false;
}
+ // Allow the case where to == mEditIndex to fall through and swap which
+ // side the tile is currently on.
+ // This lets the the cases where all tiles are on one side of the line
+ // work.
}
}
CharSequence fromLabel = mTiles.get(from).state.label;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java
index 5f5a87e3cb87..a980a7f87405 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java
@@ -23,6 +23,7 @@ import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.provider.Settings;
import android.provider.Settings.Global;
+import android.widget.Switch;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
@@ -88,13 +89,12 @@ public class AirplaneModeTile extends QSTile<QSTile.BooleanState> {
state.label = mContext.getString(R.string.airplane_mode);
if (airplaneMode) {
state.icon = mEnable;
- state.contentDescription = mContext.getString(
- R.string.accessibility_quick_settings_airplane_on);
} else {
state.icon = mDisable;
- state.contentDescription = mContext.getString(
- R.string.accessibility_quick_settings_airplane_off);
}
+ state.contentDescription = state.label;
+ state.minimalAccessibilityClassName = state.expandedAccessibilityClassName
+ = Switch.class.getName();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatteryTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatteryTile.java
index 77eaa3b5acd3..985bc9fdf4bb 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatteryTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatteryTile.java
@@ -31,6 +31,7 @@ import android.view.View;
import android.view.View.OnAttachStateChangeListener;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
+import android.widget.Button;
import android.widget.Checkable;
import android.widget.ImageView;
import android.widget.TextView;
@@ -131,7 +132,13 @@ public class BatteryTile extends QSTile<QSTile.State> implements BatteryControll
};
state.label = percentage;
state.contentDescription = mContext.getString(R.string.accessibility_quick_settings_battery,
- percentage);
+ percentage) + "," +
+ (mPowerSave ? mContext.getString(R.string.battery_saver_notification_title)
+ : mCharging ? mContext.getString(R.string.expanded_header_battery_charging)
+ : "")
+ + "," + mContext.getString(R.string.accessibility_battery_details);
+ state.minimalAccessibilityClassName = state.expandedAccessibilityClassName
+ = Button.class.getName();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
index 63c85dbd6c37..7a2391043fef 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
@@ -24,6 +24,8 @@ import android.provider.Settings;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.Switch;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
@@ -107,22 +109,31 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
final boolean connecting = mController.isBluetoothConnecting();
state.value = enabled;
state.autoMirrorDrawable = false;
+ state.minimalContentDescription =
+ mContext.getString(R.string.accessibility_quick_settings_bluetooth);
if (enabled) {
state.label = null;
if (connected) {
state.icon = ResourceIcon.get(R.drawable.ic_qs_bluetooth_connected);
- state.contentDescription = mContext.getString(
- R.string.accessibility_quick_settings_bluetooth_connected);
state.label = mController.getLastDeviceName();
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_bluetooth_name, state.label);
+ state.minimalContentDescription = state.minimalContentDescription + ","
+ + state.contentDescription;
} else if (connecting) {
state.icon = ResourceIcon.get(R.drawable.ic_qs_bluetooth_connecting);
state.contentDescription = mContext.getString(
R.string.accessibility_quick_settings_bluetooth_connecting);
state.label = mContext.getString(R.string.quick_settings_bluetooth_label);
+ state.minimalContentDescription = state.minimalContentDescription + ","
+ + state.contentDescription;
} else {
state.icon = ResourceIcon.get(R.drawable.ic_qs_bluetooth_on);
state.contentDescription = mContext.getString(
- R.string.accessibility_quick_settings_bluetooth_on);
+ R.string.accessibility_quick_settings_bluetooth_on) + ","
+ + mContext.getString(R.string.accessibility_not_connected);
+ state.minimalContentDescription = state.minimalContentDescription + ","
+ + mContext.getString(R.string.accessibility_not_connected);
}
if (TextUtils.isEmpty(state.label)) {
state.label = mContext.getString(R.string.quick_settings_bluetooth_label);
@@ -140,6 +151,10 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
R.string.accessibility_bluetooth_name, state.label);
}
state.dualLabelContentDescription = bluetoothName;
+ state.contentDescription = state.contentDescription + "," + mContext.getString(
+ R.string.accessibility_quick_settings_open_settings, getTileLabel());
+ state.expandedAccessibilityClassName = Button.class.getName();
+ state.minimalAccessibilityClassName = Switch.class.getName();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
index bea1e15ffe2b..c3e9b6e4dcc9 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
@@ -23,6 +23,7 @@ import android.util.Log;
import android.view.View;
import android.view.View.OnAttachStateChangeListener;
import android.view.ViewGroup;
+import android.widget.Button;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
@@ -115,6 +116,7 @@ public class CastTile extends QSTile<QSTile.BooleanState> {
@Override
protected void handleUpdateState(BooleanState state, Object arg) {
state.label = mContext.getString(R.string.quick_settings_cast_title);
+ state.contentDescription = state.label;
state.value = false;
state.autoMirrorDrawable = false;
final Set<CastDevice> devices = mController.getCastDevices();
@@ -123,6 +125,8 @@ public class CastTile extends QSTile<QSTile.BooleanState> {
if (device.state == CastDevice.STATE_CONNECTED) {
state.value = true;
state.label = getDeviceName(device);
+ state.contentDescription = state.contentDescription + "," +
+ mContext.getString(R.string.accessibility_cast_name, state.label);
} else if (device.state == CastDevice.STATE_CONNECTING) {
connecting = true;
}
@@ -133,6 +137,10 @@ public class CastTile extends QSTile<QSTile.BooleanState> {
state.icon = ResourceIcon.get(state.value ? R.drawable.ic_qs_cast_on
: R.drawable.ic_qs_cast_off);
mDetailAdapter.updateItems(devices);
+ state.minimalAccessibilityClassName = state.expandedAccessibilityClassName =
+ Button.class.getName();
+ state.contentDescription = state.contentDescription + ","
+ + mContext.getString(R.string.accessibility_quick_settings_open_details);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
index 55b00b5c4030..18191cf782dc 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
@@ -23,6 +23,8 @@ import android.content.res.Resources;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.Switch;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
@@ -132,13 +134,28 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
final String signalContentDesc = cb.enabled && (cb.mobileSignalIconId > 0)
? cb.signalContentDescription
: r.getString(R.string.accessibility_no_signal);
- final String dataContentDesc = cb.enabled && (cb.dataTypeIconId > 0) && !cb.wifiEnabled
- ? cb.dataContentDescription
- : r.getString(R.string.accessibility_no_data);
- state.contentDescription = r.getString(
- R.string.accessibility_quick_settings_mobile,
- signalContentDesc, dataContentDesc,
- state.label);
+
+ if (cb.noSim) {
+ state.contentDescription = state.label;
+ } else {
+ String enabledDesc = cb.enabled ? r.getString(R.string.accessibility_cell_data_on)
+ : r.getString(R.string.accessibility_cell_data_off);
+
+ state.contentDescription = r.getString(
+ R.string.accessibility_quick_settings_mobile,
+ enabledDesc, signalContentDesc,
+ state.label);
+ state.minimalContentDescription = r.getString(
+ R.string.accessibility_quick_settings_mobile,
+ r.getString(R.string.accessibility_cell_data), signalContentDesc,
+ state.label);
+ }
+ state.contentDescription = state.contentDescription + "," + r.getString(
+ R.string.accessibility_quick_settings_open_settings, getTileLabel());
+ state.expandedAccessibilityClassName = Button.class.getName();
+ state.minimalAccessibilityClassName = Switch.class.getName();
+ state.value = mDataController.isMobileDataSupported()
+ && mDataController.isMobileDataEnabled();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
index 416132e6d2a9..5ae7a767aaea 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
@@ -19,6 +19,7 @@ package com.android.systemui.qs.tiles;
import android.content.Intent;
import android.provider.Settings;
import android.provider.Settings.Secure;
+import android.widget.Switch;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
@@ -96,6 +97,9 @@ public class ColorInversionTile extends QSTile<QSTile.BooleanState> {
state.value = enabled;
state.label = mContext.getString(R.string.quick_settings_inversion_label);
state.icon = enabled ? mEnable : mDisable;
+ state.minimalAccessibilityClassName = state.expandedAccessibilityClassName
+ = Switch.class.getName();
+ state.contentDescription = state.label;
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java
index 0ce805ea41b2..aabafe162f0c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java
@@ -16,6 +16,7 @@ package com.android.systemui.qs.tiles;
import android.content.DialogInterface;
import android.content.Intent;
+import android.widget.Switch;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
@@ -56,7 +57,8 @@ public class DataSaverTile extends QSTile<QSTile.BooleanState> implements
@Override
protected void handleClick() {
- if (Prefs.getBoolean(mContext, Prefs.Key.QS_DATA_SAVER_DIALOG_SHOWN, false)) {
+ if (mState.value
+ || Prefs.getBoolean(mContext, Prefs.Key.QS_DATA_SAVER_DIALOG_SHOWN, false)) {
// Do it right away.
toggleDataSaver();
return;
@@ -95,10 +97,11 @@ public class DataSaverTile extends QSTile<QSTile.BooleanState> implements
state.value = arg instanceof Boolean ? (Boolean) arg
: mDataSaverController.isDataSaverEnabled();
state.label = mContext.getString(R.string.data_saver);
- state.contentDescription = mContext.getString(state.value
- ? R.string.accessibility_data_saver_on : R.string.accessibility_data_saver_off);
+ state.contentDescription = state.label;
state.icon = ResourceIcon.get(state.value ? R.drawable.ic_data_saver
: R.drawable.ic_data_saver_off);
+ state.minimalAccessibilityClassName = state.expandedAccessibilityClassName
+ = Switch.class.getName();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
index 11efd56b4b5f..04cb55331554 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
@@ -29,6 +29,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnAttachStateChangeListener;
import android.view.ViewGroup;
+import android.widget.Switch;
import android.widget.Toast;
import com.android.internal.logging.MetricsLogger;
@@ -162,7 +163,7 @@ public class DndTile extends QSTile<QSTile.BooleanState> {
state.icon = TOTAL_SILENCE.equals(state.icon) ? mDisableTotalSilence : mDisable;
state.label = mContext.getString(R.string.quick_settings_dnd_label);
state.contentDescription = mContext.getString(
- R.string.accessibility_quick_settings_dnd_off);
+ R.string.accessibility_quick_settings_dnd);
break;
}
if (mShowingDetail && !state.value) {
@@ -171,6 +172,8 @@ public class DndTile extends QSTile<QSTile.BooleanState> {
if (valueChanged) {
fireToggleStateChanged(state.value);
}
+ state.minimalAccessibilityClassName = state.expandedAccessibilityClassName
+ = Switch.class.getName();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java
index 69e71bc30436..5ff0bd0156ae 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java
@@ -22,6 +22,8 @@ import android.graphics.drawable.Drawable;
import android.provider.MediaStore;
import android.text.SpannableStringBuilder;
import android.text.style.ForegroundColorSpan;
+import android.widget.Switch;
+
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.systemui.R;
@@ -122,10 +124,9 @@ public class FlashlightTile extends QSTile<QSTile.BooleanState> implements
}
final AnimationIcon icon = state.value ? mEnable : mDisable;
state.icon = icon;
- int onOrOffId = state.value
- ? R.string.accessibility_quick_settings_flashlight_on
- : R.string.accessibility_quick_settings_flashlight_off;
- state.contentDescription = mContext.getString(onOrOffId);
+ state.contentDescription = mContext.getString(R.string.quick_settings_flashlight_label);
+ state.minimalAccessibilityClassName = state.expandedAccessibilityClassName
+ = Switch.class.getName();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
index 25a3eff2b2b2..3587262400d5 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
@@ -20,6 +20,8 @@ import android.content.Intent;
import android.os.UserManager;
import android.provider.Settings;
+import android.widget.Switch;
+
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.systemui.R;
@@ -94,6 +96,9 @@ public class HotspotTile extends QSTile<QSTile.BooleanState> {
state.value = mController.isHotspotEnabled();
}
state.icon = state.value ? mEnable : mDisable;
+ state.minimalAccessibilityClassName = state.expandedAccessibilityClassName
+ = Switch.class.getName();
+ state.contentDescription = state.label;
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java
index 6286f5e08a8e..5b5ecae3d423 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java
@@ -20,6 +20,8 @@ import android.content.Intent;
import android.os.UserManager;
import android.provider.Settings;
+import android.widget.Switch;
+
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.systemui.R;
@@ -113,6 +115,8 @@ public class LocationTile extends QSTile<QSTile.BooleanState> {
state.contentDescription = mContext.getString(
R.string.accessibility_quick_settings_location_off);
}
+ state.minimalAccessibilityClassName = state.expandedAccessibilityClassName
+ = Switch.class.getName();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java
index 38b3706ee190..521df37b732c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java
@@ -21,6 +21,8 @@ import android.content.Intent;
import android.content.res.Configuration;
import android.provider.Settings;
+import android.widget.Switch;
+
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.systemui.R;
@@ -106,10 +108,9 @@ public class RotationLockTile extends QSTile<QSTile.BooleanState> {
state.label = mContext.getString(R.string.quick_settings_rotation_unlocked_label);
state.icon = portrait ? mPortraitToAuto : mLandscapeToAuto;
}
- state.contentDescription = getAccessibilityString(rotationLocked,
- R.string.accessibility_rotation_lock_on_portrait,
- R.string.accessibility_rotation_lock_on_landscape,
- R.string.accessibility_rotation_lock_off);
+ state.contentDescription = getAccessibilityString(rotationLocked);
+ state.minimalAccessibilityClassName = state.expandedAccessibilityClassName
+ = Switch.class.getName();
}
public static boolean isCurrentOrientationLockPortrait(RotationLockController controller,
@@ -133,29 +134,25 @@ public class RotationLockTile extends QSTile<QSTile.BooleanState> {
* Get the correct accessibility string based on the state
*
* @param locked Whether or not rotation is locked.
- * @param idWhenPortrait The id which should be used when locked in portrait.
- * @param idWhenLandscape The id which should be used when locked in landscape.
- * @param idWhenOff The id which should be used when the rotation lock is off.
- * @return
*/
- private String getAccessibilityString(boolean locked, int idWhenPortrait, int idWhenLandscape,
- int idWhenOff) {
- int stringID;
+ private String getAccessibilityString(boolean locked) {
if (locked) {
- stringID = isCurrentOrientationLockPortrait(mController, mContext) ? idWhenPortrait
- : idWhenLandscape;
+ return mContext.getString(R.string.accessibility_quick_settings_rotation) + ","
+ + mContext.getString(R.string.accessibility_quick_settings_rotation_value,
+ isCurrentOrientationLockPortrait(mController, mContext)
+ ? mContext.getString(
+ R.string.quick_settings_rotation_locked_portrait_label)
+ : mContext.getString(
+ R.string.quick_settings_rotation_locked_landscape_label));
+
} else {
- stringID = idWhenOff;
+ return mContext.getString(R.string.accessibility_quick_settings_rotation);
}
- return mContext.getString(stringID);
}
@Override
protected String composeChangeAnnouncement() {
- return getAccessibilityString(mState.value,
- R.string.accessibility_rotation_lock_on_portrait_changed,
- R.string.accessibility_rotation_lock_on_landscape_changed,
- R.string.accessibility_rotation_lock_off_changed);
+ return getAccessibilityString(mState.value);
}
private final RotationLockControllerCallback mCallback = new RotationLockControllerCallback() {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
index c72bbf394beb..661212c13d7a 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
@@ -24,6 +24,8 @@ import android.provider.Settings;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.Switch;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
@@ -101,8 +103,8 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
protected void handleSecondaryClick() {
// Secondary clicks are header clicks, just toggle.
mState.copyTo(mStateBeforeClick);
- MetricsLogger.action(mContext, getMetricsCategory(), !mState.enabled);
- mController.setWifiEnabled(!mState.enabled);
+ MetricsLogger.action(mContext, getMetricsCategory(), !mState.value);
+ mController.setWifiEnabled(!mState.value);
}
@Override
@@ -111,9 +113,9 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
mHost.startActivityDismissingKeyguard(new Intent(Settings.ACTION_WIFI_SETTINGS));
return;
}
- if (!mState.enabled) {
+ if (!mState.value) {
mController.setWifiEnabled(true);
- mState.enabled = true;
+ mState.value = true;
}
showDetail(true);
}
@@ -133,43 +135,58 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
boolean wifiConnected = cb.enabled && (cb.wifiSignalIconId > 0) && (cb.enabledDesc != null);
boolean wifiNotConnected = (cb.wifiSignalIconId > 0) && (cb.enabledDesc == null);
- boolean enabledChanging = state.enabled != cb.enabled;
+ boolean enabledChanging = state.value != cb.enabled;
if (enabledChanging) {
mDetailAdapter.setItemsVisible(cb.enabled);
fireToggleStateChanged(cb.enabled);
}
- state.enabled = cb.enabled;
+ state.value = cb.enabled;
state.connected = wifiConnected;
state.activityIn = cb.enabled && cb.activityIn;
state.activityOut = cb.enabled && cb.activityOut;
state.filter = true;
- final String signalContentDescription;
+ final StringBuffer minimalContentDescription = new StringBuffer();
+ final StringBuffer expandedContentDescription = new StringBuffer();
final Resources r = mContext.getResources();
- if (!state.enabled) {
+ if (!state.value) {
state.icon = ResourceIcon.get(R.drawable.ic_qs_wifi_disabled);
state.label = r.getString(R.string.quick_settings_wifi_label);
- signalContentDescription = r.getString(R.string.accessibility_wifi_off);
} else if (wifiConnected) {
state.icon = ResourceIcon.get(cb.wifiSignalIconId);
state.label = removeDoubleQuotes(cb.enabledDesc);
- signalContentDescription = cb.wifiSignalContentDescription;
} else if (wifiNotConnected) {
state.icon = ResourceIcon.get(R.drawable.ic_qs_wifi_disconnected);
state.label = r.getString(R.string.quick_settings_wifi_label);
- signalContentDescription = r.getString(R.string.accessibility_no_wifi);
} else {
state.icon = ResourceIcon.get(R.drawable.ic_qs_wifi_no_network);
state.label = r.getString(R.string.quick_settings_wifi_label);
- signalContentDescription = r.getString(R.string.accessibility_wifi_off);
}
- state.contentDescription = mContext.getString(
- R.string.accessibility_quick_settings_wifi,
- signalContentDescription);
+ minimalContentDescription.append(
+ mContext.getString(R.string.quick_settings_wifi_label)).append(",");
+ if (state.value) {
+ expandedContentDescription.append(
+ r.getString(R.string.quick_settings_wifi_on_label)).append(",");
+ if (wifiConnected) {
+ minimalContentDescription.append(cb.wifiSignalContentDescription).append(",");
+ minimalContentDescription.append(removeDoubleQuotes(cb.enabledDesc));
+ expandedContentDescription.append(cb.wifiSignalContentDescription).append(",");
+ expandedContentDescription.append(removeDoubleQuotes(cb.enabledDesc));
+ }
+ } else {
+ expandedContentDescription.append(
+ r.getString(R.string.quick_settings_wifi_off_label));
+ }
+ state.minimalContentDescription = minimalContentDescription;
+ expandedContentDescription.append(",").append(
+ r.getString(R.string.accessibility_quick_settings_open_settings, getTileLabel()));
+ state.contentDescription = expandedContentDescription;
CharSequence wifiName = state.label;
if (state.connected) {
wifiName = r.getString(R.string.accessibility_wifi_name, state.label);
}
state.dualLabelContentDescription = wifiName;
+ state.expandedAccessibilityClassName = Button.class.getName();
+ state.minimalAccessibilityClassName = Switch.class.getName();
}
@Override
@@ -179,12 +196,12 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
@Override
protected boolean shouldAnnouncementBeDelayed() {
- return mStateBeforeClick.enabled == mState.enabled;
+ return mStateBeforeClick.value == mState.value;
}
@Override
protected String composeChangeAnnouncement() {
- if (mState.enabled) {
+ if (mState.value) {
return mContext.getString(R.string.accessibility_quick_settings_wifi_changed_on);
} else {
return mContext.getString(R.string.accessibility_quick_settings_wifi_changed_off);
@@ -263,7 +280,7 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
@Override
public Boolean getToggleState() {
- return mState.enabled;
+ return mState.value;
}
@Override
@@ -291,7 +308,7 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
mItems.setEmptyState(R.drawable.ic_qs_wifi_detail_empty,
R.string.quick_settings_wifi_detail_empty_text);
updateItems();
- setItemsVisible(mState.enabled);
+ setItemsVisible(mState.value);
return mItems;
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java
index 2c5f7d5b1582..459e8ece569e 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java
@@ -18,6 +18,8 @@ package com.android.systemui.qs.tiles;
import android.content.Intent;
import android.provider.Settings;
+import android.widget.Switch;
+
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.systemui.R;
@@ -104,6 +106,8 @@ public class WorkModeTile extends QSTile<QSTile.BooleanState> implements
state.contentDescription = mContext.getString(
R.string.accessibility_quick_settings_work_mode_off);
}
+ state.minimalAccessibilityClassName = state.expandedAccessibilityClassName
+ = Switch.class.getName();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
index 24260d5c8bed..a5f3e7700cf8 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
@@ -34,12 +34,14 @@ import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewTreeObserver;
+import android.view.ViewTreeObserver.OnPreDrawListener;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.systemui.Interpolators;
+import com.android.systemui.Prefs;
import com.android.systemui.R;
import com.android.systemui.recents.events.EventBus;
import com.android.systemui.recents.events.activity.CancelEnterRecentsWindowAnimationEvent;
@@ -47,6 +49,7 @@ import com.android.systemui.recents.events.activity.ConfigurationChangedEvent;
import com.android.systemui.recents.events.activity.DebugFlagsChangedEvent;
import com.android.systemui.recents.events.activity.DismissRecentsToHomeAnimationStarted;
import com.android.systemui.recents.events.activity.DockedFirstAnimationFrameEvent;
+import com.android.systemui.recents.events.activity.DockedTopTaskEvent;
import com.android.systemui.recents.events.activity.EnterRecentsWindowAnimationCompletedEvent;
import com.android.systemui.recents.events.activity.EnterRecentsWindowLastAnimationFrameEvent;
import com.android.systemui.recents.events.activity.ExitRecentsWindowFirstAnimationFrameEvent;
@@ -67,7 +70,6 @@ import com.android.systemui.recents.events.ui.ShowIncompatibleAppOverlayEvent;
import com.android.systemui.recents.events.ui.StackViewScrolledEvent;
import com.android.systemui.recents.events.ui.UpdateFreeformTaskViewVisibilityEvent;
import com.android.systemui.recents.events.ui.UserInteractionEvent;
-import com.android.systemui.recents.events.ui.dragndrop.DragEndEvent;
import com.android.systemui.recents.events.ui.focus.DismissFocusedTaskViewEvent;
import com.android.systemui.recents.events.ui.focus.FocusNextTaskViewEvent;
import com.android.systemui.recents.events.ui.focus.FocusPreviousTaskViewEvent;
@@ -87,7 +89,7 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
/**
- * The main Recents activity that is started from AlternateRecentsComponent.
+ * The main Recents activity that is started from RecentsComponent.
*/
public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreDrawListener {
@@ -164,10 +166,27 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD
if (action.equals(Intent.ACTION_SCREEN_OFF)) {
// When the screen turns off, dismiss Recents to Home
dismissRecentsToHomeIfVisible(false);
+ } else if (action.equals(Intent.ACTION_TIME_CHANGED)) {
+ // For the time being, if the time changes, then invalidate the
+ // last-stack-active-time, this ensures that we will just show the last N tasks
+ // the next time that Recents loads, but prevents really old tasks from showing
+ // up if the task time is set forward.
+ Prefs.putLong(RecentsActivity.this, Prefs.Key.OVERVIEW_LAST_STACK_TASK_ACTIVE_TIME,
+ 0);
}
}
};
+ private final OnPreDrawListener mRecentsDrawnEventListener =
+ new ViewTreeObserver.OnPreDrawListener() {
+ @Override
+ public boolean onPreDraw() {
+ mRecentsView.getViewTreeObserver().removeOnPreDrawListener(this);
+ EventBus.getDefault().post(new RecentsDrawnEvent());
+ return true;
+ }
+ };
+
/**
* Dismisses recents if we are already visible and the intent is to toggle the recents view.
*/
@@ -299,6 +318,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD
// Register the broadcast receiver to handle messages when the screen is turned off
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
+ filter.addAction(Intent.ACTION_TIME_CHANGED);
registerReceiver(mSystemBroadcastReceiver, filter);
getWindow().addPrivateFlags(LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION);
@@ -316,16 +336,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD
MetricsLogger.visible(this, MetricsEvent.OVERVIEW_ACTIVITY);
// Notify of the next draw
- mRecentsView.getViewTreeObserver().addOnPreDrawListener(
- new ViewTreeObserver.OnPreDrawListener() {
-
- @Override
- public boolean onPreDraw() {
- mRecentsView.getViewTreeObserver().removeOnPreDrawListener(this);
- EventBus.getDefault().post(new RecentsDrawnEvent());
- return true;
- }
- });
+ mRecentsView.getViewTreeObserver().addOnPreDrawListener(mRecentsDrawnEventListener);
}
@Override
@@ -748,11 +759,9 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD
mIgnoreAltTabRelease = true;
}
- public final void onBusEvent(final DragEndEvent event) {
- // Handle the case where we drop onto a dock region
- if (event.dropTarget instanceof TaskStack.DockState) {
- mScrimViews.animateScrimToCurrentNavBarState(false /* hasStackTasks */);
- }
+ public final void onBusEvent(final DockedTopTaskEvent event) {
+ mRecentsView.getViewTreeObserver().addOnPreDrawListener(mRecentsDrawnEventListener);
+ mRecentsView.invalidate();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
index cf18c41b1cd0..297dec92d9b9 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
@@ -262,8 +262,9 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener
try {
// Check if the top task is in the home stack, and start the recents activity
SystemServicesProxy ssp = Recents.getSystemServices();
- MutableBoolean isHomeStackVisible = new MutableBoolean(false);
- if (!ssp.isRecentsActivityVisible(isHomeStackVisible)) {
+ boolean forceVisible = launchedWhileDockingTask || draggingInRecents;
+ MutableBoolean isHomeStackVisible = new MutableBoolean(forceVisible);
+ if (forceVisible || !ssp.isRecentsActivityVisible(isHomeStackVisible)) {
ActivityManager.RunningTaskInfo runningTask = ssp.getRunningTask();
startRecentsActivity(runningTask, isHomeStackVisible.value || fromHome, animate,
growTarget);
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImplProxy.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsImplProxy.java
index defc6ed042bc..60bf760bfb44 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImplProxy.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsImplProxy.java
@@ -78,7 +78,9 @@ public class RecentsImplProxy extends IRecentsNonSystemUserCallbacks.Stub {
@Override
public void toggleRecents(int growTarget) throws RemoteException {
- mHandler.sendMessage(mHandler.obtainMessage(MSG_TOGGLE_RECENTS, growTarget));
+ SomeArgs args = SomeArgs.obtain();
+ args.argi1 = growTarget;
+ mHandler.sendMessage(mHandler.obtainMessage(MSG_TOGGLE_RECENTS, args));
}
@Override
@@ -111,6 +113,7 @@ public class RecentsImplProxy extends IRecentsNonSystemUserCallbacks.Stub {
@Override
public void handleMessage(Message msg) {
+ SomeArgs args;
switch (msg.what) {
case MSG_PRELOAD_RECENTS:
mImpl.preloadRecents();
@@ -119,7 +122,7 @@ public class RecentsImplProxy extends IRecentsNonSystemUserCallbacks.Stub {
mImpl.cancelPreloadingRecents();
break;
case MSG_SHOW_RECENTS:
- SomeArgs args = (SomeArgs) msg.obj;
+ args = (SomeArgs) msg.obj;
mImpl.showRecents(args.argi1 != 0, args.argi2 != 0, args.argi3 != 0,
args.argi4 != 0, args.argi5 != 0, args.argi6);
break;
@@ -127,7 +130,8 @@ public class RecentsImplProxy extends IRecentsNonSystemUserCallbacks.Stub {
mImpl.hideRecents(msg.arg1 != 0, msg.arg2 != 0);
break;
case MSG_TOGGLE_RECENTS:
- mImpl.toggleRecents(msg.arg1);
+ args = (SomeArgs) msg.obj;
+ mImpl.toggleRecents(args.argi1);
break;
case MSG_ON_CONFIGURATION_CHANGED:
mImpl.onConfigurationChanged();
diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/dragndrop/DragEndCancelledEvent.java b/packages/SystemUI/src/com/android/systemui/recents/events/ui/dragndrop/DragEndCancelledEvent.java
new file mode 100644
index 000000000000..edd799597ea6
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/recents/events/ui/dragndrop/DragEndCancelledEvent.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.recents.events.ui.dragndrop;
+
+import com.android.systemui.recents.events.EventBus;
+import com.android.systemui.recents.model.Task;
+import com.android.systemui.recents.model.TaskStack;
+import com.android.systemui.recents.views.DropTarget;
+import com.android.systemui.recents.views.TaskView;
+
+/**
+ * This event is sent whenever a drag end is cancelled because of an error.
+ */
+public class DragEndCancelledEvent extends EventBus.AnimatedEvent {
+
+ public final TaskStack stack;
+ public final Task task;
+ public final TaskView taskView;
+
+ public DragEndCancelledEvent(TaskStack stack, Task task, TaskView taskView) {
+ this.stack = stack;
+ this.task = task;
+ this.taskView = taskView;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
index 46b2612ee7f0..08b52d94ad20 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
@@ -393,18 +393,19 @@ public class SystemServicesProxy {
}
/** Docks a task to the side of the screen and starts it. */
- public void startTaskInDockedMode(int taskId, int createMode) {
- if (mIam == null) return;
+ public boolean startTaskInDockedMode(int taskId, int createMode) {
+ if (mIam == null) return false;
try {
- // TODO: Determine what animation we want for the incoming task
final ActivityOptions options = ActivityOptions.makeBasic();
options.setDockCreateMode(createMode);
options.setLaunchStackId(DOCKED_STACK_ID);
mIam.startActivityFromRecents(taskId, options.toBundle());
- } catch (RemoteException e) {
+ return true;
+ } catch (RemoteException | IllegalArgumentException e) {
e.printStackTrace();
}
+ return false;
}
/** Docks an already resumed task to the side of the screen. */
diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/Utilities.java b/packages/SystemUI/src/com/android/systemui/recents/misc/Utilities.java
index f6cc12bebb12..9fb8bd557b90 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/misc/Utilities.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/misc/Utilities.java
@@ -226,6 +226,18 @@ public class Utilities {
}
/**
+ * Sets the given {@link View}'s frame from its current translation.
+ */
+ public static void setViewFrameFromTranslation(View v) {
+ RectF taskViewRect = new RectF(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
+ taskViewRect.offset(v.getTranslationX(), v.getTranslationY());
+ v.setTranslationX(0);
+ v.setTranslationY(0);
+ v.setLeftTopRightBottom((int) taskViewRect.left, (int) taskViewRect.top,
+ (int) taskViewRect.right, (int) taskViewRect.bottom);
+ }
+
+ /**
* Returns a view stub for the given view id.
*/
public static ViewStub findViewStubById(View v, int stubId) {
diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java b/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java
index 397909580b0d..251ad71e5d62 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java
@@ -140,39 +140,10 @@ public class RecentsTaskLoadPlan {
lastStackActiveTime = 0;
}
long newLastStackActiveTime = -1;
- long prevLastActiveTime = lastStackActiveTime;
int taskCount = mRawTasks.size();
for (int i = 0; i < taskCount; i++) {
ActivityManager.RecentTaskInfo t = mRawTasks.get(i);
- /*
- * Affiliated tasks are returned in a specific order from ActivityManager but without a
- * lastActiveTime since it hasn't yet been started. However, we later sort the task list
- * by lastActiveTime, which rearranges the tasks. For now, we need to workaround this
- * by updating the lastActiveTime of this task to the lastActiveTime of the task it is
- * affiliated with, in the same order that we encounter it in the original list (just
- * its index in the task group for the task it is affiliated with).
- *
- * If the parent task is not available, then we will use the last active time of the
- * previous task as a base point (since the task itself may not have an active time)
- * for the entire affiliated group.
- */
- if (t.persistentId != t.affiliatedTaskId) {
- Task.TaskKey parentTask = affiliatedTasks.get(t.affiliatedTaskId);
- long parentTaskLastActiveTime = parentTask != null
- ? parentTask.lastActiveTime
- : prevLastActiveTime;
- if (RecentsDebugFlags.Static.EnableAffiliatedTaskGroups) {
- t.lastActiveTime = parentTaskLastActiveTime +
- affiliatedTaskCounts.get(t.affiliatedTaskId, 0) + 1;
- } else {
- if (t.lastActiveTime == 0) {
- t.lastActiveTime = parentTaskLastActiveTime -
- affiliatedTaskCounts.get(t.affiliatedTaskId, 0) - 1;
- }
- }
- }
-
// Compose the task key
Task.TaskKey taskKey = new Task.TaskKey(t.persistentId, t.stackId, t.baseIntent,
t.userId, t.firstActiveTime, t.lastActiveTime);
@@ -180,9 +151,14 @@ public class RecentsTaskLoadPlan {
// This task is only shown in the stack if it statisfies the historical time or min
// number of tasks constraints. Freeform tasks are also always shown.
boolean isFreeformTask = SystemServicesProxy.isFreeformStack(t.stackId);
- boolean isStackTask = isFreeformTask || (!isHistoricalTask(t) ||
- (t.lastActiveTime >= lastStackActiveTime && i >= (taskCount - MIN_NUM_TASKS)));
+ boolean isStackTask = isFreeformTask || !isHistoricalTask(t) ||
+ (t.lastActiveTime >= lastStackActiveTime && i >= (taskCount - MIN_NUM_TASKS));
boolean isLaunchTarget = taskKey.id == runningTaskId;
+
+ // The last stack active time is the baseline for which we show visible tasks. Since
+ // the system will store all the tasks, we don't want to show the tasks prior to the
+ // last visible ones, otherwise, as you dismiss them, the previous tasks may satisfy
+ // the other stack-task constraints.
if (isStackTask && newLastStackActiveTime < 0) {
newLastStackActiveTime = t.lastActiveTime;
}
@@ -211,7 +187,6 @@ public class RecentsTaskLoadPlan {
allTasks.add(task);
affiliatedTaskCounts.put(taskKey.id, affiliatedTaskCounts.get(taskKey.id, 0) + 1);
affiliatedTasks.put(taskKey.id, taskKey);
- prevLastActiveTime = t.lastActiveTime;
}
if (newLastStackActiveTime != -1) {
Prefs.putLong(mContext, Prefs.Key.OVERVIEW_LAST_STACK_TASK_ACTIVE_TIME,
diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/Task.java b/packages/SystemUI/src/com/android/systemui/recents/model/Task.java
index c6528a157d7a..86a0315496a1 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/model/Task.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/model/Task.java
@@ -118,6 +118,11 @@ public class Task {
public TaskKey key;
/**
+ * The temporary sort index in the stack, used when ordering the stack.
+ */
+ public int temporarySortIndexInStack;
+
+ /**
* The group will be computed separately from the initialization of the task
*/
@ViewDebug.ExportedProperty(deepExport=true, prefix="group_")
diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/TaskKeyLruCache.java b/packages/SystemUI/src/com/android/systemui/recents/model/TaskKeyLruCache.java
index c63a494963a9..23739a083826 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/model/TaskKeyLruCache.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/model/TaskKeyLruCache.java
@@ -76,7 +76,8 @@ public class TaskKeyLruCache<V> {
final V getAndInvalidateIfModified(Task.TaskKey key) {
Task.TaskKey lastKey = mKeys.get(key.id);
if (lastKey != null) {
- if ((lastKey.stackId != key.stackId) || (lastKey.lastActiveTime < key.lastActiveTime)) {
+ if ((lastKey.stackId != key.stackId) ||
+ (lastKey.lastActiveTime != key.lastActiveTime)) {
// The task has updated (been made active since the last time it was put into the
// LRU cache) or the stack id for the task has changed, invalidate that cache item
remove(key);
diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java b/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java
index f42eea335e6f..50e28ca2205d 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java
@@ -517,16 +517,8 @@ public class TaskStack {
}
}
- // A comparator that sorts tasks by their last active time
- private Comparator<Task> LAST_ACTIVE_TIME_COMPARATOR = new Comparator<Task>() {
- @Override
- public int compare(Task o1, Task o2) {
- return Long.compare(o1.key.lastActiveTime, o2.key.lastActiveTime);
- }
- };
-
- // A comparator that sorts tasks by their last active time and freeform state
- private Comparator<Task> FREEFORM_LAST_ACTIVE_TIME_COMPARATOR = new Comparator<Task>() {
+ // A comparator that sorts tasks by their freeform state
+ private Comparator<Task> FREEFORM_COMPARATOR = new Comparator<Task>() {
@Override
public int compare(Task o1, Task o2) {
if (o1.isFreeformTask() && !o2.isFreeformTask()) {
@@ -534,7 +526,7 @@ public class TaskStack {
} else if (o2.isFreeformTask() && !o1.isFreeformTask()) {
return -1;
}
- return Long.compare(o1.key.lastActiveTime, o2.key.lastActiveTime);
+ return Long.compare(o1.temporarySortIndexInStack, o2.temporarySortIndexInStack);
}
};
@@ -696,7 +688,10 @@ public class TaskStack {
}
// Sort all the tasks to ensure they are ordered correctly
- Collections.sort(allTasks, FREEFORM_LAST_ACTIVE_TIME_COMPARATOR);
+ for (int i = allTasks.size() - 1; i >= 0; i--) {
+ allTasks.get(i).temporarySortIndexInStack = i;
+ }
+ Collections.sort(allTasks, FREEFORM_COMPARATOR);
mStackTaskList.set(allTasks);
mRawTaskList = allTasks;
@@ -769,12 +764,11 @@ public class TaskStack {
}
/**
- * Computes a set of all the active and historical tasks ordered by their last active time.
+ * Computes a set of all the active and historical tasks.
*/
public ArrayList<Task> computeAllTasksList() {
ArrayList<Task> tasks = new ArrayList<>();
tasks.addAll(mStackTaskList.getTasks());
- Collections.sort(tasks, LAST_ACTIVE_TIME_COMPARATOR);
return tasks;
}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/tv/RecentsTvActivity.java b/packages/SystemUI/src/com/android/systemui/recents/tv/RecentsTvActivity.java
index 9dc9c4c19e5d..acebf427feab 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/tv/RecentsTvActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/tv/RecentsTvActivity.java
@@ -350,13 +350,6 @@ public class RecentsTvActivity extends Activity implements OnPreDrawListener {
} else {
mRecentsView.getViewTreeObserver().addOnPreDrawListener(this);
}
- if(mTaskStackHorizontalGridView.getStack().getTaskCount() > 1 && !mLaunchedFromHome) {
- // If there are 2 or more tasks, and we are not launching from home
- // set the selected position to the 2nd task to allow for faster app switching
- mTaskStackHorizontalGridView.setSelectedPosition(1);
- } else {
- mTaskStackHorizontalGridView.setSelectedPosition(0);
- }
// If this is a new instance from a configuration change, then we have to manually trigger
// the enter animation state, or if recents was relaunched by AM, without going through
@@ -382,6 +375,7 @@ public class RecentsTvActivity extends Activity implements OnPreDrawListener {
if(mLaunchedFromHome) {
mHomeRecentsEnterExitAnimationHolder.startEnterAnimation(mPipManager.isPipShown());
}
+ mTaskStackViewAdapter.setResetAddedCards(true);
EventBus.getDefault().send(new EnterRecentsWindowAnimationCompletedEvent());
}
@@ -389,12 +383,20 @@ public class RecentsTvActivity extends Activity implements OnPreDrawListener {
public void onResume() {
super.onResume();
mPipRecentsOverlayManager.onRecentsResumed();
+ if(mTaskStackHorizontalGridView.getStack().getTaskCount() > 1 && !mLaunchedFromHome) {
+ // If there are 2 or more tasks, and we are not launching from home
+ // set the selected position to the 2nd task to allow for faster app switching
+ mTaskStackHorizontalGridView.setSelectedPosition(1);
+ } else {
+ mTaskStackHorizontalGridView.setSelectedPosition(0);
+ }
}
@Override
public void onPause() {
super.onPause();
mPipRecentsOverlayManager.onRecentsPaused();
+ mTaskStackViewAdapter.setResetAddedCards(false);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/recents/tv/RecentsTvImpl.java b/packages/SystemUI/src/com/android/systemui/recents/tv/RecentsTvImpl.java
index 59ea358fb459..6f7bd4146303 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/tv/RecentsTvImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/tv/RecentsTvImpl.java
@@ -38,11 +38,14 @@ import com.android.systemui.recents.model.TaskStack;
import com.android.systemui.recents.model.ThumbnailData;
import com.android.systemui.recents.tv.views.TaskCardView;
import com.android.systemui.statusbar.tv.TvStatusBar;
+import com.android.systemui.tv.pip.PipManager;
public class RecentsTvImpl extends RecentsImpl{
public final static String RECENTS_TV_ACTIVITY =
"com.android.systemui.recents.tv.RecentsTvActivity";
+ private static final PipManager mPipManager = PipManager.getInstance();
+
public RecentsTvImpl(Context context) {
super(context);
}
@@ -120,7 +123,8 @@ public class RecentsTvImpl extends RecentsImpl{
*/
private ActivityOptions getThumbnailTransitionActivityOptionsForTV(
ActivityManager.RunningTaskInfo runningTask, int numTasks) {
- Rect rect = TaskCardView.getStartingCardThumbnailRect(mContext, numTasks);
+ Rect rect = TaskCardView.getStartingCardThumbnailRect(
+ mContext, !mPipManager.isPipShown(), numTasks);
SystemServicesProxy ssp = Recents.getSystemServices();
ThumbnailData thumbnailData = ssp.getTaskThumbnail(runningTask.id);
if (thumbnailData.thumbnail != null) {
diff --git a/packages/SystemUI/src/com/android/systemui/recents/tv/animations/DismissAnimationsHolder.java b/packages/SystemUI/src/com/android/systemui/recents/tv/animations/DismissAnimationsHolder.java
index 084fc874b7b9..65f5fffc5acc 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/tv/animations/DismissAnimationsHolder.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/tv/animations/DismissAnimationsHolder.java
@@ -18,7 +18,6 @@ package com.android.systemui.recents.tv.animations;
import android.animation.Animator.AnimatorListener;
import android.content.res.Resources;
import android.graphics.drawable.TransitionDrawable;
-import android.util.TypedValue;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -39,7 +38,7 @@ public class DismissAnimationsHolder {
private TransitionDrawable mDismissDrawable;
private TextView mDismissText;
- private float mDismissUnselectedAlpha;
+ private float mDismissIconNotInDismissStateAlpha;
private long mShortDuration;
private long mLongDuration;
@@ -57,7 +56,7 @@ public class DismissAnimationsHolder {
mDismissStartYDelta = mDismissEnterYDelta * 2;
mShortDuration = res.getInteger(R.integer.dismiss_short_duration);
mLongDuration = res.getInteger(R.integer.dismiss_long_duration);
- mDismissUnselectedAlpha = res.getFloat(R.integer.dismiss_unselected_alpha);
+ mDismissIconNotInDismissStateAlpha = res.getFloat(R.integer.dismiss_unselected_alpha);
}
public void startEnterAnimation() {
@@ -94,7 +93,7 @@ public class DismissAnimationsHolder {
mCardDismissIcon.animate()
.setDuration(mShortDuration)
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
- .alpha(mDismissUnselectedAlpha)
+ .alpha(mDismissIconNotInDismissStateAlpha)
.withEndAction(new Runnable() {
@Override
public void run() {
@@ -157,7 +156,7 @@ public class DismissAnimationsHolder {
mInfoField.animate().setListener(null);
mThumbnailView.setAlpha(1.0f);
mThumbnailView.setTranslationY(0);
- mCardDismissIcon.setAlpha(mDismissUnselectedAlpha);
+ mCardDismissIcon.setAlpha(0.0f);
mDismissText.setAlpha(0.0f);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/tv/views/RecentsTvTransitionHelper.java b/packages/SystemUI/src/com/android/systemui/recents/tv/views/RecentsTvTransitionHelper.java
index 812bff1b84a7..482115ed9b94 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/tv/views/RecentsTvTransitionHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/tv/views/RecentsTvTransitionHelper.java
@@ -103,6 +103,16 @@ public class RecentsTvTransitionHelper {
EventBus.getDefault().send(new LaunchTaskFailedEvent());
}
+ Rect taskRect = taskView.getFocusedThumbnailRect();
+ // Check both the rect and the thumbnail for null. The rect can be null if the user
+ // decides to disallow animations, so automatic scrolling does not happen properly.
+
+ // The thumbnail can be null if the app was partially launched on TV. In this case
+ // we do not override the transition.
+ if (taskRect == null || task.thumbnail == null) {
+ return;
+ }
+
IRemoteCallback.Stub callback = null;
if (animStartedListener != null) {
callback = new IRemoteCallback.Stub() {
@@ -120,14 +130,11 @@ public class RecentsTvTransitionHelper {
};
}
try {
- Rect taskRect = taskView.getFocusedThumbnailRect();
- if (taskRect != null) {
- Bitmap thumbnail = Bitmap.createScaledBitmap(task.thumbnail, taskRect.width(),
- taskRect.height(), false);
- WindowManagerGlobal.getWindowManagerService()
- .overridePendingAppTransitionAspectScaledThumb(thumbnail, taskRect.left,
- taskRect.top, taskRect.width(), taskRect.height(), callback, true);
- }
+ Bitmap thumbnail = Bitmap.createScaledBitmap(task.thumbnail, taskRect.width(),
+ taskRect.height(), false);
+ WindowManagerGlobal.getWindowManagerService()
+ .overridePendingAppTransitionAspectScaledThumb(thumbnail, taskRect.left,
+ taskRect.top, taskRect.width(), taskRect.height(), callback, true);
} catch (RemoteException e) {
Log.w(TAG, "Failed to override transition: " + e);
}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskCardView.java b/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskCardView.java
index ef8a54b753ec..85fb50ebbb78 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskCardView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskCardView.java
@@ -110,20 +110,24 @@ public class TaskCardView extends LinearLayout {
return r;
}
- public static Rect getStartingCardThumbnailRect(Context context, int numberOfTasks) {
+ public static Rect getStartingCardThumbnailRect(
+ Context context, boolean hasFocus, int numberOfTasks) {
if(numberOfTasks > 1) {
- return getStartingCardThumbnailRectForStartPosition(context);
+ return getStartingCardThumbnailRectForStartPosition(context, hasFocus);
} else {
- return getStartingCardThumbnailRectForFocusedPosition(context);
+ return getStartingCardThumbnailRectForFocusedPosition(context, hasFocus);
}
}
- private static Rect getStartingCardThumbnailRectForStartPosition(Context context) {
+ private static Rect getStartingCardThumbnailRectForStartPosition(
+ Context context, boolean hasFocus) {
Resources res = context.getResources();
int width = res.getDimensionPixelOffset(R.dimen.recents_tv_card_width);
- int totalSpacing = res.getDimensionPixelOffset(R.dimen.recents_tv_gird_card_spacing) * 2
- + res.getDimensionPixelOffset(R.dimen.recents_tv_gird_focused_card_delta);
+ int totalSpacing = res.getDimensionPixelOffset(R.dimen.recents_tv_gird_card_spacing) * 2;
+ if (hasFocus) {
+ totalSpacing += res.getDimensionPixelOffset(R.dimen.recents_tv_gird_focused_card_delta);
+ }
int height = res.getDimensionPixelOffset(R.dimen.recents_tv_screenshot_height);
int topMargin = res.getDimensionPixelOffset(R.dimen.recents_tv_gird_row_top_margin);
int headerHeight = res.getDimensionPixelOffset(R.dimen.recents_tv_card_extra_badge_size) +
@@ -141,12 +145,13 @@ public class TaskCardView extends LinearLayout {
topMargin + headerHeight + height);
}
- private static Rect getStartingCardThumbnailRectForFocusedPosition(Context context) {
+ private static Rect getStartingCardThumbnailRectForFocusedPosition(
+ Context context, boolean hasFocus) {
Resources res = context.getResources();
TypedValue out = new TypedValue();
res.getValue(R.integer.selected_scale, out, true);
- float scale = out.getFloat();
+ float scale = hasFocus ? out.getFloat() : 1;
int width = res.getDimensionPixelOffset(R.dimen.recents_tv_card_width);
int widthDelta = (int) (width * scale - width);
diff --git a/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalViewAdapter.java b/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalViewAdapter.java
index eb3b02d155eb..ed28ef173f0f 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalViewAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalViewAdapter.java
@@ -42,6 +42,7 @@ public class TaskStackHorizontalViewAdapter extends
private static final String TAG = "TaskStackViewAdapter";
private List<Task> mTaskList;
private TaskStackHorizontalGridView mGridView;
+ private boolean mResetAddedCards;
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
private TaskCardView mTaskCardView;
@@ -126,6 +127,13 @@ public class TaskStackHorizontalViewAdapter extends
}
@Override
+ public void onViewAttachedToWindow(ViewHolder holder) {
+ if (mResetAddedCards) {
+ holder.mTaskCardView.reset();
+ }
+ }
+
+ @Override
public void onViewDetachedFromWindow(ViewHolder holder) {
// We only want to reset on view detach if this is the last task being dismissed.
// This is so that we do not reset when shifting to apps etc, as it is not needed.
@@ -171,4 +179,8 @@ public class TaskStackHorizontalViewAdapter extends
mTaskList.add(position, task);
notifyItemInserted(position);
}
+
+ public void setResetAddedCards(boolean reset) {
+ mResetAddedCards = reset;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java
index e3c3af0abbd5..41869dd5f417 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java
@@ -306,8 +306,11 @@ public class RecentsTransitionHelper {
mTmpTransform.fillIn(taskView);
stackLayout.transformToScreenCoordinates(mTmpTransform,
null /* windowOverrideRect */);
- specs.add(composeAnimationSpec(stackView, taskView, mTmpTransform,
- true /* addHeaderBitmap */));
+ AppTransitionAnimationSpec spec = composeAnimationSpec(stackView, taskView,
+ mTmpTransform, true /* addHeaderBitmap */);
+ if (spec != null) {
+ specs.add(spec);
+ }
}
return specs;
}
@@ -329,8 +332,11 @@ public class RecentsTransitionHelper {
mTmpTransform.fillIn(taskView);
stackLayout.transformToScreenCoordinates(mTmpTransform,
null /* windowOverrideRect */);
- specs.add(composeAnimationSpec(stackView, tv, mTmpTransform,
- true /* addHeaderBitmap */));
+ AppTransitionAnimationSpec spec = composeAnimationSpec(stackView, tv,
+ mTmpTransform, true /* addHeaderBitmap */);
+ if (spec != null) {
+ specs.add(spec);
+ }
}
}
}
@@ -376,11 +382,13 @@ public class RecentsTransitionHelper {
private static Bitmap composeHeaderBitmap(TaskView taskView,
TaskViewTransform transform) {
float scale = transform.scale;
- int fromHeaderWidth = (int) (transform.rect.width());
- int fromHeaderHeight = (int) (taskView.mHeaderView.getMeasuredHeight() * scale);
- Bitmap b = Bitmap.createBitmap(fromHeaderWidth, fromHeaderHeight,
- Bitmap.Config.ARGB_8888);
+ int headerWidth = (int) (transform.rect.width());
+ int headerHeight = (int) (taskView.mHeaderView.getMeasuredHeight() * scale);
+ if (headerWidth == 0 || headerHeight == 0) {
+ return null;
+ }
+ Bitmap b = Bitmap.createBitmap(headerWidth, headerHeight, Bitmap.Config.ARGB_8888);
if (RecentsDebugFlags.Static.EnableTransitionThumbnailDebugMode) {
b.eraseColor(0xFFff0000);
} else {
@@ -400,6 +408,9 @@ public class RecentsTransitionHelper {
Bitmap b = null;
if (addHeaderBitmap) {
b = composeHeaderBitmap(taskView, transform);
+ if (b == null) {
+ return null;
+ }
}
Rect taskRect = new Rect();
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
index fd27b4f1fc27..a8939100f66d 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
@@ -64,6 +64,7 @@ import com.android.systemui.recents.events.ui.DismissAllTaskViewsEvent;
import com.android.systemui.recents.events.ui.DraggingInRecentsEndedEvent;
import com.android.systemui.recents.events.ui.DraggingInRecentsEvent;
import com.android.systemui.recents.events.ui.dragndrop.DragDropTargetChangedEvent;
+import com.android.systemui.recents.events.ui.dragndrop.DragEndCancelledEvent;
import com.android.systemui.recents.events.ui.dragndrop.DragEndEvent;
import com.android.systemui.recents.events.ui.dragndrop.DragStartEvent;
import com.android.systemui.recents.misc.ReferenceCountedTrigger;
@@ -510,45 +511,43 @@ public class RecentsView extends FrameLayout {
// We translated the view but we need to animate it back from the current layout-space
// rect to its final layout-space rect
- int x = (int) event.taskView.getTranslationX();
- int y = (int) event.taskView.getTranslationY();
- Rect taskViewRect = new Rect(event.taskView.getLeft(), event.taskView.getTop(),
- event.taskView.getRight(), event.taskView.getBottom());
- taskViewRect.offset(x, y);
- event.taskView.setTranslationX(0);
- event.taskView.setTranslationY(0);
- event.taskView.setLeftTopRightBottom(taskViewRect.left, taskViewRect.top,
- taskViewRect.right, taskViewRect.bottom);
-
- final OnAnimationStartedListener startedListener = new OnAnimationStartedListener() {
- @Override
- public void onAnimationStarted() {
- EventBus.getDefault().send(new DockedFirstAnimationFrameEvent());
- // Remove the task and don't bother relaying out, as all the tasks will be
- // relaid out when the stack changes on the multiwindow change event
- mTaskStackView.getStack().removeTask(event.task, null,
- true /* fromDockGesture */);
- }
- };
+ Utilities.setViewFrameFromTranslation(event.taskView);
// Dock the task and launch it
SystemServicesProxy ssp = Recents.getSystemServices();
- ssp.startTaskInDockedMode(event.task.key.id, dockState.createMode);
- final Rect taskRect = getTaskRect(event.taskView);
- IAppTransitionAnimationSpecsFuture future = mTransitionHelper.getAppTransitionFuture(
- new AnimationSpecComposer() {
- @Override
- public List<AppTransitionAnimationSpec> composeSpecs() {
- return mTransitionHelper.composeDockAnimationSpec(
- event.taskView, taskRect);
- }
- });
- ssp.overridePendingAppTransitionMultiThumbFuture(future,
- mTransitionHelper.wrapStartedListener(startedListener),
- true /* scaleUp */);
-
- MetricsLogger.action(mContext, MetricsEvent.ACTION_WINDOW_DOCK_DRAG_DROP,
- event.task.getTopComponent().flattenToShortString());
+ if (ssp.startTaskInDockedMode(event.task.key.id, dockState.createMode)) {
+ final OnAnimationStartedListener startedListener =
+ new OnAnimationStartedListener() {
+ @Override
+ public void onAnimationStarted() {
+ EventBus.getDefault().send(new DockedFirstAnimationFrameEvent());
+ // Remove the task and don't bother relaying out, as all the tasks will be
+ // relaid out when the stack changes on the multiwindow change event
+ mTaskStackView.getStack().removeTask(event.task, null,
+ true /* fromDockGesture */);
+ }
+ };
+
+ final Rect taskRect = getTaskRect(event.taskView);
+ IAppTransitionAnimationSpecsFuture future =
+ mTransitionHelper.getAppTransitionFuture(
+ new AnimationSpecComposer() {
+ @Override
+ public List<AppTransitionAnimationSpec> composeSpecs() {
+ return mTransitionHelper.composeDockAnimationSpec(
+ event.taskView, taskRect);
+ }
+ });
+ ssp.overridePendingAppTransitionMultiThumbFuture(future,
+ mTransitionHelper.wrapStartedListener(startedListener),
+ true /* scaleUp */);
+
+ MetricsLogger.action(mContext, MetricsEvent.ACTION_WINDOW_DOCK_DRAG_DROP,
+ event.task.getTopComponent().flattenToShortString());
+ } else {
+ EventBus.getDefault().send(new DragEndCancelledEvent(mStack, event.task,
+ event.taskView));
+ }
} else {
// Animate the overlay alpha back to 0
updateVisibleDockRegions(null, true /* isDefaultDockState */, -1, -1,
@@ -565,6 +564,12 @@ public class RecentsView extends FrameLayout {
}
}
+ public final void onBusEvent(final DragEndCancelledEvent event) {
+ // Animate the overlay alpha back to 0
+ updateVisibleDockRegions(null, true /* isDefaultDockState */, -1, -1,
+ true /* animateAlpha */, false /* animateBounds */);
+ }
+
private Rect getTaskRect(TaskView taskView) {
int[] location = taskView.getLocationOnScreen();
int viewX = location[0];
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/SystemBarScrimViews.java b/packages/SystemUI/src/com/android/systemui/recents/views/SystemBarScrimViews.java
index 995f9f74a2f0..8f784b832e4c 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/SystemBarScrimViews.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/SystemBarScrimViews.java
@@ -28,6 +28,9 @@ import com.android.systemui.recents.events.activity.DismissRecentsToHomeAnimatio
import com.android.systemui.recents.events.activity.EnterRecentsWindowAnimationCompletedEvent;
import com.android.systemui.recents.events.ui.DismissAllTaskViewsEvent;
import com.android.systemui.recents.events.activity.MultiWindowStateChangedEvent;
+import com.android.systemui.recents.events.ui.dragndrop.DragEndCancelledEvent;
+import com.android.systemui.recents.events.ui.dragndrop.DragEndEvent;
+import com.android.systemui.recents.model.TaskStack;
/** Manages the scrims for the various system bars. */
public class SystemBarScrimViews {
@@ -154,10 +157,22 @@ public class SystemBarScrimViews {
animateScrimToCurrentNavBarState(event.stack.getStackTaskCount() > 0);
}
+ public final void onBusEvent(final DragEndEvent event) {
+ // Hide the nav bar scrims once we drop to a dock region
+ if (event.dropTarget instanceof TaskStack.DockState) {
+ animateScrimToCurrentNavBarState(false /* hasStackTasks */);
+ }
+ }
+
+ public final void onBusEvent(final DragEndCancelledEvent event) {
+ // Restore the scrims to the normal state
+ animateScrimToCurrentNavBarState(event.stack.getStackTaskCount() > 0);
+ }
+
/**
* Animates the scrim to match the state of the current nav bar.
*/
- public void animateScrimToCurrentNavBarState(boolean hasStackTasks) {
+ private void animateScrimToCurrentNavBarState(boolean hasStackTasks) {
boolean hasNavBarScrim = isNavBarScrimRequired(hasStackTasks);
if (mHasNavBarScrim != hasNavBarScrim) {
AnimationProps animation = hasNavBarScrim
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
index 773e5875b04f..3d0de1cab1e9 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
@@ -79,6 +79,7 @@ import com.android.systemui.recents.events.ui.UpdateFreeformTaskViewVisibilityEv
import com.android.systemui.recents.events.ui.UserInteractionEvent;
import com.android.systemui.recents.events.ui.dragndrop.DragDropTargetChangedEvent;
import com.android.systemui.recents.events.ui.dragndrop.DragEndEvent;
+import com.android.systemui.recents.events.ui.dragndrop.DragEndCancelledEvent;
import com.android.systemui.recents.events.ui.dragndrop.DragStartEvent;
import com.android.systemui.recents.events.ui.dragndrop.DragStartInitializeDropTargetsEvent;
import com.android.systemui.recents.events.ui.focus.DismissFocusedTaskViewEvent;
@@ -640,19 +641,23 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
}
/**
- * @see #relayoutTaskViews(AnimationProps, boolean)
+ * @see #relayoutTaskViews(AnimationProps, ArrayMap<Task, AnimationProps>, boolean)
*/
public void relayoutTaskViews(AnimationProps animation) {
- relayoutTaskViews(animation, false /* ignoreTaskOverrides */);
+ relayoutTaskViews(animation, null /* animationOverrides */,
+ false /* ignoreTaskOverrides */);
}
/**
* Relayout the the visible {@link TaskView}s to their current transforms as specified by the
* {@link TaskStackLayoutAlgorithm} with the given {@param animation}. This call cancels any
* animations that are current running on those task views, and will ensure that the children
- * {@link TaskView}s will match the set of visible tasks in the stack.
+ * {@link TaskView}s will match the set of visible tasks in the stack. If a {@link Task} has
+ * an animation provided in {@param animationOverrides}, that will be used instead.
*/
- private void relayoutTaskViews(AnimationProps animation, boolean ignoreTaskOverrides) {
+ private void relayoutTaskViews(AnimationProps animation,
+ ArrayMap<Task, AnimationProps> animationOverrides,
+ boolean ignoreTaskOverrides) {
// If we had a deferred animation, cancel that
cancelDeferredTaskViewLayoutAnimation();
@@ -665,13 +670,18 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
int taskViewCount = taskViews.size();
for (int i = 0; i < taskViewCount; i++) {
TaskView tv = taskViews.get(i);
- int taskIndex = mStack.indexOfStackTask(tv.getTask());
+ Task task = tv.getTask();
+ int taskIndex = mStack.indexOfStackTask(task);
TaskViewTransform transform = mCurrentTaskTransforms.get(taskIndex);
- if (mIgnoreTasks.contains(tv.getTask().key)) {
+ if (mIgnoreTasks.contains(task.key)) {
continue;
}
+ if (animationOverrides != null && animationOverrides.containsKey(task)) {
+ animation = animationOverrides.get(task);
+ }
+
updateTaskViewToTransform(tv, transform, animation);
}
}
@@ -829,6 +839,18 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
}
}
+ /**
+ * Updates the stack layout to its stable places.
+ */
+ private void updateLayoutToStableBounds() {
+ mWindowRect.set(mStableWindowRect);
+ mStackBounds.set(mStableStackBounds);
+ mLayoutAlgorithm.setSystemInsets(mStableLayoutAlgorithm.mSystemInsets);
+ mLayoutAlgorithm.initialize(mDisplayRect, mWindowRect, mStackBounds,
+ TaskStackLayoutAlgorithm.StackState.getStackStateForStack(mStack));
+ updateLayoutAlgorithm(true /* boundScroll */);
+ }
+
/** Returns the scroller. */
public TaskStackViewScroller getScroller() {
return mStackScroller;
@@ -1820,16 +1842,11 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
} else {
// Restore the pre-drag task stack bounds, but ensure that we don't layout the dragging
// task view, so add it back to the ignore set after updating the layout
- mWindowRect.set(mStableWindowRect);
- mStackBounds.set(mStableStackBounds);
removeIgnoreTask(event.task);
- mLayoutAlgorithm.setSystemInsets(mStableLayoutAlgorithm.mSystemInsets);
- mLayoutAlgorithm.initialize(mDisplayRect, mWindowRect, mStackBounds,
- TaskStackLayoutAlgorithm.StackState.getStackStateForStack(mStack));
- updateLayoutAlgorithm(true /* boundScroll */);
+ updateLayoutToStableBounds();
addIgnoreTask(event.task);
}
- relayoutTaskViews(animation, ignoreTaskOverrides);
+ relayoutTaskViews(animation, null /* animationOverrides */, ignoreTaskOverrides);
}
public final void onBusEvent(final DragEndEvent event) {
@@ -1867,30 +1884,38 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
});
}
- // We translated the view but we need to animate it back from the current layout-space rect
- // to its final layout-space rect
- int x = (int) event.taskView.getTranslationX();
- int y = (int) event.taskView.getTranslationY();
- Rect taskViewRect = new Rect(event.taskView.getLeft(), event.taskView.getTop(),
- event.taskView.getRight(), event.taskView.getBottom());
- taskViewRect.offset(x, y);
- event.taskView.setTranslationX(0);
- event.taskView.setTranslationY(0);
- event.taskView.setLeftTopRightBottom(taskViewRect.left, taskViewRect.top,
- taskViewRect.right, taskViewRect.bottom);
+ // Restore the task, so that relayout will apply to it below
+ removeIgnoreTask(event.task);
- // Animate the non-drag TaskViews back into position
- mLayoutAlgorithm.getStackTransform(event.task, getScroller().getStackScroll(),
- mTmpTransform, null);
- event.getAnimationTrigger().increment();
- relayoutTaskViews(new AnimationProps(DEFAULT_SYNC_STACK_DURATION,
+ // Convert the dragging task view back to its final layout-space rect
+ Utilities.setViewFrameFromTranslation(event.taskView);
+
+ // Animate all the tasks into place
+ ArrayMap<Task, AnimationProps> animationOverrides = new ArrayMap<>();
+ animationOverrides.put(event.task, new AnimationProps(SLOW_SYNC_STACK_DURATION,
+ Interpolators.FAST_OUT_SLOW_IN,
+ event.getAnimationTrigger().decrementOnAnimationEnd()));
+ relayoutTaskViews(new AnimationProps(SLOW_SYNC_STACK_DURATION,
Interpolators.FAST_OUT_SLOW_IN));
+ event.getAnimationTrigger().increment();
+ }
- // Animate the drag TaskView back into position
- updateTaskViewToTransform(event.taskView, mTmpTransform,
- new AnimationProps(DEFAULT_SYNC_STACK_DURATION, Interpolators.FAST_OUT_SLOW_IN,
- event.getAnimationTrigger().decrementOnAnimationEnd()));
+ public final void onBusEvent(final DragEndCancelledEvent event) {
+ // Restore the pre-drag task stack bounds, including the dragging task view
removeIgnoreTask(event.task);
+ updateLayoutToStableBounds();
+
+ // Convert the dragging task view back to its final layout-space rect
+ Utilities.setViewFrameFromTranslation(event.taskView);
+
+ // Animate all the tasks into place
+ ArrayMap<Task, AnimationProps> animationOverrides = new ArrayMap<>();
+ animationOverrides.put(event.task, new AnimationProps(SLOW_SYNC_STACK_DURATION,
+ Interpolators.FAST_OUT_SLOW_IN,
+ event.getAnimationTrigger().decrementOnAnimationEnd()));
+ relayoutTaskViews(new AnimationProps(SLOW_SYNC_STACK_DURATION,
+ Interpolators.FAST_OUT_SLOW_IN));
+ event.getAnimationTrigger().increment();
}
public final void onBusEvent(IterateRecentsEvent event) {
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java
index c1e7e0403c88..612c41d07a04 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java
@@ -49,6 +49,7 @@ import com.android.systemui.recents.events.EventBus;
import com.android.systemui.recents.events.activity.LaunchTaskEvent;
import com.android.systemui.recents.events.ui.DismissTaskViewEvent;
import com.android.systemui.recents.events.ui.TaskViewDismissedEvent;
+import com.android.systemui.recents.events.ui.dragndrop.DragEndCancelledEvent;
import com.android.systemui.recents.events.ui.dragndrop.DragEndEvent;
import com.android.systemui.recents.events.ui.dragndrop.DragStartEvent;
import com.android.systemui.recents.misc.ReferenceCountedTrigger;
@@ -695,15 +696,18 @@ public class TaskView extends FixedSizeFrameLayout implements Task.TaskCallbacks
public final void onBusEvent(DragEndEvent event) {
if (!(event.dropTarget instanceof TaskStack.DockState)) {
- event.addPostAnimationCallback(new Runnable() {
- @Override
- public void run() {
- // Animate the drag view back from where it is, to the view location, then after
- // it returns, update the clip state
- setClipViewInStack(true);
- }
+ event.addPostAnimationCallback(() -> {
+ // Reset the clip state for the drag view after the end animation completes
+ setClipViewInStack(true);
});
}
EventBus.getDefault().unregister(this);
}
+
+ public final void onBusEvent(DragEndCancelledEvent event) {
+ // Reset the clip state for the drag view after the cancel animation completes
+ event.addPostAnimationCallback(() -> {
+ setClipViewInStack(true);
+ });
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java
index 5d1a61d4bd5d..f017803d4cbf 100644
--- a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java
+++ b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java
@@ -30,6 +30,9 @@ import com.android.systemui.recents.misc.SystemServicesProxy;
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+
/**
* Controls the docked stack divider.
*/
@@ -134,6 +137,13 @@ public class Divider extends SystemUI {
mWindowManager.setTouchable(!mMinimized && !mAdjustedForIme);
}
+ @Override
+ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ pw.print(" mVisible="); pw.println(mVisible);
+ pw.print(" mMinimized="); pw.println(mMinimized);
+ pw.print(" mAdjustedForIme="); pw.println(mAdjustedForIme);
+ }
+
class DockDividerVisibilityListener extends IDockedStackListener.Stub {
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java
index 73797062c4b6..9ba1cc945afa 100644
--- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java
+++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java
@@ -530,16 +530,12 @@ public class DividerView extends FrameLayout implements OnTouchListener,
private ValueAnimator getFlingAnimator(int position, final SnapTarget snapTarget,
final long endDelay) {
+ final boolean taskPositionSameAtEnd = snapTarget.flag == SnapTarget.FLAG_NONE;
ValueAnimator anim = ValueAnimator.ofInt(position, snapTarget.position);
- anim.addUpdateListener(new AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator animation) {
- resizeStack((Integer) animation.getAnimatedValue(),
- animation.getAnimatedFraction() == 1f
- ? TASK_POSITION_SAME
- : snapTarget.position, snapTarget);
- }
- });
+ anim.addUpdateListener(animation -> resizeStack((Integer) animation.getAnimatedValue(),
+ taskPositionSameAtEnd && animation.getAnimatedFraction() == 1f
+ ? TASK_POSITION_SAME
+ : snapTarget.position, snapTarget));
Runnable endAction = () -> {
commitSnapFlags(snapTarget);
mWindowManagerProxy.setResizing(false);
@@ -919,10 +915,10 @@ public class DividerView extends FrameLayout implements OnTouchListener,
private int restrictDismissingTaskPosition(int taskPosition, int dockSide,
SnapTarget snapTarget) {
if (snapTarget.flag == SnapTarget.FLAG_DISMISS_START && dockSideTopLeft(dockSide)) {
- return mSnapAlgorithm.getFirstSplitTarget().position;
+ return Math.max(mSnapAlgorithm.getFirstSplitTarget().position, mStartPosition);
} else if (snapTarget.flag == SnapTarget.FLAG_DISMISS_END
&& dockSideBottomRight(dockSide)) {
- return mSnapAlgorithm.getLastSplitTarget().position;
+ return Math.min(mSnapAlgorithm.getLastSplitTarget().position, mStartPosition);
} else {
return taskPosition;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index be683444fb43..eec20706ea68 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -457,9 +457,17 @@ public abstract class BaseStatusBar extends SystemUI implements
row.setUserExpanded(true);
- if (isLockscreenPublicMode() && !mAllowLockscreenRemoteInput) {
- onLockedRemoteInput(row, view);
- return true;
+ if (!mAllowLockscreenRemoteInput) {
+ if (isLockscreenPublicMode()) {
+ onLockedRemoteInput(row, view);
+ return true;
+ }
+ final int userId = pendingIntent.getCreatorUserHandle().getIdentifier();
+ if (mUserManager.getUserInfo(userId).isManagedProfile()
+ && mKeyguardManager.isDeviceLocked(userId)) {
+ onLockedWorkRemoteInput(userId, row, view);
+ return true;
+ }
}
riv.setVisibility(View.VISIBLE);
@@ -540,16 +548,21 @@ public abstract class BaseStatusBar extends SystemUI implements
} else if (WORK_CHALLENGE_UNLOCKED_NOTIFICATION_ACTION.equals(action)) {
final IntentSender intentSender = intent.getParcelableExtra(Intent.EXTRA_INTENT);
final String notificationKey = intent.getStringExtra(Intent.EXTRA_INDEX);
- try {
- mContext.startIntentSender(intentSender, null, 0, 0, 0);
- } catch (IntentSender.SendIntentException e) {
- /* ignore */
+ if (intentSender != null) {
+ try {
+ mContext.startIntentSender(intentSender, null, 0, 0, 0);
+ } catch (IntentSender.SendIntentException e) {
+ /* ignore */
+ }
}
- try {
- mBarService.onNotificationClick(notificationKey);
- } catch (RemoteException e) {
- /* ignore */
+ if (notificationKey != null) {
+ try {
+ mBarService.onNotificationClick(notificationKey);
+ } catch (RemoteException e) {
+ /* ignore */
+ }
}
+ onWorkChallengeUnlocked();
}
}
};
@@ -1389,6 +1402,8 @@ public abstract class BaseStatusBar extends SystemUI implements
return mLockscreenPublicMode;
}
+ protected void onWorkChallengeUnlocked() {}
+
/**
* Has the given user chosen to allow notifications to be shown even when the lockscreen is in
* "public" (secure & locked) mode?
@@ -1498,6 +1513,9 @@ public abstract class BaseStatusBar extends SystemUI implements
protected void onLockedRemoteInput(ExpandableNotificationRow row, View clickedView) {}
+ protected void onLockedWorkRemoteInput(int userId, ExpandableNotificationRow row,
+ View clicked) {}
+
@Override
public void onExpandClicked(Entry clickedEntry, boolean nowExpanded) {
}
@@ -1925,39 +1943,6 @@ public abstract class BaseStatusBar extends SystemUI implements
}, afterKeyguardGone);
}
- public boolean startWorkChallengeIfNecessary(int userId, IntentSender intendSender,
- String notificationKey) {
- final Intent newIntent = mKeyguardManager.createConfirmDeviceCredentialIntent(null,
- null, userId);
- if (newIntent == null) {
- return false;
- }
- final Intent callBackIntent = new Intent(
- WORK_CHALLENGE_UNLOCKED_NOTIFICATION_ACTION);
- callBackIntent.putExtra(Intent.EXTRA_INTENT, intendSender);
- callBackIntent.putExtra(Intent.EXTRA_INDEX, notificationKey);
- callBackIntent.setPackage(mContext.getPackageName());
-
- PendingIntent callBackPendingIntent = PendingIntent.getBroadcast(
- mContext,
- 0,
- callBackIntent,
- PendingIntent.FLAG_CANCEL_CURRENT |
- PendingIntent.FLAG_ONE_SHOT |
- PendingIntent.FLAG_IMMUTABLE
- );
- newIntent.putExtra(
- Intent.EXTRA_INTENT,
- callBackPendingIntent.getIntentSender()
- );
- try {
- ActivityManagerNative.getDefault().startConfirmDeviceCredentialIntent(newIntent);
- } catch (RemoteException ex) {
- // ignore
- }
- return true;
- }
-
public void register(ExpandableNotificationRow row, StatusBarNotification sbn) {
Notification notification = sbn.getNotification();
if (notification.contentIntent != null || notification.fullScreenIntent != null) {
@@ -1984,6 +1969,37 @@ public abstract class BaseStatusBar extends SystemUI implements
}
}
+ protected boolean startWorkChallengeIfNecessary(int userId, IntentSender intendSender,
+ String notificationKey) {
+ final Intent newIntent = mKeyguardManager.createConfirmDeviceCredentialIntent(null,
+ null, userId);
+ if (newIntent == null) {
+ return false;
+ }
+ final Intent callBackIntent = new Intent(
+ WORK_CHALLENGE_UNLOCKED_NOTIFICATION_ACTION);
+ callBackIntent.putExtra(Intent.EXTRA_INTENT, intendSender);
+ callBackIntent.putExtra(Intent.EXTRA_INDEX, notificationKey);
+ callBackIntent.setPackage(mContext.getPackageName());
+
+ PendingIntent callBackPendingIntent = PendingIntent.getBroadcast(
+ mContext,
+ 0,
+ callBackIntent,
+ PendingIntent.FLAG_CANCEL_CURRENT |
+ PendingIntent.FLAG_ONE_SHOT |
+ PendingIntent.FLAG_IMMUTABLE);
+ newIntent.putExtra(
+ Intent.EXTRA_INTENT,
+ callBackPendingIntent.getIntentSender());
+ try {
+ ActivityManagerNative.getDefault().startConfirmDeviceCredentialIntent(newIntent);
+ } catch (RemoteException ex) {
+ // ignore
+ }
+ return true;
+ }
+
protected Bundle getActivityOptions() {
// Anything launched from the notification shade should always go into the
// fullscreen stack.
@@ -2161,7 +2177,8 @@ public abstract class BaseStatusBar extends SystemUI implements
entry.row.setOnKeyguard(false);
entry.row.setSystemExpanded(visibleNotifications == 0 && !childNotification);
}
- boolean suppressedSummary = mGroupManager.isSummaryOfSuppressedGroup(entry.notification);
+ boolean suppressedSummary = mGroupManager.isSummaryOfSuppressedGroup(
+ entry.notification) && !entry.row.isRemoved();
boolean childWithVisibleSummary = childNotification
&& mGroupManager.getGroupSummary(entry.notification).getVisibility()
== View.VISIBLE;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
index 5b16fce925d1..3a1752dda756 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
@@ -156,6 +156,10 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
}
}
};
+ private boolean mForceUnlocked;
+ private boolean mDismissed;
+ private boolean mKeepInParent;
+ private boolean mRemoved;
public NotificationContentView getPrivateLayout() {
return mPrivateLayout;
@@ -451,7 +455,11 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
* @param pinned whether it is pinned
*/
public void setPinned(boolean pinned) {
+ int intrinsicHeight = getIntrinsicHeight();
mIsPinned = pinned;
+ if (intrinsicHeight != getIntrinsicHeight()) {
+ notifyHeightChanged(false);
+ }
if (pinned) {
setIconAnimationRunning(true);
mExpandedWhenPinned = false;
@@ -632,6 +640,9 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
ArrayList<ExpandableNotificationRow> clonedList = new ArrayList<>(notificationChildren);
for (int i = 0; i < clonedList.size(); i++) {
ExpandableNotificationRow row = clonedList.get(i);
+ if (row.keepInParent()) {
+ continue;
+ }
mChildrenContainer.removeNotification(row);
mHeaderUtil.restoreNotificationHeader(row);
row.setIsChildInGroup(false, null);
@@ -639,6 +650,44 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
onChildrenCountChanged();
}
+ public void setForceUnlocked(boolean forceUnlocked) {
+ mForceUnlocked = forceUnlocked;
+ if (mIsSummaryWithChildren) {
+ List<ExpandableNotificationRow> notificationChildren = getNotificationChildren();
+ for (ExpandableNotificationRow child : notificationChildren) {
+ child.setForceUnlocked(forceUnlocked);
+ }
+ }
+ }
+
+ public void setDismissed(boolean dismissed) {
+ mDismissed = dismissed;
+ }
+
+ public boolean isDismissed() {
+ return mDismissed;
+ }
+
+ public boolean keepInParent() {
+ return mKeepInParent;
+ }
+
+ public void setKeepInParent(boolean keepInParent) {
+ mKeepInParent = keepInParent;
+ }
+
+ public boolean isRemoved() {
+ return mRemoved;
+ }
+
+ public void setRemoved(boolean removed) {
+ mRemoved = removed;
+ }
+
+ public NotificationChildrenContainer getChildrenContainer() {
+ return mChildrenContainer;
+ }
+
public interface ExpansionLogger {
public void logNotificationExpansion(String key, boolean userAction, boolean expanded);
}
@@ -983,7 +1032,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
}
public boolean isUserLocked() {
- return mUserLocked;
+ return mUserLocked && !mForceUnlocked;
}
public void setUserLocked(boolean userLocked) {
@@ -1239,6 +1288,14 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
|| !mSensitiveHiddenInGeneral) ? View.VISIBLE : View.GONE);
}
+ public void makeActionsVisibile() {
+ setUserExpanded(true, true);
+ if (isChildInGroup()) {
+ mGroupManager.setGroupExpanded(mStatusBarNotification, true);
+ }
+ notifyHeightChanged(false);
+ }
+
public void setChildrenExpanded(boolean expanded, boolean animate) {
mChildrenExpanded = expanded;
if (mNotificationHeader != null) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
index 6dcd61f259f3..a5d65d210268 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
@@ -44,6 +44,7 @@ public abstract class ExpandableView extends FrameLayout {
private int mMinClipTopAmount = 0;
private boolean mClipToActualHeight = true;
private boolean mChangingPosition = false;
+ private ViewGroup mTransientContainer;
public ExpandableView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -416,6 +417,14 @@ public abstract class ExpandableView extends FrameLayout {
return mChangingPosition;
}
+ public void setTransientContainer(ViewGroup transientContainer) {
+ mTransientContainer = transientContainer;
+ }
+
+ public ViewGroup getTransientContainer() {
+ return mTransientContainer;
+ }
+
/**
* A listener notifying when {@link #getActualHeight} changes.
*/
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
index 5e9a8bc9bc4a..34c9c0de4459 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
@@ -392,6 +392,9 @@ public class NotificationContentView extends FrameLayout {
mVisibleType = visibleType;
updateBackgroundColor(true /* animate */);
}
+ if (mForceSelectNextLayout) {
+ forceUpdateVisibilities();
+ }
if (mTransformationStartVisibleType != UNDEFINED
&& mVisibleType != mTransformationStartVisibleType
&& getViewForVisibleType(mTransformationStartVisibleType) != null) {
@@ -508,9 +511,6 @@ public class NotificationContentView extends FrameLayout {
updateBackgroundColor(animate);
}
}
- if (mForceSelectNextLayout) {
- forceUpdateVisibilities();
- }
}
private void forceUpdateVisibilities() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ExpandableIndicator.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ExpandableIndicator.java
index 3fdc35c90586..a295cfacbbcf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ExpandableIndicator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ExpandableIndicator.java
@@ -34,6 +34,7 @@ public class ExpandableIndicator extends ImageView {
super.onFinishInflate();
final int res = getDrawableResourceId(mExpanded);
setImageResource(res);
+ setContentDescription(getContentDescription(mExpanded));
}
public void setExpanded(boolean expanded) {
@@ -46,6 +47,7 @@ public class ExpandableIndicator extends ImageView {
setImageDrawable(avd);
avd.forceAnimationOnUI();
avd.start();
+ setContentDescription(getContentDescription(expanded));
}
/** Whether the icons are using the default direction or the opposite */
@@ -62,4 +64,9 @@ public class ExpandableIndicator extends ImageView {
: R.drawable.ic_volume_collapse_animation;
}
}
+
+ private String getContentDescription(boolean expanded) {
+ return expanded ? mContext.getString(R.string.accessibility_quick_settings_collapse)
+ : mContext.getString(R.string.accessibility_quick_settings_expand);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpTouchHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpTouchHelper.java
index 33315c58fb4a..bd59fb03d59a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpTouchHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpTouchHelper.java
@@ -103,10 +103,12 @@ public class HeadsUpTouchHelper implements Gefingerpoken {
mInitialTouchX = x;
mInitialTouchY = y;
int expandedHeight = mPickedChild.getActualHeight();
- mHeadsUpManager.unpinAll();
mPanel.setPanelScrimMinFraction((float) expandedHeight
/ mPanel.getMaxPanelHeight());
mPanel.startExpandMotion(x, y, true /* startTracking */, expandedHeight);
+ // This call needs to be after the expansion start otherwise we will get a
+ // flicker of one frame as it's not expanded yet.
+ mHeadsUpManager.unpinAll();
mPanel.clearNotificationEffects();
return true;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java
index 6698d13ab123..0186d3404637 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java
@@ -25,6 +25,9 @@ import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityNodeInfo;
+import android.widget.Button;
import android.widget.FrameLayout;
import com.android.systemui.R;
@@ -150,24 +153,11 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener
}
String text = null;
- if (isClickable()) {
- if (mUserManager.isUserSwitcherEnabled()) {
- if (TextUtils.isEmpty(currentUser)) {
- text = mContext.getString(R.string.accessibility_multi_user_switch_switcher);
- } else {
- text = mContext.getString(
- R.string.accessibility_multi_user_switch_switcher_with_current,
- currentUser);
- }
- } else {
- text = mContext.getString(R.string.accessibility_multi_user_switch_quick_contact);
- }
- } else {
- if (!TextUtils.isEmpty(currentUser)) {
- text = mContext.getString(
- R.string.accessibility_multi_user_switch_inactive,
- currentUser);
- }
+
+ if (!TextUtils.isEmpty(currentUser)) {
+ text = mContext.getString(
+ R.string.accessibility_quick_settings_user,
+ currentUser);
}
if (!TextUtils.equals(getContentDescription(), text)) {
@@ -176,6 +166,18 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener
}
@Override
+ public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
+ super.onInitializeAccessibilityEvent(event);
+ event.setClassName(Button.class.getName());
+ }
+
+ @Override
+ public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
+ super.onInitializeAccessibilityNodeInfo(info);
+ info.setClassName(Button.class.getName());
+ }
+
+ @Override
public boolean hasOverlappingRendering() {
return false;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java
index ec45d604b829..ee4a10293760 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java
@@ -282,6 +282,12 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi
final int indexOfKey = mButtonDispatchers.indexOfKey(v.getId());
if (indexOfKey >= 0) {
mButtonDispatchers.valueAt(indexOfKey).addView(v);
+ } else if (v instanceof ViewGroup) {
+ final ViewGroup viewGroup = (ViewGroup)v;
+ final int N = viewGroup.getChildCount();
+ for (int i = 0; i < N; i++) {
+ addToDispatchers(viewGroup.getChildAt(i));
+ }
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
index fffb20a7425c..a51ee4df7ec3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
@@ -241,6 +241,12 @@ public class NotificationGroupManager implements HeadsUpManager.OnHeadsUpChanged
if (group == null || group.summary == null || group.suppressed) {
return false;
}
+ if (group.children.isEmpty()) {
+ // If the suppression of a group changes because the last child was removed, this can
+ // still be called temporarily because the child hasn't been fully removed yet. Let's
+ // make sure we still return false in that case.
+ return false;
+ }
return true;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
index 7c70e22c5302..e4aa10361e87 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
@@ -362,6 +362,7 @@ public abstract class PanelView extends FrameLayout {
mInitialTouchX = newX;
if (startTracking) {
mTouchSlopExceeded = true;
+ setExpandedHeight(mInitialOffsetOnTouch);
onTrackingStarted();
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 57c012b24e5d..20809ea3a076 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -32,6 +32,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.IntentSender;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
@@ -89,6 +90,7 @@ import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewParent;
import android.view.ViewStub;
+import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.view.WindowManagerGlobal;
import android.view.animation.AccelerateInterpolator;
@@ -348,6 +350,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
// RemoteInputView to be activated after unlock
private View mPendingRemoteInputView;
+ private View mPendingWorkRemoteInputView;
int mMaxAllowedKeyguardNotifications;
@@ -971,6 +974,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
inflateEmptyShadeView();
updateEmptyShadeView();
inflateOverflowContainer();
+ mStatusBarKeyguardViewManager.onDensityOrFontScaleChanged();
}
private void inflateSignalClusters() {
@@ -1492,6 +1496,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mHeadsUpEntriesToRemoveOnSwitch.add(mHeadsUpManager.getEntry(key));
return;
}
+ // Let's remove the children if this was a summary
+ handleGroupSummaryRemoved(key, ranking);
StatusBarNotification old = removeNotificationViews(key, ranking);
if (SPEW) Log.d(TAG, "removeNotification key=" + key + " old=" + old);
@@ -1508,6 +1514,40 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
setAreThereNotifications();
}
+ /**
+ * Ensures that the group children are cancelled immediately when the group summary is cancelled
+ * instead of waiting for the notification manager to send all cancels. Otherwise this could
+ * lead to flickers.
+ *
+ * This also ensures that the animation looks nice and only consists of a single disappear
+ * animation instead of multiple.
+ *
+ * @param key the key of the notification was removed
+ * @param ranking the current ranking
+ */
+ private void handleGroupSummaryRemoved(String key,
+ RankingMap ranking) {
+ Entry entry = mNotificationData.get(key);
+ if (entry != null && entry.row != null
+ && entry.row.isSummaryWithChildren()) {
+ if (entry.notification.getOverrideGroupKey() != null && !entry.row.isDismissed()) {
+ // We don't want to remove children for autobundled notifications as they are not
+ // always cancelled. We only remove them if they were dismissed by the user.
+ return;
+ }
+ entry.row.setRemoved(true);
+ List<ExpandableNotificationRow> notificationChildren =
+ entry.row.getNotificationChildren();
+ ArrayList<ExpandableNotificationRow> toRemove = new ArrayList<>(notificationChildren);
+ for (int i = 0; i < toRemove.size(); i++) {
+ toRemove.get(i).setKeepInParent(true);
+ }
+ for (int i = 0; i < toRemove.size(); i++) {
+ removeNotification(toRemove.get(i).getStatusBarNotification().getKey(), ranking);
+ }
+ }
+ }
+
@Override
protected void refreshLayout(int layoutDirection) {
if (mNavigationBarView != null) {
@@ -1697,7 +1737,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
if (children != null) {
toRemove.clear();
for (ExpandableNotificationRow childRow : children) {
- if (orderedChildren == null || !orderedChildren.contains(childRow)) {
+ if ((orderedChildren == null
+ || !orderedChildren.contains(childRow))
+ && !childRow.keepInParent()) {
toRemove.add(childRow);
}
}
@@ -1706,7 +1748,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
if (mNotificationData.get(remove.getStatusBarNotification().getKey()) == null) {
// We only want to add an animation if the view is completely removed
// otherwise it's just a transfer
- mStackScroller.notifyGroupChildRemoved(remove);
+ mStackScroller.notifyGroupChildRemoved(remove,
+ parent.getChildrenContainer());
}
}
}
@@ -4301,6 +4344,92 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
@Override
+ protected boolean startWorkChallengeIfNecessary(int userId, IntentSender intendSender,
+ String notificationKey) {
+ // Clear pending remote view, as we do not want to trigger pending remote input view when
+ // it's called by other code
+ mPendingWorkRemoteInputView = null;
+ return super.startWorkChallengeIfNecessary(userId, intendSender, notificationKey);
+ }
+
+ @Override
+ protected void onLockedWorkRemoteInput(int userId, ExpandableNotificationRow row,
+ View clicked) {
+ // Collapse notification and show work challenge
+ animateCollapsePanels();
+ startWorkChallengeIfNecessary(userId, null, null);
+ // Add pending remote input view after starting work challenge, as starting work challenge
+ // will clear all previous pending review view
+ mPendingWorkRemoteInputView = clicked;
+ }
+
+ @Override
+ protected void onWorkChallengeUnlocked() {
+ if (mPendingWorkRemoteInputView != null) {
+ final View pendingWorkRemoteInputView = mPendingWorkRemoteInputView;
+ // Expand notification panel and the notification row, then click on remote input view
+ final Runnable clickPendingViewRunnable = new Runnable() {
+ @Override
+ public void run() {
+ if (mPendingWorkRemoteInputView != null) {
+ final View pendingWorkRemoteInputView = mPendingWorkRemoteInputView;
+ ViewParent p = pendingWorkRemoteInputView.getParent();
+ while (p != null) {
+ if (p instanceof ExpandableNotificationRow) {
+ final ExpandableNotificationRow row = (ExpandableNotificationRow) p;
+ ViewParent viewParent = row.getParent();
+ if (viewParent instanceof NotificationStackScrollLayout) {
+ final NotificationStackScrollLayout scrollLayout =
+ (NotificationStackScrollLayout) viewParent;
+ row.makeActionsVisibile();
+ row.post(new Runnable() {
+ @Override
+ public void run() {
+ final Runnable finishScrollingCallback = new Runnable()
+ {
+ @Override
+ public void run() {
+ mPendingWorkRemoteInputView.callOnClick();
+ mPendingWorkRemoteInputView = null;
+ scrollLayout.setFinishScrollingCallback(null);
+ }
+ };
+ if (scrollLayout.scrollTo(row)) {
+ // It scrolls! So call it when it's finished.
+ scrollLayout.setFinishScrollingCallback(
+ finishScrollingCallback);
+ } else {
+ // It does not scroll, so call it now!
+ finishScrollingCallback.run();
+ }
+ }
+ });
+ }
+ break;
+ }
+ p = p.getParent();
+ }
+ }
+ }
+ };
+ mNotificationPanel.getViewTreeObserver().addOnGlobalLayoutListener(
+ new ViewTreeObserver.OnGlobalLayoutListener() {
+ @Override
+ public void onGlobalLayout() {
+ if (mNotificationPanel.mStatusBar.getStatusBarWindow()
+ .getHeight() != mNotificationPanel.mStatusBar
+ .getStatusBarHeight()) {
+ mNotificationPanel.getViewTreeObserver()
+ .removeOnGlobalLayoutListener(this);
+ mNotificationPanel.post(clickPendingViewRunnable);
+ }
+ }
+ });
+ instantExpandNotificationsPanel();
+ }
+ }
+
+ @Override
public void onExpandClicked(Entry clickedEntry, boolean nowExpanded) {
mHeadsUpManager.setExpanded(clickedEntry, nowExpanded);
if (mState == StatusBarState.KEYGUARD && nowExpanded) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
index b8e069d3fe5b..d6deba06d4da 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
@@ -57,7 +57,7 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements
protected View mSettingsContainer;
private TextView mAlarmStatus;
- private TextView mAlarmStatusCollapsed;
+ private View mAlarmStatusCollapsed;
private QSPanel mQsPanel;
@@ -117,7 +117,7 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements
mSettingsContainer = findViewById(R.id.settings_button_container);
mSettingsButton.setOnClickListener(this);
- mAlarmStatusCollapsed = (TextView) findViewById(R.id.alarm_status_collapsed);
+ mAlarmStatusCollapsed = findViewById(R.id.alarm_status_collapsed);
mAlarmStatus = (TextView) findViewById(R.id.alarm_status);
mAlarmStatus.setOnClickListener(this);
@@ -224,7 +224,12 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements
public void onNextAlarmChanged(AlarmManager.AlarmClockInfo nextAlarm) {
mNextAlarm = nextAlarm;
if (nextAlarm != null) {
- mAlarmStatus.setText(KeyguardStatusView.formatNextAlarm(getContext(), nextAlarm));
+ String alarmString = KeyguardStatusView.formatNextAlarm(getContext(), nextAlarm);
+ mAlarmStatus.setText(alarmString);
+ mAlarmStatus.setContentDescription(mContext.getString(
+ R.string.accessibility_quick_settings_alarm, alarmString));
+ mAlarmStatusCollapsed.setContentDescription(mContext.getString(
+ R.string.accessibility_quick_settings_alarm, alarmString));
}
if (mAlarmShowing != (nextAlarm != null)) {
mAlarmShowing = nextAlarm != null;
@@ -281,16 +286,18 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements
public void updateEverything() {
updateDateTimePosition();
updateVisibilities();
+ setClickable(false);
}
protected void updateVisibilities() {
updateAlarmVisibilities();
mEmergencyOnly.setVisibility(mExpanded && mShowEmergencyCallsOnly
? View.VISIBLE : View.INVISIBLE);
+ mSettingsContainer.setVisibility(mExpanded ? View.VISIBLE : View.INVISIBLE);
mSettingsContainer.findViewById(R.id.tuner_icon).setVisibility(
TunerService.isTunerEnabled(mContext) ? View.VISIBLE : View.INVISIBLE);
- mMultiUserSwitch.setVisibility(mMultiUserSwitch.hasMultipleUsers() ? View.VISIBLE
- : View.GONE);
+ mMultiUserSwitch.setVisibility(mExpanded && mMultiUserSwitch.hasMultipleUsers()
+ ? View.VISIBLE : View.INVISIBLE);
}
private void updateListeners() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
index cf5277f26535..eae0b8e47614 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -91,6 +91,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
private boolean mSkipFirstFrame;
private boolean mDontAnimateBouncerChanges;
private boolean mKeyguardFadingOutInProgress;
+ private ValueAnimator mKeyguardFadeoutAnimation;
public ScrimController(ScrimView scrimBehind, ScrimView scrimInFront, View headsUpScrim) {
mScrimBehind = scrimBehind;
@@ -135,6 +136,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
if (mPinnedHeadsUpCount != 0) {
updateHeadsUpScrim(false);
}
+ if (mKeyguardFadeoutAnimation != null) {
+ mKeyguardFadeoutAnimation.cancel();
+ }
}
}
@@ -344,6 +348,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
if (mOnAnimationFinished != null) {
mOnAnimationFinished.run();
mOnAnimationFinished = null;
+ }
+ if (mKeyguardFadingOutInProgress) {
+ mKeyguardFadeoutAnimation = null;
mKeyguardFadingOutInProgress = false;
}
scrim.setTag(TAG_KEY_ANIM, null);
@@ -353,6 +360,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
anim.start();
if (mAnimateKeyguardFadingOut) {
mKeyguardFadingOutInProgress = true;
+ mKeyguardFadeoutAnimation = anim;
}
if (mSkipFirstFrame) {
anim.setCurrentPlayTime(16);
@@ -384,10 +392,11 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
private void endAnimateKeyguardFadingOut(boolean force) {
mAnimateKeyguardFadingOut = false;
- if ((force || (!isAnimating(mScrimInFront) && !isAnimating(mScrimBehind)))
- && mOnAnimationFinished != null) {
- mOnAnimationFinished.run();
- mOnAnimationFinished = null;
+ if (force || (!isAnimating(mScrimInFront) && !isAnimating(mScrimBehind))) {
+ if (mOnAnimationFinished != null) {
+ mOnAnimationFinished.run();
+ mOnAnimationFinished = null;
+ }
mKeyguardFadingOutInProgress = false;
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index dcad75aff116..8d0d9cb27cea 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -349,6 +349,10 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
}
}
+ public void onDensityOrFontScaleChanged() {
+ mBouncer.hide(true /* destroyView */);
+ }
+
private void animateScrimControllerKeyguardFadingOut(long delay, long duration,
boolean skipFirstFrame) {
animateScrimControllerKeyguardFadingOut(delay, duration, null /* endRunnable */,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DataSaverController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DataSaverController.java
index e6e189f0ffd8..0bca241c8842 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DataSaverController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DataSaverController.java
@@ -91,6 +91,10 @@ public class DataSaverController {
}
@Override
+ public void onRestrictPowerChanged(boolean restrictPower) {
+ }
+
+ @Override
public void onRestrictBackgroundWhitelistChanged(int uid, boolean whitelisted) {
}
};
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 a6ed04f46c95..b890a3006e56 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
@@ -30,6 +30,8 @@ import com.android.settingslib.wifi.WifiStatusTracker;
import com.android.systemui.statusbar.policy.NetworkController.IconState;
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
+import com.android.systemui.R;
+
import java.util.Objects;
@@ -80,6 +82,10 @@ public class WifiSignalController extends
String wifiDesc = wifiVisible ? mCurrentState.ssid : null;
boolean ssidPresent = wifiVisible && mCurrentState.ssid != null;
String contentDescription = getStringIfExists(getContentDescription());
+ if (mCurrentState.inetCondition == 0) {
+ contentDescription +=
+ ("," + mContext.getString(R.string.accessibility_quick_settings_no_internet));
+ }
IconState statusIcon = new IconState(wifiVisible, getCurrentIconId(), contentDescription);
IconState qsIcon = new IconState(mCurrentState.connected, getQsCurrentIconId(),
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
index 0a4dce8b1f22..80eec7ee6fd1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
@@ -36,8 +36,10 @@ import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.os.Handler;
import android.util.AttributeSet;
+import android.util.FloatProperty;
import android.util.Log;
import android.util.Pair;
+import android.util.Property;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
@@ -94,7 +96,6 @@ public class NotificationStackScrollLayout extends ViewGroup
private static final float RUBBER_BAND_FACTOR_NORMAL = 0.35f;
private static final float RUBBER_BAND_FACTOR_AFTER_EXPAND = 0.15f;
private static final float RUBBER_BAND_FACTOR_ON_PANEL_EXPAND = 0.21f;
-
/**
* Sentinel value for no current active pointer. Used by {@link #mActivePointerId}.
*/
@@ -116,6 +117,7 @@ public class NotificationStackScrollLayout extends ViewGroup
private VelocityTracker mVelocityTracker;
private OverScroller mScroller;
+ private Runnable mFinishScrollingCallback;
private int mTouchSlop;
private int mMinimumVelocity;
private int mMaximumVelocity;
@@ -331,6 +333,20 @@ public class NotificationStackScrollLayout extends ViewGroup
private boolean mPulsing;
private boolean mDrawBackgroundAsSrc;
private boolean mFadedOut;
+ private boolean mGroupExpandedForMeasure;
+ private float mBackgroundFadeAmount = 1.0f;
+ private static final Property<NotificationStackScrollLayout, Float> BACKGROUND_FADE =
+ new FloatProperty<NotificationStackScrollLayout>("backgroundFade") {
+ @Override
+ public void setValue(NotificationStackScrollLayout object, float value) {
+ object.setBackgroundFadeAmount(value);
+ }
+
+ @Override
+ public Float get(NotificationStackScrollLayout object) {
+ return object.getBackgroundFadeAmount();
+ }
+ };
public NotificationStackScrollLayout(Context context) {
this(context, null);
@@ -406,14 +422,18 @@ public class NotificationStackScrollLayout extends ViewGroup
private void updateBackgroundDimming() {
float alpha = BACKGROUND_ALPHA_DIMMED + (1 - BACKGROUND_ALPHA_DIMMED) * (1.0f - mDimAmount);
+ alpha *= mBackgroundFadeAmount;
// We need to manually blend in the background color
int scrimColor = mScrimController.getScrimBehindColor();
// SRC_OVER blending Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc
float alphaInv = 1 - alpha;
int color = Color.argb((int) (alpha * 255 + alphaInv * Color.alpha(scrimColor)),
- (int) (Color.red(mBgColor) + alphaInv * Color.red(scrimColor)),
- (int) (Color.green(mBgColor) + alphaInv * Color.green(scrimColor)),
- (int) (Color.blue(mBgColor) + alphaInv * Color.blue(scrimColor)));
+ (int) (mBackgroundFadeAmount * Color.red(mBgColor)
+ + alphaInv * Color.red(scrimColor)),
+ (int) (mBackgroundFadeAmount * Color.green(mBgColor)
+ + alphaInv * Color.green(scrimColor)),
+ (int) (mBackgroundFadeAmount * Color.blue(mBgColor)
+ + alphaInv * Color.blue(scrimColor)));
mBackgroundPaint.setColor(color);
invalidate();
}
@@ -687,6 +707,17 @@ public class NotificationStackScrollLayout extends ViewGroup
}
public void onChildDismissed(View v) {
+ ExpandableNotificationRow row = (ExpandableNotificationRow) v;
+ if (!row.isDismissed()) {
+ handleChildDismissed(v);
+ }
+ ViewGroup transientContainer = row.getTransientContainer();
+ if (transientContainer != null) {
+ transientContainer.removeTransientView(v);
+ }
+ }
+
+ private void handleChildDismissed(View v) {
if (mDismissAllInProgress) {
return;
}
@@ -724,6 +755,7 @@ public class NotificationStackScrollLayout extends ViewGroup
performDismiss(groupSummary);
}
}
+ row.setDismissed(true);
}
final View veto = v.findViewById(R.id.veto);
if (veto != null && veto.getVisibility() != View.GONE) {
@@ -918,21 +950,47 @@ public class NotificationStackScrollLayout extends ViewGroup
}
}
+ @Override
+ public int getMaxExpandHeight(ExpandableView view) {
+ int maxContentHeight = view.getMaxContentHeight();
+ if (view.isSummaryWithChildren()) {
+ // Faking a measure with the group expanded to simulate how the group would look if
+ // it was. Doing a calculation here would be highly non-trivial because of the
+ // algorithm
+ mGroupExpandedForMeasure = true;
+ ExpandableNotificationRow row = (ExpandableNotificationRow) view;
+ mGroupManager.toggleGroupExpansion(row.getStatusBarNotification());
+ row.setForceUnlocked(true);
+ mAmbientState.setLayoutHeight(mMaxLayoutHeight);
+ mStackScrollAlgorithm.getStackScrollState(mAmbientState, mCurrentStackScrollState);
+ mAmbientState.setLayoutHeight(getLayoutHeight());
+ mGroupManager.toggleGroupExpansion(
+ row.getStatusBarNotification());
+ mGroupExpandedForMeasure = false;
+ row.setForceUnlocked(false);
+ int height = mCurrentStackScrollState.getViewStateForView(view).height;
+ return Math.min(height, maxContentHeight);
+ }
+ return maxContentHeight;
+ }
+
public void setScrollingEnabled(boolean enable) {
mScrollingEnabled = enable;
}
- public void scrollTo(View v) {
+ public boolean scrollTo(View v) {
ExpandableView expandableView = (ExpandableView) v;
int positionInLinearLayout = getPositionInLinearLayout(v);
-
- int targetScroll = positionInLinearLayout + expandableView.getActualHeight() +
+ int targetScroll = positionInLinearLayout + expandableView.getIntrinsicHeight() +
getImeInset() - getHeight() + getTopPadding();
+
if (mOwnScrollY < targetScroll) {
mScroller.startScroll(mScrollX, mOwnScrollY, 0, targetScroll - mOwnScrollY);
mDontReportNextOverScroll = true;
postInvalidateOnAnimation();
+ return true;
}
+ return false;
}
@Override
@@ -1291,6 +1349,10 @@ public class NotificationStackScrollLayout extends ViewGroup
}
}
+ public void setFinishScrollingCallback(Runnable runnable) {
+ mFinishScrollingCallback = runnable;
+ }
+
@Override
public void computeScroll() {
if (mScroller.computeScrollOffset()) {
@@ -1321,6 +1383,9 @@ public class NotificationStackScrollLayout extends ViewGroup
postInvalidateOnAnimation();
} else {
mDontClampNextScroll = false;
+ if (mFinishScrollingCallback != null) {
+ mFinishScrollingCallback.run();
+ }
}
}
@@ -1538,6 +1603,24 @@ public class NotificationStackScrollLayout extends ViewGroup
}
/**
+ * @return the child before the given view which has visibility unequal to GONE
+ */
+ public ExpandableView getViewBeforeView(ExpandableView view) {
+ ExpandableView previousView = null;
+ int childCount = getChildCount();
+ for (int i = 0; i < childCount; i++) {
+ View child = getChildAt(i);
+ if (child == view) {
+ return previousView;
+ }
+ if (child.getVisibility() != View.GONE) {
+ previousView = (ExpandableView) child;
+ }
+ }
+ return null;
+ }
+
+ /**
* @return The first child which has visibility unequal to GONE which is currently below the
* given translationY or equal to it.
*/
@@ -1581,14 +1664,6 @@ public class NotificationStackScrollLayout extends ViewGroup
return count;
}
- private int getMaxExpandHeight(View view) {
- if (view instanceof ExpandableNotificationRow) {
- ExpandableNotificationRow row = (ExpandableNotificationRow) view;
- return row.getIntrinsicHeight();
- }
- return view.getHeight();
- }
-
public int getContentHeight() {
return mContentHeight;
}
@@ -2061,7 +2136,7 @@ public class NotificationStackScrollLayout extends ViewGroup
// we only call our internal methods if this is actually a removal and not just a
// notification which becomes a child notification
if (!mChildTransferInProgress) {
- onViewRemovedInternal(child);
+ onViewRemovedInternal(child, this);
}
}
@@ -2073,24 +2148,30 @@ public class NotificationStackScrollLayout extends ViewGroup
}
}
- private void onViewRemovedInternal(View child) {
+ private void onViewRemovedInternal(View child, ViewGroup transientContainer) {
if (mChangePositionInProgress) {
// This is only a position change, don't do anything special
return;
}
- ((ExpandableView) child).setOnHeightChangedListener(null);
+ ExpandableView expandableView = (ExpandableView) child;
+ expandableView.setOnHeightChangedListener(null);
mCurrentStackScrollState.removeViewStateForView(child);
- updateScrollStateForRemovedChild((ExpandableView) child);
+ updateScrollStateForRemovedChild(expandableView);
boolean animationGenerated = generateRemoveAnimation(child);
- if (animationGenerated && !mSwipedOutViews.contains(child)) {
- // Add this view to an overlay in order to ensure that it will still be temporary
- // drawn when removed
- getOverlay().add(child);
+ if (animationGenerated) {
+ if (!mSwipedOutViews.contains(child)) {
+ getOverlay().add(child);
+ } else if (Math.abs(expandableView.getTranslation()) != expandableView.getWidth()) {
+ transientContainer.addTransientView(child, 0);
+ expandableView.setTransientContainer(transientContainer);
+ }
+ } else {
+ mSwipedOutViews.remove(child);
}
updateAnimationState(false, child);
// Make sure the clipRect we might have set is removed
- ((ExpandableView) child).setClipTopOptimization(0);
+ expandableView.setClipTopOptimization(0);
}
private boolean isChildInGroup(View child) {
@@ -2267,8 +2348,8 @@ public class NotificationStackScrollLayout extends ViewGroup
}
}
- public void notifyGroupChildRemoved(View row) {
- onViewRemovedInternal(row);
+ public void notifyGroupChildRemoved(View row, ViewGroup childrenContainer) {
+ onViewRemovedInternal(row, childrenContainer);
}
public void notifyGroupChildAdded(View row) {
@@ -2475,8 +2556,8 @@ public class NotificationStackScrollLayout extends ViewGroup
// we need to know the view after this one
event.viewAfterChangingView = getFirstChildBelowTranlsationY(child.getTranslationY());
mAnimationEvents.add(event);
+ mSwipedOutViews.remove(child);
}
- mSwipedOutViews.clear();
mChildrenToRemoveAnimated.clear();
}
@@ -2553,6 +2634,7 @@ public class NotificationStackScrollLayout extends ViewGroup
AnimationEvent ev = new AnimationEvent(null, AnimationEvent.ANIMATION_TYPE_DARK);
ev.darkAnimationOriginIndex = mDarkAnimationOriginIndex;
mAnimationEvents.add(ev);
+ startBackgroundFadeIn();
}
mDarkNeedsAnimation = false;
}
@@ -2754,11 +2836,25 @@ public class NotificationStackScrollLayout extends ViewGroup
mOwnScrollY = 0;
mPhoneStatusBar.resetUserExpandedStates();
- // lets make sure nothing is in the overlay anymore
+ // lets make sure nothing is in the overlay / transient anymore
+ clearTransientViews(this);
+ for (int i = 0; i < getChildCount(); i++) {
+ ExpandableView child = (ExpandableView) getChildAt(i);
+ if (child instanceof ExpandableNotificationRow) {
+ ExpandableNotificationRow row = (ExpandableNotificationRow) child;
+ clearTransientViews(row.getChildrenContainer());
+ }
+ }
getOverlay().clear();
}
}
+ private void clearTransientViews(ViewGroup viewGroup) {
+ while (viewGroup != null && viewGroup.getTransientViewCount() != 0) {
+ viewGroup.removeTransientView(getTransientView(0));
+ }
+ }
+
public void onPanelTrackingStarted() {
mPanelTracking = true;
}
@@ -2844,8 +2940,7 @@ public class NotificationStackScrollLayout extends ViewGroup
if (row.isChildInGroup()) {
endPosition += row.getNotificationParent().getTranslationY();
}
- int stackEnd = mMaxLayoutHeight - mBottomStackPeekSize -
- mBottomStackSlowDownHeight + (int) mStackTranslation;
+ int stackEnd = getStackEndPosition();
if (endPosition > stackEnd) {
mOwnScrollY += endPosition - stackEnd;
mDisallowScrollingInThisMotion = true;
@@ -2854,6 +2949,11 @@ public class NotificationStackScrollLayout extends ViewGroup
}
}
+ private int getStackEndPosition() {
+ return mMaxLayoutHeight - mBottomStackPeekSize - mBottomStackSlowDownHeight
+ + mPaddingBetweenElements + (int) mStackTranslation;
+ }
+
public void setOnHeightChangedListener(
ExpandableView.OnHeightChangedListener mOnHeightChangedListener) {
this.mOnHeightChangedListener = mOnHeightChangedListener;
@@ -3039,6 +3139,9 @@ public class NotificationStackScrollLayout extends ViewGroup
mDarkNeedsAnimation = true;
mDarkAnimationOriginIndex = findDarkAnimationOriginIndex(touchWakeUpScreenLocation);
mNeedsAnimation = true;
+ setBackgroundFadeAmount(0.0f);
+ } else if (!dark) {
+ setBackgroundFadeAmount(1.0f);
}
requestChildrenUpdate();
if (dark) {
@@ -3047,10 +3150,35 @@ public class NotificationStackScrollLayout extends ViewGroup
} else {
updateBackground();
setWillNotDraw(false);
- // TODO: fade in background
}
}
+ private void setBackgroundFadeAmount(float fadeAmount) {
+ mBackgroundFadeAmount = fadeAmount;
+ updateBackgroundDimming();
+ }
+
+ public float getBackgroundFadeAmount() {
+ return mBackgroundFadeAmount;
+ }
+
+ private void startBackgroundFadeIn() {
+ ObjectAnimator fadeAnimator = ObjectAnimator.ofFloat(this, BACKGROUND_FADE, 0f, 1f);
+ int maxLength;
+ if (mDarkAnimationOriginIndex == AnimationEvent.DARK_ANIMATION_ORIGIN_INDEX_ABOVE
+ || mDarkAnimationOriginIndex == AnimationEvent.DARK_ANIMATION_ORIGIN_INDEX_BELOW) {
+ maxLength = getNotGoneChildCount() - 1;
+ } else {
+ maxLength = Math.max(mDarkAnimationOriginIndex,
+ getNotGoneChildCount() - mDarkAnimationOriginIndex - 1);
+ }
+ long delay = maxLength * StackStateAnimator.ANIMATION_DELAY_PER_ELEMENT_DARK;
+ fadeAnimator.setStartDelay(delay);
+ fadeAnimator.setDuration(StackStateAnimator.ANIMATION_DURATION_STANDARD);
+ fadeAnimator.setInterpolator(Interpolators.ALPHA_IN);
+ fadeAnimator.start();
+ }
+
private int findDarkAnimationOriginIndex(@Nullable PointF screenLocation) {
if (screenLocation == null || screenLocation.y < mTopPadding + mTopPaddingOverflow) {
return AnimationEvent.DARK_ANIMATION_ORIGIN_INDEX_ABOVE;
@@ -3334,13 +3462,16 @@ public class NotificationStackScrollLayout extends ViewGroup
@Override
public void onGroupExpansionChanged(ExpandableNotificationRow changedRow, boolean expanded) {
- boolean animated = mAnimationsEnabled && (mIsExpanded || changedRow.isPinned());
+ boolean animated = !mGroupExpandedForMeasure && mAnimationsEnabled
+ && (mIsExpanded || changedRow.isPinned());
if (animated) {
mExpandedGroupView = changedRow;
mNeedsAnimation = true;
}
changedRow.setChildrenExpanded(expanded, animated);
- onHeightChanged(changedRow, false /* needsAnimation */);
+ if (!mGroupExpandedForMeasure) {
+ onHeightChanged(changedRow, false /* needsAnimation */);
+ }
}
@Override
@@ -3581,6 +3712,11 @@ public class NotificationStackScrollLayout extends ViewGroup
public void dismissChild(final View view, float velocity,
boolean useAccelerateInterpolator) {
super.dismissChild(view, velocity, useAccelerateInterpolator);
+ if (mIsExpanded) {
+ // We don't want to quick-dismiss when it's a heads up as this might lead to closing
+ // of the panel early.
+ handleChildDismissed(view);
+ }
handleGearCoveredOrDismissed();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/ScrollContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/ScrollContainer.java
index 64efa697de71..17b7871bbfe0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/ScrollContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/ScrollContainer.java
@@ -31,8 +31,9 @@ public interface ScrollContainer {
/**
* Request that the view is made visible by scrolling to it.
+ * Return true if it scrolls.
*/
- void scrollTo(View v);
+ boolean scrollTo(View v);
/**
* Request that the view does not dismiss for the current touch.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java
index dba5bbd27a7a..f49067dbcaf6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java
@@ -865,8 +865,12 @@ public class StackStateAnimator {
} else if (event.animationType ==
NotificationStackScrollLayout.AnimationEvent.ANIMATION_TYPE_REMOVE_SWIPED_OUT) {
// A race condition can trigger the view to be added to the overlay even though
- // it is swiped out. So let's remove it
+ // it was fully swiped out. So let's remove it
mHostLayout.getOverlay().remove(changingView);
+ if (Math.abs(changingView.getTranslation()) == changingView.getWidth()
+ && changingView.getTransientContainer() != null) {
+ changingView.getTransientContainer().removeTransientView(changingView);
+ }
} else if (event.animationType == NotificationStackScrollLayout
.AnimationEvent.ANIMATION_TYPE_GROUP_EXPANSION_CHANGED) {
ExpandableNotificationRow row = (ExpandableNotificationRow) event.changingView;
diff --git a/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java b/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java
index e3ed92cb5e88..fda57eb188ff 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java
@@ -576,14 +576,27 @@ public class ZenModePanel extends LinearLayout {
if (DEBUG) Log.d(mTag, "Selecting a default");
final int favoriteIndex = mPrefs.getMinuteIndex();
if (favoriteIndex == -1 || !mCountdownConditionSupported) {
- foreverTag.rb.setChecked(true);
+ setChecked(foreverTag.rb, true);
} else {
mTimeCondition = ZenModeConfig.toTimeCondition(mContext,
MINUTE_BUCKETS[favoriteIndex], ActivityManager.getCurrentUser());
mBucketIndex = favoriteIndex;
bind(mTimeCondition, mZenConditions.getChildAt(COUNTDOWN_CONDITION_INDEX),
COUNTDOWN_CONDITION_INDEX);
- getConditionTagAt(COUNTDOWN_CONDITION_INDEX).rb.setChecked(true);
+ setChecked(getConditionTagAt(COUNTDOWN_CONDITION_INDEX).rb, true);
+ }
+ }
+
+ private void setChecked(RadioButton rb, boolean checked) {
+ final int N = getVisibleConditions();
+ for (int i = 0; i < N; i++) {
+ final ConditionTag tag = getConditionTagAt(i);
+ if (tag != null && tag.rb.isChecked() && !Objects.equals(tag.rb, rb)) {
+ tag.rb.setChecked(false);
+ }
+ }
+ if (rb.isChecked() != checked) {
+ rb.setChecked(checked);
}
}
@@ -614,13 +627,8 @@ public class ZenModePanel extends LinearLayout {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (mExpanded && isChecked) {
+ setChecked(tag.rb, isChecked);
if (DEBUG) Log.d(mTag, "onCheckedChanged " + conditionId);
- final int N = getVisibleConditions();
- for (int i = 0; i < N; i++) {
- final ConditionTag childTag = getConditionTagAt(i);
- if (childTag == null || childTag == tag) continue;
- childTag.rb.setChecked(false);
- }
MetricsLogger.action(mContext, MetricsEvent.QS_DND_CONDITION_SELECT);
select(tag.condition);
announceConditionSelection(tag);
@@ -670,7 +678,7 @@ public class ZenModePanel extends LinearLayout {
tag.lines.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
- tag.rb.setChecked(true);
+ setChecked(tag.rb, true);
}
});
@@ -759,7 +767,7 @@ public class ZenModePanel extends LinearLayout {
}
mTimeCondition = newCondition;
bind(mTimeCondition, row, rowId);
- tag.rb.setChecked(true);
+ setChecked(tag.rb, true);
select(mTimeCondition);
announceConditionSelection(tag);
}
diff --git a/proto/src/metrics_constants.proto b/proto/src/metrics_constants.proto
index c417fe8ae5cc..fd4c71e12fb2 100644
--- a/proto/src/metrics_constants.proto
+++ b/proto/src/metrics_constants.proto
@@ -2191,6 +2191,21 @@ message MetricsEvent {
// CATEGORY: SETTINGS
ACCOUNTS_WORK_PROFILE_SETTINGS = 401;
+ // The number of packages optimized during the optimizing apps dialog.
+ OPTIMIZING_APPS_NUM_PKGS_DEXOPTED = 402;
+
+ // The number of packages which did not need optimizing during the optimizing apps dialog.
+ OPTIMIZING_APPS_NUM_PKGS_SKIPPED = 403;
+
+ // The number of packages which failed to optimize during the optimizing apps dialog.
+ OPTIMIZING_APPS_NUM_PKGS_FAILED = 404;
+
+ // The number of optimizable packages in the system.
+ OPTIMIZING_APPS_NUM_PKGS_TOTAL = 405;
+
+ // The total amount of time the user was blocked on the optimizing apps dialog.
+ OPTIMIZING_APPS_TOTAL_TIME_MS = 406;
+
// Add new aosp constants above this line.
// END OF AOSP CONSTANTS
}
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
index c62689c22b0d..ac2dda3492ca 100644
--- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
@@ -2529,6 +2529,10 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
if (isProfileWithLockedParent(userId)) {
return;
}
+ if (!mUserManager.isUserUnlockingOrUnlocked(userId)) {
+ Slog.w(TAG, "User " + userId + " is no longer unlocked - exiting");
+ return;
+ }
synchronized (mLock) {
ensureGroupStateLoadedLocked(userId);
reloadWidgetsMaskedStateForGroup(mSecurityPolicy.getGroupParent(userId));
diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java
index 1b63cd4958dc..cfe038cf0c23 100644
--- a/services/backup/java/com/android/server/backup/BackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/BackupManagerService.java
@@ -2516,7 +2516,7 @@ public class BackupManagerService {
void prepareOperationTimeout(int token, long interval, BackupRestoreTask callback) {
if (MORE_DEBUG) Slog.v(TAG, "starting timeout: token=" + Integer.toHexString(token)
- + " interval=" + interval);
+ + " interval=" + interval + " callback=" + callback);
synchronized (mCurrentOpLock) {
mCurrentOperations.put(token, new Operation(OP_PENDING, callback));
@@ -2568,16 +2568,26 @@ public class BackupManagerService {
+ " but no op found");
}
int state = (op != null) ? op.state : OP_TIMEOUT;
- if (state == OP_PENDING) {
+ if (state == OP_ACKNOWLEDGED) {
+ // The operation finished cleanly, so we have nothing more to do.
+ if (MORE_DEBUG) {
+ Slog.v(TAG, "handleTimeout() after success; cleanup happens now");
+ }
+ op = null;
+ mCurrentOperations.delete(token);
+ } else if (state == OP_PENDING) {
if (DEBUG) Slog.v(TAG, "TIMEOUT: token=" + Integer.toHexString(token));
op.state = OP_TIMEOUT;
- mCurrentOperations.put(token, op);
+ // Leaves the object in place for later ack
}
mCurrentOpLock.notifyAll();
}
// If there's a TimeoutHandler for this event, call it
if (op != null && op.callback != null) {
+ if (MORE_DEBUG) {
+ Slog.v(TAG, " Invoking timeout on " + op.callback);
+ }
op.callback.handleTimeout();
}
}
@@ -3521,6 +3531,11 @@ public class BackupManagerService {
}
void tearDownAgentAndKill(ApplicationInfo app) {
+ if (app == null) {
+ // Null means the system package, so just quietly move on. :)
+ return;
+ }
+
try {
// unbind and tidy up even on timeout or failure, just in case
mActivityManager.unbindBackupAgent(app);
@@ -3561,6 +3576,7 @@ public class BackupManagerService {
class FullBackupEngine {
OutputStream mOutput;
FullBackupPreflight mPreflightHook;
+ BackupRestoreTask mTimeoutMonitor;
IBackupAgent mAgent;
File mFilesDir;
File mManifestFile;
@@ -3620,7 +3636,8 @@ public class BackupManagerService {
}
if (DEBUG) Slog.d(TAG, "Calling doFullBackup() on " + mPackage.packageName);
- prepareOperationTimeout(mToken, TIMEOUT_FULL_BACKUP_INTERVAL, null);
+ prepareOperationTimeout(mToken, TIMEOUT_FULL_BACKUP_INTERVAL,
+ mTimeoutMonitor /* in parent class */);
mAgent.doFullBackup(mPipe, mToken, mBackupManagerBinder);
} catch (IOException e) {
Slog.e(TAG, "Error running full backup for " + mPackage.packageName);
@@ -3636,11 +3653,12 @@ public class BackupManagerService {
}
FullBackupEngine(OutputStream output, FullBackupPreflight preflightHook, PackageInfo pkg,
- boolean alsoApks) {
+ boolean alsoApks, BackupRestoreTask timeoutMonitor) {
mOutput = output;
mPreflightHook = preflightHook;
mPkg = pkg;
mIncludeApks = alsoApks;
+ mTimeoutMonitor = timeoutMonitor;
mFilesDir = new File("/data/system");
mManifestFile = new File(mFilesDir, BACKUP_MANIFEST_FILENAME);
mMetadataFile = new File(mFilesDir, BACKUP_METADATA_FILENAME);
@@ -3867,10 +3885,7 @@ public class BackupManagerService {
private void tearDown() {
if (mPkg != null) {
- final ApplicationInfo app = mPkg.applicationInfo;
- if (app != null) {
- tearDownAgentAndKill(app);
- }
+ tearDownAgentAndKill(mPkg.applicationInfo);
}
}
}
@@ -4236,7 +4251,7 @@ public class BackupManagerService {
final boolean isSharedStorage =
pkg.packageName.equals(SHARED_BACKUP_AGENT_PACKAGE);
- mBackupEngine = new FullBackupEngine(out, null, pkg, mIncludeApks);
+ mBackupEngine = new FullBackupEngine(out, null, pkg, mIncludeApks, null);
sendOnBackupPackage(isSharedStorage ? "Shared storage" : pkg.packageName);
// Don't need to check preflight result as there is no preflight hook.
mBackupEngine.backupOnePackage();
@@ -4555,6 +4570,7 @@ public class BackupManagerService {
BackupManager.ERROR_AGENT_FAILURE);
Slog.w(TAG, "Application failure for package: " + packageName);
EventLog.writeEvent(EventLogTags.BACKUP_AGENT_FAILURE, packageName);
+ tearDownAgentAndKill(currentPackage.applicationInfo);
// Do nothing, clean up, and continue looping.
} else if (backupPackageStatus != BackupTransport.TRANSPORT_OK) {
sendBackupOnPackageResult(mBackupObserver, packageName,
@@ -4594,7 +4610,6 @@ public class BackupManagerService {
mRunningFullBackupTask = null;
}
-
mLatch.countDown();
// Now that we're actually done with schedule-driven work, reschedule
@@ -4657,7 +4672,7 @@ public class BackupManagerService {
// now wait to get our result back
mLatch.await();
long totalSize = mResult.get();
- // If preflight timeouted, mResult will contain error code as int.
+ // If preflight timed out, mResult will contain error code as int.
if (totalSize < 0) {
return (int) totalSize;
}
@@ -4716,7 +4731,7 @@ public class BackupManagerService {
}
}
- class SinglePackageBackupRunner implements Runnable {
+ class SinglePackageBackupRunner implements Runnable, BackupRestoreTask {
final ParcelFileDescriptor mOutput;
final PackageInfo mTarget;
final FullBackupPreflight mPreflight;
@@ -4740,7 +4755,7 @@ public class BackupManagerService {
@Override
public void run() {
FileOutputStream out = new FileOutputStream(mOutput.getFileDescriptor());
- mEngine = new FullBackupEngine(out, mPreflight, mTarget, false);
+ mEngine = new FullBackupEngine(out, mPreflight, mTarget, false, this);
try {
try {
mPreflightResult = mEngine.preflightCheck();
@@ -4790,6 +4805,23 @@ public class BackupManagerService {
return BackupTransport.AGENT_ERROR;
}
}
+
+
+ // BackupRestoreTask interface: specifically, timeout detection
+
+ @Override
+ public void execute() { /* intentionally empty */ }
+
+ @Override
+ public void operationComplete(long result) { /* intentionally empty */ }
+
+ @Override
+ public void handleTimeout() {
+ if (DEBUG) {
+ Slog.w(TAG, "Full backup timeout of " + mTarget.packageName);
+ }
+ tearDownAgentAndKill(mTarget.applicationInfo);
+ }
}
}
@@ -5150,6 +5182,9 @@ public class BackupManagerService {
// Full restore engine, used by both adb restore and transport-based full restore
class FullRestoreEngine extends RestoreEngine {
+ // Task in charge of monitoring timeouts
+ BackupRestoreTask mMonitorTask;
+
// Dedicated observer, if any
IFullBackupRestoreObserver mObserver;
@@ -5231,8 +5266,9 @@ public class BackupManagerService {
}
}
- public FullRestoreEngine(IFullBackupRestoreObserver observer, PackageInfo onlyPackage,
- boolean allowApks, boolean allowObbs) {
+ public FullRestoreEngine(BackupRestoreTask monitorTask, IFullBackupRestoreObserver observer,
+ PackageInfo onlyPackage, boolean allowApks, boolean allowObbs) {
+ mMonitorTask = monitorTask;
mObserver = observer;
mOnlyPackage = onlyPackage;
mAllowApks = allowApks;
@@ -5245,6 +5281,10 @@ public class BackupManagerService {
return mAgent;
}
+ public byte[] getWidgetData() {
+ return mWidgetData;
+ }
+
public boolean restoreOneFile(InputStream instream, boolean mustKillAgent) {
if (!isRunning()) {
Slog.w(TAG, "Restore engine used after halting");
@@ -5434,7 +5474,9 @@ public class BackupManagerService {
long toCopy = info.size;
final int token = generateToken();
try {
- prepareOperationTimeout(token, TIMEOUT_FULL_BACKUP_INTERVAL, null);
+ prepareOperationTimeout(token, TIMEOUT_FULL_BACKUP_INTERVAL,
+ mMonitorTask);
+
if (info.domain.equals(FullBackup.OBB_TREE_TOKEN)) {
if (DEBUG) Slog.d(TAG, "Restoring OBB file for " + pkg
+ " : " + info.path);
@@ -5495,7 +5537,8 @@ public class BackupManagerService {
try {
pipe.write(mBuffer, 0, nRead);
} catch (IOException e) {
- Slog.e(TAG, "Failed to write to restore pipe", e);
+ Slog.e(TAG, "Failed to write to restore pipe: "
+ + e.getMessage());
pipeOkay = false;
}
}
@@ -5548,7 +5591,7 @@ public class BackupManagerService {
}
}
} catch (IOException e) {
- if (DEBUG) Slog.w(TAG, "io exception on restore socket read", e);
+ if (DEBUG) Slog.w(TAG, "io exception on restore socket read: " + e.getMessage());
setResult(RestoreEngine.TRANSPORT_FAILURE);
info = null;
}
@@ -5592,6 +5635,12 @@ public class BackupManagerService {
}
}
+ void handleTimeout() {
+ tearDownPipes();
+ setResult(RestoreEngine.TARGET_FAILURE);
+ setRunning(false);
+ }
+
class RestoreInstallObserver extends PackageInstallObserver {
final AtomicBoolean mDone = new AtomicBoolean();
String mPackageName;
@@ -7676,6 +7725,9 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
void restoreWidgetData(String packageName, byte[] widgetData) {
// Apply the restored widget state and generate the ID update for the app
// TODO: http://b/22388012
+ if (MORE_DEBUG) {
+ Slog.i(TAG, "Incorporating restored widget data");
+ }
AppWidgetBackupBridge.restoreWidgetState(packageName, widgetData, UserHandle.USER_SYSTEM);
}
@@ -8331,9 +8383,10 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
}
}
- class StreamFeederThread extends RestoreEngine implements Runnable {
+ class StreamFeederThread extends RestoreEngine implements Runnable, BackupRestoreTask {
final String TAG = "StreamFeederThread";
FullRestoreEngine mEngine;
+ EngineThread mEngineThread;
// pipe through which we read data from the transport. [0] read, [1] write
ParcelFileDescriptor[] mTransportPipes;
@@ -8355,8 +8408,8 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
EventLog.writeEvent(EventLogTags.FULL_RESTORE_PACKAGE,
mCurrentPackage.packageName);
- mEngine = new FullRestoreEngine(null, mCurrentPackage, false, false);
- EngineThread eThread = new EngineThread(mEngine, mEnginePipes[0]);
+ mEngine = new FullRestoreEngine(this, null, mCurrentPackage, false, false);
+ mEngineThread = new EngineThread(mEngine, mEnginePipes[0]);
ParcelFileDescriptor eWriteEnd = mEnginePipes[1];
ParcelFileDescriptor tReadEnd = mTransportPipes[0];
@@ -8368,7 +8421,7 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
FileInputStream transportIn = new FileInputStream(tReadEnd.getFileDescriptor());
// spin up the engine and start moving data to it
- new Thread(eThread, "unified-restore-engine").start();
+ new Thread(mEngineThread, "unified-restore-engine").start();
try {
while (status == BackupTransport.TRANSPORT_OK) {
@@ -8434,12 +8487,8 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
IoUtils.closeQuietly(mTransportPipes[0]);
IoUtils.closeQuietly(mTransportPipes[1]);
- // Don't proceed until the engine has finished
- eThread.waitForResult();
-
- if (MORE_DEBUG) {
- Slog.i(TAG, "engine thread finished; proceeding");
- }
+ // Don't proceed until the engine has wound up operations
+ mEngineThread.waitForResult();
// Now we're really done with this one too
IoUtils.closeQuietly(mEnginePipes[0]);
@@ -8457,6 +8506,9 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
// the engine bound the target's agent, so recover that binding
// to use for the callback.
mAgent = mEngine.getAgent();
+
+ // and the restored widget data, if any
+ mWidgetData = mEngine.getWidgetData();
} else {
// Something went wrong somewhere. Whether it was at the transport
// level is immaterial; we need to tell the transport to bail
@@ -8484,6 +8536,27 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
}
}
+ // BackupRestoreTask interface, specifically for timeout handling
+
+ @Override
+ public void execute() { /* intentionally empty */ }
+
+ @Override
+ public void operationComplete(long result) { /* intentionally empty */ }
+
+ // The app has timed out handling a restoring file
+ @Override
+ public void handleTimeout() {
+ if (DEBUG) {
+ Slog.w(TAG, "Full-data restore target timed out; shutting down");
+ }
+ mEngineThread.handleTimeout();
+
+ IoUtils.closeQuietly(mEnginePipes[1]);
+ mEnginePipes[1] = null;
+ IoUtils.closeQuietly(mEnginePipes[0]);
+ mEnginePipes[0] = null;
+ }
}
class EngineThread implements Runnable {
@@ -8506,11 +8579,20 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
@Override
public void run() {
- while (mEngine.isRunning()) {
- // Tell it to be sure to leave the agent instance up after finishing
- mEngine.restoreOneFile(mEngineStream, false);
+ try {
+ while (mEngine.isRunning()) {
+ // Tell it to be sure to leave the agent instance up after finishing
+ mEngine.restoreOneFile(mEngineStream, false);
+ }
+ } finally {
+ IoUtils.closeQuietly(mEngineStream);
}
}
+
+ public void handleTimeout() {
+ IoUtils.closeQuietly(mEngineStream);
+ mEngine.handleTimeout();
+ }
}
// state FINAL : tear everything down and we're done.
@@ -9772,7 +9854,14 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
synchronized (mCurrentOpLock) {
op = mCurrentOperations.get(token);
if (op != null) {
- op.state = OP_ACKNOWLEDGED;
+ if (op.state == OP_TIMEOUT) {
+ // The operation already timed out, and this is a late response. Tidy up
+ // and ignore it; we've already dealt with the timeout.
+ op = null;
+ mCurrentOperations.delete(token);
+ } else {
+ op.state = OP_ACKNOWLEDGED;
+ }
}
mCurrentOpLock.notifyAll();
}
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 00dcdeae3a27..8763b93f31b9 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -30,10 +30,12 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL;
import static android.net.NetworkPolicyManager.RULE_ALLOW_METERED;
-import static android.net.NetworkPolicyManager.RULE_REJECT_ALL;
+import static android.net.NetworkPolicyManager.MASK_METERED_NETWORKS;
+import static android.net.NetworkPolicyManager.MASK_ALL_NETWORKS;
+import static android.net.NetworkPolicyManager.RULE_NONE;
import static android.net.NetworkPolicyManager.RULE_REJECT_METERED;
import static android.net.NetworkPolicyManager.RULE_TEMPORARY_ALLOW_METERED;
-import static android.net.NetworkPolicyManager.RULE_UNKNOWN;
+import static android.net.NetworkPolicyManager.uidRulesToString;
import android.annotation.Nullable;
import android.app.BroadcastOptions;
@@ -216,6 +218,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
/** Flag indicating if background data is restricted. */
@GuardedBy("mRulesLock")
private boolean mRestrictBackground;
+ /** Flag indicating if background data is restricted due to battery savings. */
+ @GuardedBy("mRulesLock")
+ private boolean mRestrictPower;
final private Context mContext;
private int mNetworkPreference;
@@ -664,9 +669,10 @@ public class ConnectivityService extends IConnectivityManager.Stub
try {
mPolicyManager.setConnectivityListener(mPolicyListener);
mRestrictBackground = mPolicyManager.getRestrictBackground();
+ mRestrictPower = mPolicyManager.getRestrictPower();
} catch (RemoteException e) {
// ouch, no rules updates means some processes may never get network
- loge("unable to register INetworkPolicyListener" + e.toString());
+ loge("unable to register INetworkPolicyListener" + e);
}
final PowerManager powerManager = (PowerManager) context.getSystemService(
@@ -741,7 +747,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
//set up the listener for user state for creating user VPNs
IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction(Intent.ACTION_USER_STARTING);
+ intentFilter.addAction(Intent.ACTION_USER_STARTED);
intentFilter.addAction(Intent.ACTION_USER_STOPPED);
intentFilter.addAction(Intent.ACTION_USER_ADDED);
intentFilter.addAction(Intent.ACTION_USER_REMOVED);
@@ -915,24 +921,36 @@ public class ConnectivityService extends IConnectivityManager.Stub
final String iface = (lp == null ? "" : lp.getInterfaceName());
synchronized (mRulesLock) {
networkMetered = mMeteredIfaces.contains(iface);
- uidRules = mUidRules.get(uid, RULE_UNKNOWN);
+ uidRules = mUidRules.get(uid, RULE_NONE);
}
- switch (uidRules) {
- case RULE_ALLOW_ALL:
- case RULE_ALLOW_METERED:
- case RULE_TEMPORARY_ALLOW_METERED:
- return false;
- case RULE_REJECT_METERED:
- return networkMetered;
- case RULE_REJECT_ALL:
- return true;
- case RULE_UNKNOWN:
- default:
- // When background data is restricted device-wide, the default
- // behavior for apps should be like RULE_REJECT_METERED
- return mRestrictBackground ? networkMetered : false;
+ boolean allowed = true;
+ // Check Data Saver Mode first...
+ if (networkMetered) {
+ if ((uidRules & RULE_REJECT_METERED) != 0) {
+ if (LOGD_RULES) Log.d(TAG, "uid " + uid + " is blacklisted");
+ // Explicitly blacklisted.
+ allowed = false;
+ } else {
+ allowed = !mRestrictBackground
+ || (uidRules & RULE_ALLOW_METERED) != 0
+ || (uidRules & RULE_TEMPORARY_ALLOW_METERED) != 0;
+ if (LOGD_RULES) Log.d(TAG, "allowed status for uid " + uid + " when"
+ + " mRestrictBackground=" + mRestrictBackground
+ + ", whitelisted=" + ((uidRules & RULE_ALLOW_METERED) != 0)
+ + ", tempWhitelist= + ((uidRules & RULE_TEMPORARY_ALLOW_METERED) != 0)"
+ + ": " + allowed);
+ }
+ }
+ // ...then Battery Saver Mode.
+ if (allowed && mRestrictPower) {
+ allowed = (uidRules & RULE_ALLOW_ALL) != 0;
+ if (LOGD_RULES) Log.d(TAG, "allowed status for uid " + uid + " when"
+ + " mRestrictPower=" + mRestrictPower
+ + ", whitelisted=" + ((uidRules & RULE_ALLOW_ALL) != 0)
+ + ": " + allowed);
}
+ return !allowed;
}
private void maybeLogBlockedNetworkInfo(NetworkInfo ni, int uid) {
@@ -1379,7 +1397,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
synchronized (mRulesLock) {
// skip update when we've already applied rules
- final int oldRules = mUidRules.get(uid, RULE_ALLOW_ALL);
+ final int oldRules = mUidRules.get(uid, RULE_NONE);
if (oldRules == uidRules) return;
mUidRules.put(uid, uidRules);
@@ -1421,6 +1439,18 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
@Override
+ public void onRestrictPowerChanged(boolean restrictPower) {
+ // caller is NPMS, since we only register with them
+ if (LOGD_RULES) {
+ log("onRestrictPowerChanged(restrictPower=" + restrictPower + ")");
+ }
+
+ synchronized (mRulesLock) {
+ mRestrictPower = restrictPower;
+ }
+ }
+
+ @Override
public void onRestrictBackgroundWhitelistChanged(int uid, boolean whitelisted) {
if (LOGD_RULES) {
// caller is NPMS, since we only register with them
@@ -1861,6 +1891,25 @@ public class ConnectivityService extends IConnectivityManager.Stub
pw.println(mRestrictBackground);
pw.println();
+ pw.print("Restrict power: ");
+ pw.println(mRestrictPower);
+ pw.println();
+
+ pw.println("Status for known UIDs:");
+ pw.increaseIndent();
+ final int size = mUidRules.size();
+ for (int i = 0; i < size; i++) {
+ final int uid = mUidRules.keyAt(i);
+ pw.print("UID=");
+ pw.print(uid);
+ final int uidRules = mUidRules.get(uid, RULE_NONE);
+ pw.print(" rules=");
+ pw.print(uidRulesToString(uidRules));
+ pw.println();
+ }
+ pw.println();
+ pw.decreaseIndent();
+
pw.println("Network Requests:");
pw.increaseIndent();
for (NetworkRequestInfo nri : mNetworkRequests.values()) {
@@ -1979,7 +2028,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
networkCapabilities.hasCapability(NET_CAPABILITY_VALIDATED)) {
Slog.wtf(TAG, "BUG: " + nai + " has CS-managed capability.");
}
- if (nai.created && !nai.networkCapabilities.equalImmutableCapabilities(
+ if (nai.everConnected && !nai.networkCapabilities.equalImmutableCapabilities(
networkCapabilities)) {
Slog.wtf(TAG, "BUG: " + nai + " changed immutable capabilities: "
+ nai.networkCapabilities + " -> " + networkCapabilities);
@@ -1990,13 +2039,14 @@ public class ConnectivityService extends IConnectivityManager.Stub
case NetworkAgent.EVENT_NETWORK_PROPERTIES_CHANGED: {
if (VDBG) {
log("Update of LinkProperties for " + nai.name() +
- "; created=" + nai.created);
+ "; created=" + nai.created +
+ "; everConnected=" + nai.everConnected);
}
LinkProperties oldLp = nai.linkProperties;
synchronized (nai) {
nai.linkProperties = (LinkProperties)msg.obj;
}
- if (nai.created) updateLinkProperties(nai, oldLp);
+ if (nai.everConnected) updateLinkProperties(nai, oldLp);
break;
}
case NetworkAgent.EVENT_NETWORK_INFO_CHANGED: {
@@ -2028,8 +2078,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
break;
}
case NetworkAgent.EVENT_SET_EXPLICITLY_SELECTED: {
- if (nai.created && !nai.networkMisc.explicitlySelected) {
- loge("ERROR: created network explicitly selected.");
+ if (nai.everConnected && !nai.networkMisc.explicitlySelected) {
+ loge("ERROR: already-connected network explicitly selected.");
}
nai.networkMisc.explicitlySelected = true;
nai.networkMisc.acceptUnvalidated = (boolean) msg.obj;
@@ -2314,7 +2364,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
// This is whether it is satisfying any NetworkRequests or were it to become validated,
// would it have a chance of satisfying any NetworkRequests.
private boolean unneeded(NetworkAgentInfo nai) {
- if (!nai.created || nai.isVPN() || nai.lingering) return false;
+ if (!nai.everConnected || nai.isVPN() || nai.lingering) return false;
for (NetworkRequestInfo nri : mNetworkRequests.values()) {
// If this Network is already the highest scoring Network for a request, or if
// there is hope for it to become one if it validated, then it is needed.
@@ -2798,9 +2848,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
") by " + uid);
}
synchronized (nai) {
- // Validating an uncreated network could result in a call to rematchNetworkAndRequests()
- // which isn't meant to work on uncreated networks.
- if (!nai.created) return;
+ // Validating a network that has not yet connected could result in a call to
+ // rematchNetworkAndRequests() which is not meant to work on such networks.
+ if (!nai.everConnected) return;
if (isNetworkWithLinkPropertiesBlocked(nai.linkProperties, uid, false)) return;
@@ -3346,7 +3396,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
@Override
- public boolean setAlwaysOnVpnPackage(int userId, String packageName) {
+ public boolean setAlwaysOnVpnPackage(int userId, String packageName, boolean lockdown) {
enforceConnectivityInternalPermission();
enforceCrossUserPermission(userId);
@@ -3699,7 +3749,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL);
if (userId == UserHandle.USER_NULL) return;
- if (Intent.ACTION_USER_STARTING.equals(action)) {
+ if (Intent.ACTION_USER_STARTED.equals(action)) {
onUserStart(userId);
} else if (Intent.ACTION_USER_STOPPED.equals(action)) {
onUserStop(userId);
@@ -3981,9 +4031,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
synchronized(mRulesLock) {
uidRules = mUidRules.get(uid, RULE_ALLOW_ALL);
}
- if (uidRules != RULE_ALLOW_ALL) {
+ if ((uidRules & RULE_ALLOW_ALL) == 0) {
// we could silently fail or we can filter the available nets to only give
- // them those they have access to. Chose the more useful
+ // them those they have access to. Chose the more useful option.
networkCapabilities.addCapability(NET_CAPABILITY_NOT_METERED);
}
}
@@ -4542,7 +4592,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
// validated) of becoming the highest scoring network.
private void rematchNetworkAndRequests(NetworkAgentInfo newNetwork,
ReapUnvalidatedNetworks reapUnvalidatedNetworks) {
- if (!newNetwork.created) return;
+ if (!newNetwork.everConnected) return;
boolean keep = newNetwork.isVPN();
boolean isNewDefault = false;
NetworkAgentInfo oldDefaultNetwork = null;
@@ -4841,7 +4891,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
" to " + state);
}
- if (state == NetworkInfo.State.CONNECTED && !networkAgent.created) {
+ if (!networkAgent.created
+ && (state == NetworkInfo.State.CONNECTED
+ || (state == NetworkInfo.State.CONNECTING && networkAgent.isVPN()))) {
try {
// This should never fail. Specifying an already in use NetID will cause failure.
if (networkAgent.isVPN()) {
@@ -4861,6 +4913,11 @@ public class ConnectivityService extends IConnectivityManager.Stub
return;
}
networkAgent.created = true;
+ }
+
+ if (!networkAgent.everConnected && state == NetworkInfo.State.CONNECTED) {
+ networkAgent.everConnected = true;
+
updateLinkProperties(networkAgent, null);
notifyIfacesChangedForNetworkStats();
diff --git a/services/core/java/com/android/server/DeviceIdleController.java b/services/core/java/com/android/server/DeviceIdleController.java
index 6b0ead47923b..b60f3e2f0bc3 100644
--- a/services/core/java/com/android/server/DeviceIdleController.java
+++ b/services/core/java/com/android/server/DeviceIdleController.java
@@ -1413,9 +1413,12 @@ public class DeviceIdleController extends SystemService
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
getContext().registerReceiver(mReceiver, filter);
+
filter = new IntentFilter();
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addDataScheme("package");
+ getContext().registerReceiver(mReceiver, filter);
+
filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
getContext().registerReceiver(mReceiver, filter);
diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java
index 7c48634c8d56..e0b49603ac4f 100644
--- a/services/core/java/com/android/server/LocationManagerService.java
+++ b/services/core/java/com/android/server/LocationManagerService.java
@@ -545,11 +545,11 @@ public class LocationManagerService extends ILocationManager.Stub {
com.android.internal.R.string.config_hardwareFlpPackageName,
com.android.internal.R.array.config_locationProviderPackageNames);
if (fusedProxy == null) {
- Slog.e(TAG, "Unable to bind FusedProxy.");
+ Slog.d(TAG, "Unable to bind FusedProxy.");
}
} else {
flpHardwareProvider = null;
- Slog.e(TAG, "FLP HAL not supported");
+ Slog.d(TAG, "FLP HAL not supported");
}
// bind to geofence provider
@@ -561,7 +561,7 @@ public class LocationManagerService extends ILocationManager.Stub {
mGpsGeofenceProxy,
flpHardwareProvider != null ? flpHardwareProvider.getGeofenceHardware() : null);
if (provider == null) {
- Slog.e(TAG, "Unable to bind FLP Geofence proxy.");
+ Slog.d(TAG, "Unable to bind FLP Geofence proxy.");
}
// bind to hardware activity recognition
@@ -570,7 +570,7 @@ public class LocationManagerService extends ILocationManager.Stub {
if (activityRecognitionHardwareIsSupported) {
activityRecognitionHardware = ActivityRecognitionHardware.getInstance(mContext);
} else {
- Slog.e(TAG, "Hardware Activity-Recognition not supported.");
+ Slog.d(TAG, "Hardware Activity-Recognition not supported.");
}
ActivityRecognitionProxy proxy = ActivityRecognitionProxy.createAndBind(
mContext,
@@ -581,7 +581,7 @@ public class LocationManagerService extends ILocationManager.Stub {
com.android.internal.R.string.config_activityRecognitionHardwarePackageName,
com.android.internal.R.array.config_locationProviderPackageNames);
if (proxy == null) {
- Slog.e(TAG, "Unable to bind ActivityRecognitionProxy.");
+ Slog.d(TAG, "Unable to bind ActivityRecognitionProxy.");
}
String[] testProviderStrings = resources.getStringArray(
diff --git a/services/core/java/com/android/server/LockSettingsService.java b/services/core/java/com/android/server/LockSettingsService.java
index cbf7e8038b5b..434464c90a09 100644
--- a/services/core/java/com/android/server/LockSettingsService.java
+++ b/services/core/java/com/android/server/LockSettingsService.java
@@ -896,15 +896,13 @@ public class LockSettingsService extends ILockSettings.Stub {
// get credential from keystore when managed profile has unified lock
try {
savedCredential = getDecryptedPasswordForTiedProfile(userId);
+ } catch (FileNotFoundException e) {
+ Slog.i(TAG, "Child profile key not found");
} catch (UnrecoverableKeyException | InvalidKeyException | KeyStoreException
| NoSuchAlgorithmException | NoSuchPaddingException
| InvalidAlgorithmParameterException | IllegalBlockSizeException
| BadPaddingException | CertificateException | IOException e) {
- if (e instanceof FileNotFoundException) {
- Slog.i(TAG, "Child profile key not found");
- } else {
- Slog.e(TAG, "Failed to decrypt child profile key", e);
- }
+ Slog.e(TAG, "Failed to decrypt child profile key", e);
}
} else {
if (currentHandle == null) {
diff --git a/services/core/java/com/android/server/MountService.java b/services/core/java/com/android/server/MountService.java
index 8abbb1112f08..25ce4856be1f 100644
--- a/services/core/java/com/android/server/MountService.java
+++ b/services/core/java/com/android/server/MountService.java
@@ -178,6 +178,11 @@ class MountService extends IMountService.Stub
}
@Override
+ public void onSwitchUser(int userHandle) {
+ mMountService.mCurrentUserId = userHandle;
+ }
+
+ @Override
public void onUnlockUser(int userHandle) {
mMountService.onUnlockUser(userHandle);
}
@@ -320,6 +325,8 @@ class MountService extends IMountService.Stub
@GuardedBy("mLock")
private String mMoveTargetUuid;
+ private volatile int mCurrentUserId = UserHandle.USER_SYSTEM;
+
private VolumeInfo findVolumeByIdOrThrow(String id) {
synchronized (mLock) {
final VolumeInfo vol = mVolumes.get(id);
@@ -1285,7 +1292,7 @@ class MountService extends IMountService.Stub
vol.mountFlags |= VolumeInfo.MOUNT_FLAG_VISIBLE;
}
- vol.mountUserId = ActivityManager.getCurrentUser();
+ vol.mountUserId = mCurrentUserId;
mHandler.obtainMessage(H_VOLUME_MOUNT, vol).sendToTarget();
} else if (vol.type == VolumeInfo.TYPE_PRIVATE) {
@@ -2648,6 +2655,9 @@ class MountService extends IMountService.Stub
*/
@Override
public int getPasswordType() {
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.STORAGE_INTERNAL,
+ "no permission to access the crypt keeper");
+
waitForReady();
final NativeDaemonEvent event;
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 90fe4856f0c2..f52bda978ab0 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -390,6 +390,11 @@ public final class ActivityManagerService extends ActivityManagerNative
private static final String TAG_VISIBILITY = TAG + POSTFIX_VISIBILITY;
private static final String TAG_VISIBLE_BEHIND = TAG + POSTFIX_VISIBLE_BEHIND;
+ // Mock "pretend we're idle now" broadcast action to the job scheduler; declared
+ // here so that while the job scheduler can depend on AMS, the other way around
+ // need not be the case.
+ public static final String ACTION_TRIGGER_IDLE = "com.android.server.ACTION_TRIGGER_IDLE";
+
/** Control over CPU and battery monitoring */
// write battery stats every 30 minutes.
static final long BATTERY_STATS_TIME = 30 * 60 * 1000;
@@ -10320,9 +10325,9 @@ public final class ActivityManagerService extends ActivityManagerNative
}
private void checkTime(long startTime, String where) {
- long now = SystemClock.elapsedRealtime();
- if ((now-startTime) > 1000) {
- // If we are taking more than a second, log about it.
+ long now = SystemClock.uptimeMillis();
+ if ((now-startTime) > 50) {
+ // If we are taking more than 50ms, log about it.
Slog.w(TAG, "Slow operation: " + (now-startTime) + "ms so far, now at " + where);
}
}
@@ -10334,7 +10339,7 @@ public final class ActivityManagerService extends ActivityManagerNative
ProviderInfo cpi = null;
synchronized(this) {
- long startTime = SystemClock.elapsedRealtime();
+ long startTime = SystemClock.uptimeMillis();
ProcessRecord r = null;
if (caller != null) {
@@ -11476,7 +11481,7 @@ public final class ActivityManagerService extends ActivityManagerNative
mWindowManager.setEventDispatching(mBooted && !mShuttingDown);
}
- public void setLockScreenShown(boolean shown) {
+ public void setLockScreenShown(boolean showing, boolean occluded) {
if (checkCallingPermission(android.Manifest.permission.DEVICE_POWER)
!= PackageManager.PERMISSION_GRANTED) {
throw new SecurityException("Requires permission "
@@ -11486,8 +11491,17 @@ public final class ActivityManagerService extends ActivityManagerNative
synchronized(this) {
long ident = Binder.clearCallingIdentity();
try {
- if (DEBUG_LOCKSCREEN) logLockScreen(" shown=" + shown);
- mLockScreenShown = shown ? LOCK_SCREEN_SHOWN : LOCK_SCREEN_HIDDEN;
+ if (DEBUG_LOCKSCREEN) logLockScreen(" showing=" + showing + " occluded=" + occluded);
+ mLockScreenShown = (showing && !occluded) ? LOCK_SCREEN_SHOWN : LOCK_SCREEN_HIDDEN;
+ if (showing && occluded) {
+ // The lock screen is currently showing, but is occluded by a window that can
+ // show on top of the lock screen. In this can we want to dismiss the docked
+ // stack since it will be complicated/risky to try to put the activity on top
+ // of the lock screen in the right fullscreen configuration.
+ mStackSupervisor.moveTasksToFullscreenStackLocked(DOCKED_STACK_ID,
+ mStackSupervisor.mFocusedStack.getStackId() == DOCKED_STACK_ID);
+ }
+
updateSleepIfNeededLocked();
} finally {
Binder.restoreCallingIdentity(ident);
@@ -12649,6 +12663,26 @@ public final class ActivityManagerService extends ActivityManagerNative
}
}
+ @Override
+ public void sendIdleJobTrigger() {
+ if (checkCallingPermission(android.Manifest.permission.SET_ACTIVITY_WATCHER)
+ != PackageManager.PERMISSION_GRANTED) {
+ throw new SecurityException("Requires permission "
+ + android.Manifest.permission.SET_ACTIVITY_WATCHER);
+ }
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ Intent intent = new Intent(ACTION_TRIGGER_IDLE)
+ .setPackage("android")
+ .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
+ broadcastIntent(null, intent, null, null, 0, null, null, null,
+ android.app.AppOpsManager.OP_NONE, null, true, false, UserHandle.USER_ALL);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
private void retrieveSettings() {
final ContentResolver resolver = mContext.getContentResolver();
final boolean freeformWindowManagement =
@@ -18220,8 +18254,11 @@ public final class ActivityManagerService extends ActivityManagerNative
// Tell the shortcut manager that the system locale changed. It needs to know
// it before any other apps receive ACTION_LOCALE_CHANGED, which is why
// we "push" from here, rather than having the service listen to the broadcast.
- LocalServices.getService(ShortcutServiceInternal.class)
- .onSystemLocaleChangedNoLock();
+ final ShortcutServiceInternal shortcutService =
+ LocalServices.getService(ShortcutServiceInternal.class);
+ if (shortcutService != null) {
+ shortcutService.onSystemLocaleChangedNoLock();
+ }
intent = new Intent(Intent.ACTION_LOCALE_CHANGED);
intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
diff --git a/services/core/java/com/android/server/am/ActivityMetricsLogger.java b/services/core/java/com/android/server/am/ActivityMetricsLogger.java
index 0331470a7f83..fe085d7054ff 100644
--- a/services/core/java/com/android/server/am/ActivityMetricsLogger.java
+++ b/services/core/java/com/android/server/am/ActivityMetricsLogger.java
@@ -5,12 +5,15 @@ import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID;
import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID;
import static android.app.ActivityManager.StackId.HOME_STACK_ID;
import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
+import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
+import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.am.ActivityStack.STACK_INVISIBLE;
import android.annotation.Nullable;
import android.app.ActivityManager.StackId;
import android.content.Context;
import android.os.SystemClock;
+import android.util.Slog;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent;
@@ -19,6 +22,9 @@ import com.android.internal.logging.MetricsProto.MetricsEvent;
* Handles logging into Tron.
*/
class ActivityMetricsLogger {
+
+ private static final String TAG = TAG_WITH_CLASS_NAME ? "ActivityMetricsLogger" : TAG_AM;
+
// Window modes we are interested in logging. If we ever introduce a new type, we need to add
// a value here and increase the {@link #TRON_WINDOW_STATE_VARZ_STRINGS} array.
private static final int WINDOW_STATE_STANDARD = 0;
@@ -74,8 +80,9 @@ class ActivityMetricsLogger {
|| stack.mStackId == FULLSCREEN_WORKSPACE_STACK_ID) {
mWindowState = WINDOW_STATE_STANDARD;
} else if (stack.mStackId == DOCKED_STACK_ID) {
- throw new IllegalStateException("Docked stack shouldn't be the focused stack, "
- + "because it reported not being visible.");
+ Slog.wtf(TAG, "Docked stack shouldn't be the focused stack, because it reported not"
+ + " being visible.");
+ mWindowState = WINDOW_STATE_INVALID;
} else if (stack.mStackId == FREEFORM_WORKSPACE_STACK_ID) {
mWindowState = WINDOW_STATE_FREEFORM;
} else if (StackId.isStaticStack(stack.mStackId)) {
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 009c9a8caa55..d74e22e57e55 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -1008,13 +1008,14 @@ final class ActivityStack {
void goToSleep() {
ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS);
- // Make sure any stopped but visible activities are now sleeping.
+ // Make sure any paused or stopped but visible activities are now sleeping.
// This ensures that the activity's onStop() is called.
for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) {
final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities;
for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
final ActivityRecord r = activities.get(activityNdx);
- if (r.state == ActivityState.STOPPING || r.state == ActivityState.STOPPED) {
+ if (r.state == ActivityState.STOPPING || r.state == ActivityState.STOPPED
+ || r.state == ActivityState.PAUSED || r.state == ActivityState.PAUSING) {
r.setSleeping(true);
}
}
@@ -5065,7 +5066,7 @@ final class ActivityStack {
void positionTask(final TaskRecord task, int position) {
final ActivityRecord topRunningActivity = task.topRunningActivityLocked();
final boolean wasResumed = topRunningActivity == task.stack.mResumedActivity;
- final ActivityStack prevStack = preAddTask(task, "positionTask", ON_TOP);
+ final ActivityStack prevStack = preAddTask(task, "positionTask", !ON_TOP);
task.stack = this;
insertTaskAtPosition(task, position);
postAddTask(task, prevStack);
diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java
index 79b141345f93..6deebc0ce679 100644
--- a/services/core/java/com/android/server/am/BatteryStatsService.java
+++ b/services/core/java/com/android/server/am/BatteryStatsService.java
@@ -1091,7 +1091,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub
pw.println(" [--daily] [--reset] [--write] [--new-daily] [--read-daily] [-h] [<package.name>]");
pw.println(" --checkin: generate output for a checkin report; will write (and clear) the");
pw.println(" last old completed stats when they had been reset.");
- pw.println(" --c: write the current stats in checkin format.");
+ pw.println(" -c: write the current stats in checkin format.");
pw.println(" --history: show only history data.");
pw.println(" --history-start <num>: show only history data starting at given time offset.");
pw.println(" --charged: only output data since last charged.");
diff --git a/services/core/java/com/android/server/am/RecentTasks.java b/services/core/java/com/android/server/am/RecentTasks.java
index 88faee73322f..cea76f236fc9 100644
--- a/services/core/java/com/android/server/am/RecentTasks.java
+++ b/services/core/java/com/android/server/am/RecentTasks.java
@@ -65,6 +65,9 @@ class RecentTasks extends ArrayList<TaskRecord> {
private static final int MAX_RECENT_BITMAPS = 3;
private static final int DEFAULT_INITIAL_CAPACITY = 5;
+ // Whether or not to move all affiliated tasks to the front when one of the tasks is launched
+ private static final boolean MOVE_AFFILIATED_TASKS_TO_FRONT = false;
+
/**
* Save recent tasks information across reboots.
*/
@@ -513,7 +516,7 @@ class RecentTasks extends ArrayList<TaskRecord> {
if (task.inRecents) {
int taskIndex = indexOf(task);
if (taskIndex >= 0) {
- if (!isAffiliated) {
+ if (!isAffiliated || MOVE_AFFILIATED_TASKS_TO_FRONT) {
// Simple case: this is not an affiliated task, so we just move it to the front.
remove(taskIndex);
add(0, task);
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index bfa5b42b79c3..e8f4b3e3fb74 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -927,32 +927,30 @@ final class UserController {
boolean unlockUserCleared(final int userId, byte[] token, byte[] secret,
IProgressListener listener) {
- final UserState uss;
synchronized (mService) {
// Bail if user isn't actually running, otherwise register the given
// listener to watch for unlock progress
- uss = mStartedUsers.get(userId);
+ final UserState uss = mStartedUsers.get(userId);
if (uss == null) {
notifyFinished(userId, listener);
return false;
} else {
uss.mUnlockProgress.addListener(listener);
}
- }
- if (!StorageManager.isUserKeyUnlocked(userId)) {
- final UserInfo userInfo = getUserInfo(userId);
- final IMountService mountService = getMountService();
- try {
- mountService.unlockUserKey(userId, userInfo.serialNumber, token, secret);
- } catch (RemoteException | RuntimeException e) {
- Slog.w(TAG, "Failed to unlock: " + e.getMessage());
- notifyFinished(userId, listener);
- return false;
+ // TODO Move this block outside of synchronized if it causes lock contention
+ if (!StorageManager.isUserKeyUnlocked(userId)) {
+ final UserInfo userInfo = getUserInfo(userId);
+ final IMountService mountService = getMountService();
+ try {
+ mountService.unlockUserKey(userId, userInfo.serialNumber, token, secret);
+ } catch (RemoteException | RuntimeException e) {
+ Slog.w(TAG, "Failed to unlock: " + e.getMessage());
+ notifyFinished(userId, listener);
+ return false;
+ }
}
- }
- synchronized (mService) {
finishUserUnlocking(uss);
// We just unlocked a user, so let's now attempt to unlock any
diff --git a/services/core/java/com/android/server/connectivity/MetricsLoggerService.java b/services/core/java/com/android/server/connectivity/MetricsLoggerService.java
index 6d1c5311fa8e..69ef30fbe66a 100644
--- a/services/core/java/com/android/server/connectivity/MetricsLoggerService.java
+++ b/services/core/java/com/android/server/connectivity/MetricsLoggerService.java
@@ -106,11 +106,13 @@ public class MetricsLoggerService extends SystemService {
}
private void resetThrottlingCounters(long currentTimeMillis) {
- for (int i = 0; i < mThrottlingCounters.length; i++) {
- mThrottlingCounters[i] = 0;
+ synchronized (mThrottlingCounters) {
+ for (int i = 0; i < mThrottlingCounters.length; i++) {
+ mThrottlingCounters[i] = 0;
+ }
+ mThrottlingIntervalBoundaryMillis =
+ currentTimeMillis + THROTTLING_TIME_INTERVAL_MILLIS;
}
- mThrottlingIntervalBoundaryMillis =
- currentTimeMillis + THROTTLING_TIME_INTERVAL_MILLIS;
}
private void addEvent(ConnectivityMetricsEvent e) {
diff --git a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
index 32010608d439..d487bd0163bf 100644
--- a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
+++ b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
@@ -48,15 +48,21 @@ import java.util.Comparator;
// 1. registered, uncreated, disconnected, unvalidated
// This state is entered when a NetworkFactory registers a NetworkAgent in any state except
// the CONNECTED state.
-// 2. registered, uncreated, connected, unvalidated
-// This state is entered when a registered NetworkAgent transitions to the CONNECTED state
-// ConnectivityService will tell netd to create the network and immediately transition to
-// state #3.
-// 3. registered, created, connected, unvalidated
+// 2. registered, uncreated, connecting, unvalidated
+// This state is entered when a registered NetworkAgent for a VPN network transitions to the
+// CONNECTING state (TODO: go through this state for every network, not just VPNs).
+// ConnectivityService will tell netd to create the network early in order to add extra UID
+// routing rules referencing the netID. These rules need to be in place before the network is
+// connected to avoid racing against client apps trying to connect to a half-setup network.
+// 3. registered, uncreated, connected, unvalidated
+// This state is entered when a registered NetworkAgent transitions to the CONNECTED state.
+// ConnectivityService will tell netd to create the network if it was not already created, and
+// immediately transition to state #4.
+// 4. registered, created, connected, unvalidated
// If this network can satisfy the default NetworkRequest, then NetworkMonitor will
// probe for Internet connectivity.
// If this network cannot satisfy the default NetworkRequest, it will immediately be
-// transitioned to state #4.
+// transitioned to state #5.
// A network may remain in this state if NetworkMonitor fails to find Internet connectivity,
// for example:
// a. a captive portal is present, or
@@ -64,14 +70,14 @@ import java.util.Comparator;
// c. a wireless connection stops transfering packets temporarily (e.g. device is in elevator
// or tunnel) but does not disconnect from the AP/cell tower, or
// d. a stand-alone device offering a WiFi AP without an uplink for configuration purposes.
-// 4. registered, created, connected, validated
+// 5. registered, created, connected, validated
//
// The device's default network connection:
// ----------------------------------------
-// Networks in states #3 and #4 may be used as a device's default network connection if they
+// Networks in states #4 and #5 may be used as a device's default network connection if they
// satisfy the default NetworkRequest.
-// A network, that satisfies the default NetworkRequest, in state #4 should always be chosen
-// in favor of a network, that satisfies the default NetworkRequest, in state #3.
+// A network, that satisfies the default NetworkRequest, in state #5 should always be chosen
+// in favor of a network, that satisfies the default NetworkRequest, in state #4.
// When deciding between two networks, that both satisfy the default NetworkRequest, to select
// for the default network connection, the one with the higher score should be chosen.
//
@@ -83,14 +89,14 @@ import java.util.Comparator;
// c. airplane mode is turned on, or
// d. a wireless connection disconnects from AP/cell tower entirely (e.g. device is out of range
// of AP for an extended period of time, or switches to another AP without roaming)
-// then that network can transition from any state (#1-#4) to unregistered. This happens by
+// then that network can transition from any state (#1-#5) to unregistered. This happens by
// the transport disconnecting their NetworkAgent's AsyncChannel with ConnectivityManager.
// ConnectivityService also tells netd to destroy the network.
//
// When ConnectivityService disconnects a network:
// -----------------------------------------------
// If a network has no chance of satisfying any requests (even if it were to become validated
-// and enter state #4), ConnectivityService will disconnect the NetworkAgent's AsyncChannel.
+// and enter state #5), ConnectivityService will disconnect the NetworkAgent's AsyncChannel.
// If the network ever for any period of time had satisfied a NetworkRequest (i.e. had been
// the highest scoring that satisfied the NetworkRequest's constraints), but is no longer the
// highest scoring network for any NetworkRequest, then there will be a 30s pause before
@@ -110,10 +116,14 @@ public class NetworkAgentInfo implements Comparable<NetworkAgentInfo> {
public NetworkCapabilities networkCapabilities;
public final NetworkMonitor networkMonitor;
public final NetworkMisc networkMisc;
- // Indicates if netd has been told to create this Network. Once created the appropriate routing
- // rules are setup and routes are added so packets can begin flowing over the Network.
+ // Indicates if netd has been told to create this Network. From this point on the appropriate
+ // routing rules are setup and routes are added so packets can begin flowing over the Network.
// This is a sticky bit; once set it is never cleared.
public boolean created;
+ // Set to true after the first time this network is marked as CONNECTED. Once set, the network
+ // shows up in API calls, is able to satisfy NetworkRequests and can become the default network.
+ // This is a sticky bit; once set it is never cleared.
+ public boolean everConnected;
// Set to true if this Network successfully passed validation or if it did not satisfy the
// default NetworkRequest in which case validation will not be attempted.
// This is a sticky bit; once set it is never cleared even if future validation attempts fail.
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java
index a111bf925181..6c1e1a703300 100644
--- a/services/core/java/com/android/server/connectivity/Vpn.java
+++ b/services/core/java/com/android/server/connectivity/Vpn.java
@@ -449,8 +449,7 @@ public class Vpn {
mNetworkCapabilities.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
}
- mNetworkInfo.setIsAvailable(true);
- mNetworkInfo.setDetailedState(DetailedState.CONNECTED, null, null);
+ mNetworkInfo.setDetailedState(DetailedState.CONNECTING, null, null);
NetworkMisc networkMisc = new NetworkMisc();
networkMisc.allowBypass = mConfig.allowBypass;
@@ -485,6 +484,9 @@ public class Vpn {
}
}
mNetworkAgent.addUidRanges(mVpnUsers.toArray(new UidRange[mVpnUsers.size()]));
+
+ mNetworkInfo.setIsAvailable(true);
+ updateState(DetailedState.CONNECTED, "agentConnect");
}
private boolean canHaveRestrictedProfile(int userId) {
diff --git a/services/core/java/com/android/server/fingerprint/AuthenticationClient.java b/services/core/java/com/android/server/fingerprint/AuthenticationClient.java
index 10284bb18c75..c04b9a1bed0f 100644
--- a/services/core/java/com/android/server/fingerprint/AuthenticationClient.java
+++ b/services/core/java/com/android/server/fingerprint/AuthenticationClient.java
@@ -74,12 +74,23 @@ public abstract class AuthenticationClient extends ClientMonitor {
} else {
result = true; // client not listening
}
- if (fingerId == 0) {
+ if (!authenticated) {
if (receiver != null) {
FingerprintUtils.vibrateFingerprintError(getContext());
}
// allow system-defined limit of number of attempts before giving up
- result |= handleFailedAttempt();
+ boolean inLockoutMode = handleFailedAttempt();
+ // send lockout event in case driver doesn't enforce it.
+ if (inLockoutMode) {
+ try {
+ Slog.w(TAG, "Forcing lockout (fp driver code should do this!)");
+ receiver.onError(getHalDeviceId(),
+ FingerprintManager.FINGERPRINT_ERROR_LOCKOUT);
+ } catch (RemoteException e) {
+ Slog.w(TAG, "Failed to notify lockout:", e);
+ }
+ }
+ result |= inLockoutMode;
} else {
if (receiver != null) {
FingerprintUtils.vibrateFingerprintSuccess(getContext());
diff --git a/services/core/java/com/android/server/job/JobPackageTracker.java b/services/core/java/com/android/server/job/JobPackageTracker.java
index 4ba9dae87ca4..eb5edd38d8a9 100644
--- a/services/core/java/com/android/server/job/JobPackageTracker.java
+++ b/services/core/java/com/android/server/job/JobPackageTracker.java
@@ -23,6 +23,7 @@ import android.text.format.DateFormat;
import android.util.ArrayMap;
import android.util.SparseArray;
import android.util.TimeUtils;
+import com.android.internal.util.RingBufferIndices;
import com.android.server.job.controllers.JobStatus;
import java.io.PrintWriter;
@@ -33,26 +34,24 @@ public final class JobPackageTracker {
// Number of historical data sets we keep.
static final int NUM_HISTORY = 5;
- private static final int EVENT_BUFFER_SIZE = 50;
+ private static final int EVENT_BUFFER_SIZE = 100;
public static final int EVENT_NULL = 0;
public static final int EVENT_START_JOB = 1;
public static final int EVENT_STOP_JOB = 2;
- private int[] mEventCmds = new int[EVENT_BUFFER_SIZE];
- private long[] mEventTimes = new long[EVENT_BUFFER_SIZE];
- private int[] mEventUids = new int[EVENT_BUFFER_SIZE];
- private String[] mEventTags = new String[EVENT_BUFFER_SIZE];
+ private final RingBufferIndices mEventIndices = new RingBufferIndices(EVENT_BUFFER_SIZE);
+ private final int[] mEventCmds = new int[EVENT_BUFFER_SIZE];
+ private final long[] mEventTimes = new long[EVENT_BUFFER_SIZE];
+ private final int[] mEventUids = new int[EVENT_BUFFER_SIZE];
+ private final String[] mEventTags = new String[EVENT_BUFFER_SIZE];
public void addEvent(int cmd, int uid, String tag) {
- System.arraycopy(mEventCmds, 0, mEventCmds, 1, EVENT_BUFFER_SIZE - 1);
- System.arraycopy(mEventTimes, 0, mEventTimes, 1, EVENT_BUFFER_SIZE - 1);
- System.arraycopy(mEventUids, 0, mEventUids, 1, EVENT_BUFFER_SIZE - 1);
- System.arraycopy(mEventTags, 0, mEventTags, 1, EVENT_BUFFER_SIZE - 1);
- mEventCmds[0] = cmd;
- mEventTimes[0] = SystemClock.elapsedRealtime();
- mEventUids[0] = uid;
- mEventTags[0] = tag;
+ int index = mEventIndices.add();
+ mEventCmds[index] = cmd;
+ mEventTimes[index] = SystemClock.elapsedRealtime();
+ mEventUids[index] = uid;
+ mEventTags[index] = tag;
}
DataSet mCurDataSet = new DataSet();
@@ -61,20 +60,23 @@ public final class JobPackageTracker {
final static class PackageEntry {
long pastActiveTime;
long activeStartTime;
+ int activeNesting;
int activeCount;
boolean hadActive;
long pastActiveTopTime;
long activeTopStartTime;
+ int activeTopNesting;
int activeTopCount;
boolean hadActiveTop;
long pastPendingTime;
long pendingStartTime;
+ int pendingNesting;
int pendingCount;
boolean hadPending;
public long getActiveTime(long now) {
long time = pastActiveTime;
- if (activeCount > 0) {
+ if (activeNesting > 0) {
time += now - activeStartTime;
}
return time;
@@ -82,7 +84,7 @@ public final class JobPackageTracker {
public long getActiveTopTime(long now) {
long time = pastActiveTopTime;
- if (activeTopCount > 0) {
+ if (activeTopNesting > 0) {
time += now - activeTopStartTime;
}
return time;
@@ -90,7 +92,7 @@ public final class JobPackageTracker {
public long getPendingTime(long now) {
long time = pastPendingTime;
- if (pendingCount > 0) {
+ if (pendingNesting > 0) {
time += now - pendingStartTime;
}
return time;
@@ -147,50 +149,53 @@ public final class JobPackageTracker {
void incPending(int uid, String pkg, long now) {
PackageEntry pe = getOrCreateEntry(uid, pkg);
- if (pe.pendingCount == 0) {
+ if (pe.pendingNesting == 0) {
pe.pendingStartTime = now;
+ pe.pendingCount++;
}
- pe.pendingCount++;
+ pe.pendingNesting++;
}
void decPending(int uid, String pkg, long now) {
PackageEntry pe = getOrCreateEntry(uid, pkg);
- if (pe.pendingCount == 1) {
+ if (pe.pendingNesting == 1) {
pe.pastPendingTime += now - pe.pendingStartTime;
}
- pe.pendingCount--;
+ pe.pendingNesting--;
}
void incActive(int uid, String pkg, long now) {
PackageEntry pe = getOrCreateEntry(uid, pkg);
- if (pe.activeCount == 0) {
+ if (pe.activeNesting == 0) {
pe.activeStartTime = now;
+ pe.activeCount++;
}
- pe.activeCount++;
+ pe.activeNesting++;
}
void decActive(int uid, String pkg, long now) {
PackageEntry pe = getOrCreateEntry(uid, pkg);
- if (pe.activeCount == 1) {
+ if (pe.activeNesting == 1) {
pe.pastActiveTime += now - pe.activeStartTime;
}
- pe.activeCount--;
+ pe.activeNesting--;
}
void incActiveTop(int uid, String pkg, long now) {
PackageEntry pe = getOrCreateEntry(uid, pkg);
- if (pe.activeTopCount == 0) {
+ if (pe.activeTopNesting == 0) {
pe.activeTopStartTime = now;
+ pe.activeTopCount++;
}
- pe.activeTopCount++;
+ pe.activeTopNesting++;
}
void decActiveTop(int uid, String pkg, long now) {
PackageEntry pe = getOrCreateEntry(uid, pkg);
- if (pe.activeTopCount == 1) {
+ if (pe.activeTopNesting == 1) {
pe.pastActiveTopTime += now - pe.activeTopStartTime;
}
- pe.activeTopCount--;
+ pe.activeTopNesting--;
}
void finish(DataSet next, long now) {
@@ -198,27 +203,27 @@ public final class JobPackageTracker {
ArrayMap<String, PackageEntry> uidMap = mEntries.valueAt(i);
for (int j = uidMap.size() - 1; j >= 0; j--) {
PackageEntry pe = uidMap.valueAt(j);
- if (pe.activeCount > 0 || pe.activeTopCount > 0 || pe.pendingCount > 0) {
+ if (pe.activeNesting > 0 || pe.activeTopNesting > 0 || pe.pendingNesting > 0) {
// Propagate existing activity in to next data set.
PackageEntry nextPe = next.getOrCreateEntry(mEntries.keyAt(i), uidMap.keyAt(j));
nextPe.activeStartTime = now;
- nextPe.activeCount = pe.activeCount;
+ nextPe.activeNesting = pe.activeNesting;
nextPe.activeTopStartTime = now;
- nextPe.activeTopCount = pe.activeTopCount;
+ nextPe.activeTopNesting = pe.activeTopNesting;
nextPe.pendingStartTime = now;
- nextPe.pendingCount = pe.pendingCount;
+ nextPe.pendingNesting = pe.pendingNesting;
// Finish it off.
- if (pe.activeCount > 0) {
+ if (pe.activeNesting > 0) {
pe.pastActiveTime += now - pe.activeStartTime;
- pe.activeCount = 0;
+ pe.activeNesting = 0;
}
- if (pe.activeTopCount > 0) {
+ if (pe.activeTopNesting > 0) {
pe.pastActiveTopTime += now - pe.activeTopStartTime;
- pe.activeTopCount = 0;
+ pe.activeTopNesting = 0;
}
- if (pe.pendingCount > 0) {
+ if (pe.pendingNesting > 0) {
pe.pastPendingTime += now - pe.pendingStartTime;
- pe.pendingCount = 0;
+ pe.pendingNesting = 0;
}
}
}
@@ -233,17 +238,20 @@ public final class JobPackageTracker {
PackageEntry pe = uidMap.valueAt(j);
PackageEntry outPe = out.getOrCreateEntry(mEntries.keyAt(i), uidMap.keyAt(j));
outPe.pastActiveTime += pe.pastActiveTime;
+ outPe.activeCount += pe.activeCount;
outPe.pastActiveTopTime += pe.pastActiveTopTime;
+ outPe.activeTopCount += pe.activeTopCount;
outPe.pastPendingTime += pe.pastPendingTime;
- if (pe.activeCount > 0) {
+ outPe.pendingCount += pe.pendingCount;
+ if (pe.activeNesting > 0) {
outPe.pastActiveTime += now - pe.activeStartTime;
outPe.hadActive = true;
}
- if (pe.activeTopCount > 0) {
+ if (pe.activeTopNesting > 0) {
outPe.pastActiveTopTime += now - pe.activeTopStartTime;
outPe.hadActiveTop = true;
}
- if (pe.pendingCount > 0) {
+ if (pe.pendingNesting > 0) {
outPe.pastPendingTime += now - pe.pendingStartTime;
outPe.hadPending = true;
}
@@ -251,13 +259,20 @@ public final class JobPackageTracker {
}
}
- void printDuration(PrintWriter pw, long period, long duration, String suffix) {
+ void printDuration(PrintWriter pw, long period, long duration, int count, String suffix) {
float fraction = duration / (float) period;
int percent = (int) ((fraction * 100) + .5f);
if (percent > 0) {
pw.print(" ");
pw.print(percent);
pw.print("% ");
+ pw.print(count);
+ pw.print("x ");
+ pw.print(suffix);
+ } else if (count > 0) {
+ pw.print(" ");
+ pw.print(count);
+ pw.print("x ");
pw.print(suffix);
}
}
@@ -286,16 +301,17 @@ public final class JobPackageTracker {
UserHandle.formatUid(pw, uid);
pw.print(" / "); pw.print(uidMap.keyAt(j));
pw.print(":");
- printDuration(pw, period, pe.getPendingTime(now), "pending");
- printDuration(pw, period, pe.getActiveTime(now), "active");
- printDuration(pw, period, pe.getActiveTopTime(now), "active-top");
- if (pe.pendingCount > 0 || pe.hadPending) {
+ printDuration(pw, period, pe.getPendingTime(now), pe.pendingCount, "pending");
+ printDuration(pw, period, pe.getActiveTime(now), pe.activeCount, "active");
+ printDuration(pw, period, pe.getActiveTopTime(now), pe.activeTopCount,
+ "active-top");
+ if (pe.pendingNesting > 0 || pe.hadPending) {
pw.print(" (pending)");
}
- if (pe.activeCount > 0 || pe.hadActive) {
+ if (pe.activeNesting > 0 || pe.hadActive) {
pw.print(" (active)");
}
- if (pe.activeTopCount > 0 || pe.hadActiveTop) {
+ if (pe.activeTopNesting > 0 || pe.hadActiveTop) {
pw.print(" (active-top)");
}
pw.println();
@@ -389,34 +405,36 @@ public final class JobPackageTracker {
}
public boolean dumpHistory(PrintWriter pw, String prefix, int filterUid) {
- if (mEventCmds[0] == EVENT_NULL) {
+ final int size = mEventIndices.size();
+ if (size <= 0) {
return false;
}
pw.println(" Job history:");
- long now = SystemClock.elapsedRealtime();
- for (int i=EVENT_BUFFER_SIZE-1; i>=0; i--) {
- int uid = mEventUids[i];
+ final long now = SystemClock.elapsedRealtime();
+ for (int i=0; i<size; i++) {
+ final int index = mEventIndices.indexOf(i);
+ final int uid = mEventUids[index];
if (filterUid != -1 && filterUid != UserHandle.getAppId(filterUid)) {
continue;
}
- int cmd = mEventCmds[i];
+ final int cmd = mEventCmds[index];
if (cmd == EVENT_NULL) {
continue;
}
- String label;
- switch (mEventCmds[i]) {
+ final String label;
+ switch (mEventCmds[index]) {
case EVENT_START_JOB: label = "START"; break;
case EVENT_STOP_JOB: label = " STOP"; break;
default: label = " ??"; break;
}
pw.print(prefix);
- TimeUtils.formatDuration(mEventTimes[i]-now, pw, TimeUtils.HUNDRED_DAY_FIELD_LEN);
+ TimeUtils.formatDuration(mEventTimes[index]-now, pw, TimeUtils.HUNDRED_DAY_FIELD_LEN);
pw.print(" ");
pw.print(label);
pw.print(": ");
UserHandle.formatUid(pw, uid);
pw.print(" ");
- pw.println(mEventTags[i]);
+ pw.println(mEventTags[index]);
}
return true;
}
diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java
index 7e26d4b5c4ca..491ee18dc0f4 100644
--- a/services/core/java/com/android/server/job/JobSchedulerService.java
+++ b/services/core/java/com/android/server/job/JobSchedulerService.java
@@ -1339,6 +1339,11 @@ public final class JobSchedulerService extends com.android.server.SystemService
+ " not permitted to schedule jobs for other apps");
}
+ if ((job.getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) != 0) {
+ getContext().enforceCallingOrSelfPermission(
+ android.Manifest.permission.CONNECTIVITY_INTERNAL, TAG);
+ }
+
long ident = Binder.clearCallingIdentity();
try {
return JobSchedulerService.this.scheduleAsPackage(job, callerUid,
diff --git a/services/core/java/com/android/server/job/controllers/ConnectivityController.java b/services/core/java/com/android/server/job/controllers/ConnectivityController.java
index 9fd22686a9a0..e0179dcc9586 100644
--- a/services/core/java/com/android/server/job/controllers/ConnectivityController.java
+++ b/services/core/java/com/android/server/job/controllers/ConnectivityController.java
@@ -170,6 +170,11 @@ public class ConnectivityController extends StateController implements
}
@Override
+ public void onRestrictPowerChanged(boolean restrictPower) {
+ updateTrackedJobs(-1);
+ }
+
+ @Override
public void onRestrictBackgroundChanged(boolean restrictBackground) {
updateTrackedJobs(-1);
}
diff --git a/services/core/java/com/android/server/job/controllers/IdleController.java b/services/core/java/com/android/server/job/controllers/IdleController.java
index c7a679cc4697..5899d1647ad8 100644
--- a/services/core/java/com/android/server/job/controllers/IdleController.java
+++ b/services/core/java/com/android/server/job/controllers/IdleController.java
@@ -28,15 +28,13 @@ import android.content.IntentFilter;
import android.os.SystemClock;
import android.util.Slog;
+import com.android.server.am.ActivityManagerService;
import com.android.server.job.JobSchedulerService;
import com.android.server.job.StateChangedListener;
public class IdleController extends StateController {
private static final String TAG = "IdleController";
- private static final String ACTION_TRIGGER_IDLE =
- "com.android.server.task.controllers.IdleController.ACTION_TRIGGER_IDLE";
-
// Policy: we decide that we're "idle" if the device has been unused /
// screen off or dreaming for at least this long
private long mInactivityIdleThreshold;
@@ -113,7 +111,7 @@ public class IdleController extends StateController {
public IdlenessTracker() {
mAlarm = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
- Intent intent = new Intent(ACTION_TRIGGER_IDLE)
+ Intent intent = new Intent(ActivityManagerService.ACTION_TRIGGER_IDLE)
.setPackage("android")
.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
mIdleTriggerIntent = PendingIntent.getBroadcast(mContext, 0, intent, 0);
@@ -140,7 +138,7 @@ public class IdleController extends StateController {
filter.addAction(Intent.ACTION_DREAMING_STOPPED);
// Debugging/instrumentation
- filter.addAction(ACTION_TRIGGER_IDLE);
+ filter.addAction(ActivityManagerService.ACTION_TRIGGER_IDLE);
mContext.registerReceiver(this, filter);
}
@@ -176,7 +174,7 @@ public class IdleController extends StateController {
mScreenOn = false;
mAlarm.setWindow(AlarmManager.ELAPSED_REALTIME_WAKEUP,
when, mIdleWindowSlop, mIdleTriggerIntent);
- } else if (action.equals(ACTION_TRIGGER_IDLE)) {
+ } else if (action.equals(ActivityManagerService.ACTION_TRIGGER_IDLE)) {
// idle time starts now. Do not set mIdle if screen is on.
if (!mIdle && !mScreenOn) {
if (DEBUG) {
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index a6055c1716f7..344ba179e4c7 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -48,11 +48,16 @@ import static android.net.NetworkPolicyManager.FIREWALL_RULE_DEFAULT;
import static android.net.NetworkPolicyManager.FIREWALL_RULE_DENY;
import static android.net.NetworkPolicyManager.POLICY_NONE;
import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND;
+import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL;
import static android.net.NetworkPolicyManager.RULE_ALLOW_METERED;
+import static android.net.NetworkPolicyManager.MASK_METERED_NETWORKS;
+import static android.net.NetworkPolicyManager.MASK_ALL_NETWORKS;
+import static android.net.NetworkPolicyManager.RULE_NONE;
+import static android.net.NetworkPolicyManager.RULE_REJECT_ALL;
import static android.net.NetworkPolicyManager.RULE_REJECT_METERED;
import static android.net.NetworkPolicyManager.RULE_TEMPORARY_ALLOW_METERED;
-import static android.net.NetworkPolicyManager.RULE_UNKNOWN;
import static android.net.NetworkPolicyManager.computeLastCycleBoundary;
+import static android.net.NetworkPolicyManager.uidRulesToString;
import static android.net.NetworkTemplate.MATCH_MOBILE_3G_LOWER;
import static android.net.NetworkTemplate.MATCH_MOBILE_4G;
import static android.net.NetworkTemplate.MATCH_MOBILE_ALL;
@@ -261,6 +266,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
private static final int MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED = 9;
private static final int MSG_UPDATE_INTERFACE_QUOTA = 10;
private static final int MSG_REMOVE_INTERFACE_QUOTA = 11;
+ private static final int MSG_RESTRICT_POWER_CHANGED = 12;
private final Context mContext;
private final IActivityManager mActivityManager;
@@ -551,9 +557,19 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
updateRulesForGlobalChangeLocked(true);
}
}
+ mHandler.obtainMessage(MSG_RESTRICT_POWER_CHANGED,
+ enabled ? 1 : 0, 0).sendToTarget();
}
});
+ final boolean oldRestrictPower = mRestrictPower;
mRestrictPower = mPowerManagerInternal.getLowPowerModeEnabled();
+ if (mRestrictPower != oldRestrictPower) {
+ // Some early services may have read the default value,
+ // so notify them that it's changed
+ mHandler.obtainMessage(MSG_RESTRICT_POWER_CHANGED,
+ mRestrictPower ? 1 : 0, 0).sendToTarget();
+ }
+
mSystemReady = true;
// read policy from disk
@@ -2048,13 +2064,15 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
private boolean removeRestrictBackgroundWhitelistedUidLocked(int uid, boolean uidDeleted,
boolean updateNow) {
final boolean oldStatus = mRestrictBackgroundWhitelistUids.get(uid);
- if (!oldStatus) {
+ if (!oldStatus && !uidDeleted) {
if (LOGD) Slog.d(TAG, "uid " + uid + " was not whitelisted before");
return false;
}
final boolean needFirewallRules = uidDeleted || isUidValidForWhitelistRules(uid);
- Slog.i(TAG, "removing uid " + uid + " from restrict background whitelist");
- mRestrictBackgroundWhitelistUids.delete(uid);
+ if (oldStatus) {
+ Slog.i(TAG, "removing uid " + uid + " from restrict background whitelist");
+ mRestrictBackgroundWhitelistUids.delete(uid);
+ }
if (mDefaultRestrictBackgroundWhitelistUids.get(uid)
&& !mRestrictBackgroundWhitelistRevokedUids.get(uid)) {
if (LOGD) Slog.d(TAG, "Adding uid " + uid
@@ -2128,6 +2146,15 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
@Override
+ public boolean getRestrictPower() {
+ mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
+
+ synchronized (mRulesLock) {
+ return mRestrictPower;
+ }
+ }
+
+ @Override
public void setDeviceIdleMode(boolean enabled) {
mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
@@ -2352,7 +2379,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
collectKeys(mUidState, knownUids);
collectKeys(mUidRules, knownUids);
- fout.println("Status for known UIDs:");
+ fout.println("Status for all known UIDs:");
fout.increaseIndent();
size = knownUids.size();
for (int i = 0; i < size; i++) {
@@ -2370,20 +2397,29 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
? " (fg svc)" : " (bg)");
}
- final int rule = mUidRules.get(uid, RULE_UNKNOWN);
- fout.print(" rule=");
- fout.print(ruleToString(rule));
+ final int uidRules = mUidRules.get(uid, RULE_NONE);
+ fout.print(" rules=");
+ fout.print(uidRulesToString(uidRules));
+ fout.println();
+ }
+ fout.decreaseIndent();
+ fout.println("Status for just UIDs with rules:");
+ fout.increaseIndent();
+ size = mUidRules.size();
+ for (int i = 0; i < size; i++) {
+ final int uid = mUidRules.keyAt(i);
+ fout.print("UID=");
+ fout.print(uid);
+ final int uidRules = mUidRules.get(uid, RULE_NONE);
+ fout.print(" rules=");
+ fout.print(uidRulesToString(uidRules));
fout.println();
}
fout.decreaseIndent();
}
}
- private String ruleToString(int rule) {
- return DebugUtils.valueToString(NetworkPolicyManager.class, "RULE_", rule);
- }
-
@Override
public void onShellCommand(FileDescriptor in, FileDescriptor out, FileDescriptor err,
String[] args, ResultReceiver resultReceiver) throws RemoteException {
@@ -2564,12 +2600,16 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
enableFirewallChainLocked(chain, enabled);
}
+ private boolean isWhitelistedBatterySaverLocked(int uid) {
+ final int appId = UserHandle.getAppId(uid);
+ return mPowerSaveTempWhitelistAppIds.get(appId) || mPowerSaveWhitelistAppIds.get(appId);
+ }
+
// NOTE: since both fw_dozable and fw_powersave uses the same map
// (mPowerSaveTempWhitelistAppIds) for whitelisting, we can reuse their logic in this method.
private void updateRulesForWhitelistedPowerSaveLocked(int uid, boolean enabled, int chain) {
if (enabled) {
- int appId = UserHandle.getAppId(uid);
- if (mPowerSaveTempWhitelistAppIds.get(appId) || mPowerSaveWhitelistAppIds.get(appId)
+ if (isWhitelistedBatterySaverLocked(uid)
|| isProcStateAllowedWhileIdleOrPowerSaveMode(mUidState.get(uid))) {
setUidFirewallRule(chain, uid, FIREWALL_RULE_ALLOW);
} else {
@@ -2732,7 +2772,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
* <p>There are currently 2 types of restriction rules:
* <ul>
* <li>Battery Saver Mode (also referred as power save).
- * <li>Data Saver Mode (formerly known as restrict background data).
+ * <li>Data Saver Mode (The Feature Formerly Known As 'Restrict Background Data').
* </ul>
*/
private void updateRestrictionRulesForUidLocked(int uid) {
@@ -2777,6 +2817,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
* have permission to use the internet.
*
* <p>The {@link #mUidRules} map is used to define the transtion of states of an UID.
+ *
+ * <p>This method also updates the {@link #mUidRules} with the power-related status for the uid
+ * and send the proper {@value #MSG_RULES_CHANGED} notification, although it does not change
+ * the power-related firewall rules per se.
*/
private void updateRuleForRestrictBackgroundLocked(int uid) {
updateRuleForRestrictBackgroundLocked(uid, false);
@@ -2793,42 +2837,70 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
final int uidPolicy = mUidPolicy.get(uid, POLICY_NONE);
+ final int oldUidRules = mUidRules.get(uid, RULE_NONE);
final boolean isForeground = isUidForegroundOnRestrictBackgroundLocked(uid);
- final boolean isBlacklisted = (uidPolicy & POLICY_REJECT_METERED_BACKGROUND) != 0;
- final boolean isWhitelisted = mRestrictBackgroundWhitelistUids.get(uid);
- int newRule = RULE_UNKNOWN;
- final int oldRule = mUidRules.get(uid, RULE_UNKNOWN);
+ // Data Saver status.
+ final boolean isDsBlacklisted = (uidPolicy & POLICY_REJECT_METERED_BACKGROUND) != 0;
+ final boolean isDsWhitelisted = mRestrictBackgroundWhitelistUids.get(uid);
+ final int oldDsRule = oldUidRules & MASK_METERED_NETWORKS;
+ int newDsRule = RULE_NONE;
+
+ // Battery Saver status.
+ final boolean isBsWhitelisted = isWhitelistedBatterySaverLocked(uid);
+ final int oldBsRule = oldUidRules & MASK_ALL_NETWORKS;
+ int newBsRule = RULE_NONE;
// First step: define the new rule based on user restrictions and foreground state.
if (isForeground) {
- if (isBlacklisted || (mRestrictBackground && !isWhitelisted)) {
- newRule = RULE_TEMPORARY_ALLOW_METERED;
+ // Data Saver rules
+ if (isDsBlacklisted || (mRestrictBackground && !isDsWhitelisted)) {
+ newDsRule = RULE_TEMPORARY_ALLOW_METERED;
+ } else if (isDsWhitelisted) {
+ newDsRule = RULE_ALLOW_METERED;
+ }
+ // Battery Saver rules
+ if (mRestrictPower) {
+ newBsRule = RULE_ALLOW_ALL;
}
} else {
- if (isBlacklisted) {
- newRule = RULE_REJECT_METERED;
- } else if (isWhitelisted) {
- newRule = RULE_ALLOW_METERED;
+ // Data Saver rules
+ if (isDsBlacklisted) {
+ newDsRule = RULE_REJECT_METERED;
+ } else if (mRestrictBackground && isDsWhitelisted) {
+ newDsRule = RULE_ALLOW_METERED;
+ }
+ // Battery Saver rules
+ if (mRestrictPower) {
+ newBsRule = isBsWhitelisted ? RULE_ALLOW_ALL : RULE_REJECT_ALL;
}
}
+ final int newUidRules = newDsRule | newBsRule;
if (LOGV) {
Log.v(TAG, "updateRuleForRestrictBackgroundLocked(" + uid + "):"
- + " isForeground=" +isForeground + ", isBlacklisted: " + isBlacklisted
- + ", isWhitelisted: " + isWhitelisted + ", newRule: " + ruleToString(newRule)
- + ", oldRule: " + ruleToString(oldRule));
+ + " isForeground=" +isForeground + ", isBlacklisted: " + isDsBlacklisted
+ + ", isDsWhitelisted: " + isDsWhitelisted
+ + ", isBsWhitelisted: " + isBsWhitelisted
+ + ", newUidRules: " + uidRulesToString(newUidRules)
+ + ", oldUidRules: " + uidRulesToString(oldUidRules));
}
- if (newRule == RULE_UNKNOWN) {
+ if (newUidRules == RULE_NONE) {
mUidRules.delete(uid);
} else {
- mUidRules.put(uid, newRule);
+ mUidRules.put(uid, newUidRules);
}
+ boolean changed = false;
+
// Second step: apply bw changes based on change of state.
- if (newRule != oldRule) {
- if (newRule == RULE_TEMPORARY_ALLOW_METERED) {
+
+ // Apply Data Saver rules.
+ if (newDsRule != oldDsRule) {
+ changed = true;
+
+ if ((newDsRule & RULE_TEMPORARY_ALLOW_METERED) != 0) {
// Temporarily whitelist foreground app, removing from blacklist if necessary
// (since bw_penalty_box prevails over bw_happy_box).
@@ -2836,44 +2908,69 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
// TODO: if statement below is used to avoid an unnecessary call to netd / iptables,
// but ideally it should be just:
// setMeteredNetworkBlacklist(uid, isBlacklisted);
- if (isBlacklisted) {
+ if (isDsBlacklisted) {
setMeteredNetworkBlacklist(uid, false);
}
- } else if (oldRule == RULE_TEMPORARY_ALLOW_METERED) {
+ } else if ((oldDsRule & RULE_TEMPORARY_ALLOW_METERED) != 0) {
// Remove temporary whitelist from app that is not on foreground anymore.
// TODO: if statements below are used to avoid unnecessary calls to netd / iptables,
// but ideally they should be just:
// setMeteredNetworkWhitelist(uid, isWhitelisted);
// setMeteredNetworkBlacklist(uid, isBlacklisted);
- if (!isWhitelisted) {
+ if (!isDsWhitelisted) {
setMeteredNetworkWhitelist(uid, false);
}
- if (isBlacklisted) {
+ if (isDsBlacklisted) {
setMeteredNetworkBlacklist(uid, true);
}
- } else if (newRule == RULE_REJECT_METERED || oldRule == RULE_REJECT_METERED) {
+ } else if ((newDsRule & RULE_REJECT_METERED) != 0
+ || (oldDsRule & RULE_REJECT_METERED) != 0) {
// Flip state because app was explicitly added or removed to blacklist.
- setMeteredNetworkBlacklist(uid, isBlacklisted);
- if (oldRule == RULE_REJECT_METERED && isWhitelisted) {
+ setMeteredNetworkBlacklist(uid, isDsBlacklisted);
+ if ((oldDsRule & RULE_REJECT_METERED) != 0 && isDsWhitelisted) {
// Since blacklist prevails over whitelist, we need to handle the special case
// where app is whitelisted and blacklisted at the same time (although such
// scenario should be blocked by the UI), then blacklist is removed.
- setMeteredNetworkWhitelist(uid, isWhitelisted);
+ setMeteredNetworkWhitelist(uid, isDsWhitelisted);
}
- } else if (newRule == RULE_ALLOW_METERED || oldRule == RULE_ALLOW_METERED) {
+ } else if ((newDsRule & RULE_ALLOW_METERED) != 0
+ || (oldDsRule & RULE_ALLOW_METERED) != 0) {
// Flip state because app was explicitly added or removed to whitelist.
- setMeteredNetworkWhitelist(uid, isWhitelisted);
+ setMeteredNetworkWhitelist(uid, isDsWhitelisted);
} else {
// All scenarios should have been covered above
- Log.wtf(TAG, "Unexpected change of state for " + uid
- + ": foreground=" + isForeground + ", whitelisted=" + isWhitelisted
- + ", blacklisted=" + isBlacklisted + ", newRule="
- + ruleToString(newRule) + ", oldRule=" + ruleToString(oldRule));
+ Log.wtf(TAG, "Unexpected change of metered UID state for " + uid
+ + ": foreground=" + isForeground
+ + ", whitelisted=" + isDsWhitelisted
+ + ", blacklisted=" + isDsBlacklisted
+ + ", newRule=" + uidRulesToString(newUidRules)
+ + ", oldRule=" + uidRulesToString(oldUidRules));
}
+ }
- // dispatch changed rule to existing listeners
- mHandler.obtainMessage(MSG_RULES_CHANGED, uid, newRule).sendToTarget();
+ // Apply Battery Saver rules.
+ // NOTE: the firewall rules are changed outside this method, but it's still necessary to
+ // send the MSG_RULES_CHANGED so ConnectivityService can update its internal status.
+ if (newBsRule != oldBsRule) {
+ changed = true;
+ if (newBsRule == RULE_NONE || (newBsRule & RULE_ALLOW_ALL) != 0) {
+ if (LOGV) Log.v(TAG, "Allowing non-metered access for UID " + uid);
+ } else if ((newBsRule & RULE_REJECT_ALL) != 0) {
+ if (LOGV) Log.v(TAG, "Rejecting non-metered access for UID " + uid);
+ } else {
+ // All scenarios should have been covered above
+ Log.wtf(TAG, "Unexpected change of non-metered UID state for " + uid
+ + ": foreground=" + isForeground
+ + ", whitelisted=" + isBsWhitelisted
+ + ", newRule=" + uidRulesToString(newUidRules)
+ + ", oldRule=" + uidRulesToString(oldUidRules));
+ }
+ }
+
+ // Final step: dispatch changed rule to existing listeners
+ if (changed) {
+ mHandler.obtainMessage(MSG_RULES_CHANGED, uid, newUidRules).sendToTarget();
}
}
@@ -2939,6 +3036,16 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
}
+ private void dispatchRestrictPowerChanged(INetworkPolicyListener listener,
+ boolean restrictPower) {
+ if (listener != null) {
+ try {
+ listener.onRestrictPowerChanged(restrictPower);
+ } catch (RemoteException ignored) {
+ }
+ }
+ }
+
private Handler.Callback mHandlerCallback = new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
@@ -2986,6 +3093,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
return true;
}
+ case MSG_RESTRICT_POWER_CHANGED: {
+ final boolean restrictPower = msg.arg1 != 0;
+ dispatchRestrictPowerChanged(mConnectivityListener, restrictPower);
+ return true;
+ }
case MSG_RESTRICT_BACKGROUND_CHANGED: {
final boolean restrictBackground = msg.arg1 != 0;
dispatchRestrictBackgroundChanged(mConnectivityListener, restrictBackground);
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 9bdb14920fc8..e411579dbf84 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -3316,9 +3316,9 @@ public class NotificationManagerService extends SystemService {
mNotificationList.remove(index);
+ cancelNotificationLocked(r, sendDelete, reason);
cancelGroupChildrenLocked(r, callingUid, callingPid, listenerName,
REASON_GROUP_SUMMARY_CANCELED);
- cancelNotificationLocked(r, sendDelete, reason);
updateLightsLocked();
}
}
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index c9ba0038d129..4adfc3fb7d45 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -226,6 +226,8 @@ import com.android.internal.app.IMediaContainerService;
import com.android.internal.app.ResolverActivity;
import com.android.internal.content.NativeLibraryHelper;
import com.android.internal.content.PackageHelper;
+import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.internal.os.IParcelFileDescriptorFactory;
import com.android.internal.os.InstallerConnection.InstallerException;
import com.android.internal.os.SomeArgs;
@@ -7162,37 +7164,70 @@ public class PackageManagerService extends IPackageManager.Stub {
pkgs = PackageManagerServiceUtils.getPackagesForDexopt(mPackages.values(), this);
}
- int curr = 0;
- int total = pkgs.size();
+ int numberOfPackagesVisited = 0;
+ int numberOfPackagesOptimized = 0;
+ int numberOfPackagesSkipped = 0;
+ int numberOfPackagesFailed = 0;
+ final int numberOfPackagesToDexopt = pkgs.size();
+ final long startTime = System.nanoTime();
+
for (PackageParser.Package pkg : pkgs) {
- curr++;
+ numberOfPackagesVisited++;
if (!PackageDexOptimizer.canOptimizePackage(pkg)) {
if (DEBUG_DEXOPT) {
Log.i(TAG, "Skipping update of of non-optimizable app " + pkg.packageName);
}
+ numberOfPackagesSkipped++;
continue;
}
if (DEBUG_DEXOPT) {
- Log.i(TAG, "Extracting app " + curr + " of " + total + ": " + pkg.packageName);
+ Log.i(TAG, "Updating app " + numberOfPackagesVisited + " of " +
+ numberOfPackagesToDexopt + ": " + pkg.packageName);
}
- if (!isFirstBoot()) {
+ if (mIsPreNUpgrade) {
try {
ActivityManagerNative.getDefault().showBootMessage(
mContext.getResources().getString(R.string.android_upgrading_apk,
- curr, total), true);
+ numberOfPackagesVisited, numberOfPackagesToDexopt), true);
} catch (RemoteException e) {
}
}
- performDexOpt(pkg.packageName,
+ int dexOptStatus = performDexOptTraced(pkg.packageName,
null /* instructionSet */,
true /* checkProfiles */,
- causeFirstBoot ? REASON_FIRST_BOOT : REASON_BOOT,
+ getCompilerFilterForReason(causeFirstBoot ? REASON_FIRST_BOOT : REASON_BOOT),
false /* force */);
+ switch (dexOptStatus) {
+ case PackageDexOptimizer.DEX_OPT_PERFORMED:
+ numberOfPackagesOptimized++;
+ break;
+ case PackageDexOptimizer.DEX_OPT_SKIPPED:
+ numberOfPackagesSkipped++;
+ break;
+ case PackageDexOptimizer.DEX_OPT_FAILED:
+ numberOfPackagesFailed++;
+ break;
+ default:
+ Log.e(TAG, "Unexpected dexopt return code " + dexOptStatus);
+ break;
+ }
}
+
+ final int elapsedTime = (int) TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime);
+ MetricsLogger.action(mContext,
+ MetricsEvent.OPTIMIZING_APPS_NUM_PKGS_DEXOPTED, numberOfPackagesOptimized);
+ MetricsLogger.action(mContext,
+ MetricsEvent.OPTIMIZING_APPS_NUM_PKGS_SKIPPED, numberOfPackagesSkipped);
+ MetricsLogger.action(mContext,
+ MetricsEvent.OPTIMIZING_APPS_NUM_PKGS_FAILED, numberOfPackagesFailed);
+ MetricsLogger.action(mContext,
+ MetricsEvent.OPTIMIZING_APPS_NUM_PKGS_TOTAL, getOptimizablePackages().size());
+ MetricsLogger.action(mContext,
+ MetricsEvent.OPTIMIZING_APPS_TOTAL_TIME_MS, elapsedTime);
}
@Override
@@ -7209,25 +7244,28 @@ public class PackageManagerService extends IPackageManager.Stub {
// TODO: this is not used nor needed. Delete it.
@Override
public boolean performDexOptIfNeeded(String packageName, String instructionSet) {
- return performDexOptTraced(packageName, instructionSet, false /* checkProfiles */,
- getFullCompilerFilter(), false /* force */);
+ int dexOptStatus = performDexOptTraced(packageName, instructionSet,
+ false /* checkProfiles */, getFullCompilerFilter(), false /* force */);
+ return dexOptStatus != PackageDexOptimizer.DEX_OPT_FAILED;
}
@Override
public boolean performDexOpt(String packageName, String instructionSet,
boolean checkProfiles, int compileReason, boolean force) {
- return performDexOptTraced(packageName, instructionSet, checkProfiles,
+ int dexOptStatus = performDexOptTraced(packageName, instructionSet, checkProfiles,
getCompilerFilterForReason(compileReason), force);
+ return dexOptStatus != PackageDexOptimizer.DEX_OPT_FAILED;
}
@Override
public boolean performDexOptMode(String packageName, String instructionSet,
boolean checkProfiles, String targetCompilerFilter, boolean force) {
- return performDexOptTraced(packageName, instructionSet, checkProfiles,
+ int dexOptStatus = performDexOptTraced(packageName, instructionSet, checkProfiles,
targetCompilerFilter, force);
+ return dexOptStatus != PackageDexOptimizer.DEX_OPT_FAILED;
}
- private boolean performDexOptTraced(String packageName, String instructionSet,
+ private int performDexOptTraced(String packageName, String instructionSet,
boolean checkProfiles, String targetCompilerFilter, boolean force) {
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "dexopt");
try {
@@ -7240,14 +7278,15 @@ public class PackageManagerService extends IPackageManager.Stub {
// Run dexopt on a given package. Returns true if dexopt did not fail, i.e.
// if the package can now be considered up to date for the given filter.
- private boolean performDexOptInternal(String packageName, String instructionSet,
+ private int performDexOptInternal(String packageName, String instructionSet,
boolean checkProfiles, String targetCompilerFilter, boolean force) {
PackageParser.Package p;
final String targetInstructionSet;
synchronized (mPackages) {
p = mPackages.get(packageName);
if (p == null) {
- return false;
+ // Package could not be found. Report failure.
+ return PackageDexOptimizer.DEX_OPT_FAILED;
}
mPackageUsage.write(false);
@@ -7258,9 +7297,8 @@ public class PackageManagerService extends IPackageManager.Stub {
try {
synchronized (mInstallLock) {
final String[] instructionSets = new String[] { targetInstructionSet };
- int result = performDexOptInternalWithDependenciesLI(p, instructionSets,
- checkProfiles, targetCompilerFilter, force);
- return result != PackageDexOptimizer.DEX_OPT_FAILED;
+ return performDexOptInternalWithDependenciesLI(p, instructionSets, checkProfiles,
+ targetCompilerFilter, force);
}
} finally {
Binder.restoreCallingIdentity(callingId);
@@ -7836,9 +7874,16 @@ public class PackageManagerService extends IPackageManager.Stub {
mResolveActivity.launchMode = ActivityInfo.LAUNCH_MULTIPLE;
mResolveActivity.documentLaunchMode = ActivityInfo.DOCUMENT_LAUNCH_NEVER;
mResolveActivity.flags = ActivityInfo.FLAG_EXCLUDE_FROM_RECENTS;
- mResolveActivity.theme = R.style.Theme_Holo_Dialog_Alert;
+ mResolveActivity.theme = R.style.Theme_Material_Dialog_Alert;
mResolveActivity.exported = true;
mResolveActivity.enabled = true;
+ mResolveActivity.resizeMode = ActivityInfo.RESIZE_MODE_RESIZEABLE;
+ mResolveActivity.configChanges = ActivityInfo.CONFIG_SCREEN_SIZE
+ | ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE
+ | ActivityInfo.CONFIG_SCREEN_LAYOUT
+ | ActivityInfo.CONFIG_ORIENTATION
+ | ActivityInfo.CONFIG_KEYBOARD
+ | ActivityInfo.CONFIG_KEYBOARD_HIDDEN;
mResolveInfo.activityInfo = mResolveActivity;
mResolveInfo.priority = 0;
mResolveInfo.preferredOrder = 0;
@@ -11465,10 +11510,10 @@ public class PackageManagerService extends IPackageManager.Stub {
// List of package names for whom the suspended state is not set as requested in this
// method.
List<String> unactionedPackages = new ArrayList<>(packageNames.length);
- for (int i = 0; i < packageNames.length; i++) {
- String packageName = packageNames[i];
- long callingId = Binder.clearCallingIdentity();
- try {
+ long callingId = Binder.clearCallingIdentity();
+ try {
+ for (int i = 0; i < packageNames.length; i++) {
+ String packageName = packageNames[i];
boolean changed = false;
final int appId;
synchronized (mPackages) {
@@ -11496,9 +11541,9 @@ public class PackageManagerService extends IPackageManager.Stub {
killApplication(packageName, UserHandle.getUid(userId, appId),
"suspending package");
}
- } finally {
- Binder.restoreCallingIdentity(callingId);
}
+ } finally {
+ Binder.restoreCallingIdentity(callingId);
}
if (!changedPackages.isEmpty()) {
@@ -11523,11 +11568,6 @@ public class PackageManagerService extends IPackageManager.Stub {
}
}
- /**
- * TODO: cache and disallow blocking the active dialer.
- *
- * @see also DefaultPermissionGrantPolicy#grantDefaultSystemHandlerPermissions
- */
private boolean canSuspendPackageForUserLocked(String packageName, int userId) {
if (isPackageDeviceAdmin(packageName, userId)) {
Slog.w(TAG, "Cannot suspend/un-suspend package \"" + packageName
@@ -11554,10 +11594,9 @@ public class PackageManagerService extends IPackageManager.Stub {
return false;
}
- final PackageParser.Package pkg = mPackages.get(packageName);
- if (pkg != null && isPrivilegedApp(pkg)) {
+ if (packageName.equals(getDefaultDialerPackageName(userId))) {
Slog.w(TAG, "Cannot suspend/un-suspend package \"" + packageName
- + "\": is a privileged app");
+ + "\": is the default dialer");
return false;
}
@@ -11576,6 +11615,12 @@ public class PackageManagerService extends IPackageManager.Stub {
return resolveInfo == null ? null : resolveInfo.activityInfo.packageName;
}
+ private String getDefaultDialerPackageName(int userId) {
+ synchronized (mPackages) {
+ return mSettings.getDefaultDialerPackageNameLPw(userId);
+ }
+ }
+
@Override
public void verifyPendingInstall(int id, int verificationCode) throws RemoteException {
mContext.enforceCallingOrSelfPermission(
@@ -18838,9 +18883,14 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
continue;
}
- sm.prepareUserStorage(volumeUuid, user.id, user.serialNumber, flags);
- synchronized (mInstallLock) {
- reconcileAppsDataLI(volumeUuid, user.id, flags);
+ try {
+ sm.prepareUserStorage(volumeUuid, user.id, user.serialNumber, flags);
+ synchronized (mInstallLock) {
+ reconcileAppsDataLI(volumeUuid, user.id, flags);
+ }
+ } catch (IllegalStateException e) {
+ // Device was probably ejected, and we'll process that event momentarily
+ Slog.w(TAG, "Failed to prepare storage: " + e);
}
}
@@ -20318,6 +20368,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
@Override
public void grantDefaultPermissionsToDefaultDialerApp(String packageName, int userId) {
synchronized (mPackages) {
+ mSettings.setDefaultDialerPackageNameLPw(packageName, userId);
mDefaultPermissionPolicy.grantDefaultPermissionsToDefaultDialerAppLPr(
packageName, userId);
}
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index e2e6c7be2580..7fc0e8c13aca 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -189,6 +189,7 @@ final class Settings {
private static final String TAG_ALL_INTENT_FILTER_VERIFICATION =
"all-intent-filter-verifications";
private static final String TAG_DEFAULT_BROWSER = "default-browser";
+ private static final String TAG_DEFAULT_DIALER = "default-dialer";
private static final String TAG_VERSION = "version";
private static final String TAG_N_WORK = "n-work";
@@ -376,6 +377,9 @@ final class Settings {
// For every user, it is used to find the package name of the default Browser App.
final SparseArray<String> mDefaultBrowserApp = new SparseArray<String>();
+ // For every user, a record of the package name of the default Dialer App.
+ final SparseArray<String> mDefaultDialerApp = new SparseArray<String>();
+
// App-link priority tracking, per-user
final SparseIntArray mNextAppLinkGeneration = new SparseIntArray();
@@ -1357,6 +1361,19 @@ final class Settings {
return (userId == UserHandle.USER_ALL) ? null : mDefaultBrowserApp.get(userId);
}
+ boolean setDefaultDialerPackageNameLPw(String packageName, int userId) {
+ if (userId == UserHandle.USER_ALL) {
+ return false;
+ }
+ mDefaultDialerApp.put(userId, packageName);
+ writePackageRestrictionsLPr(userId);
+ return true;
+ }
+
+ String getDefaultDialerPackageNameLPw(int userId) {
+ return (userId == UserHandle.USER_ALL) ? null : mDefaultDialerApp.get(userId);
+ }
+
private File getUserPackagesStateFile(int userId) {
// TODO: Implement a cleaner solution when adding tests.
// This instead of Environment.getUserSystemDirectory(userId) to support testing.
@@ -1546,6 +1563,9 @@ final class Settings {
if (tagName.equals(TAG_DEFAULT_BROWSER)) {
String packageName = parser.getAttributeValue(null, ATTR_PACKAGE_NAME);
mDefaultBrowserApp.put(userId, packageName);
+ } else if (tagName.equals(TAG_DEFAULT_DIALER)) {
+ String packageName = parser.getAttributeValue(null, ATTR_PACKAGE_NAME);
+ mDefaultDialerApp.put(userId, packageName);
} else {
String msg = "Unknown element under " + TAG_DEFAULT_APPS + ": " +
parser.getName();
@@ -1893,12 +1913,18 @@ final class Settings {
void writeDefaultAppsLPr(XmlSerializer serializer, int userId)
throws IllegalArgumentException, IllegalStateException, IOException {
serializer.startTag(null, TAG_DEFAULT_APPS);
- String packageName = mDefaultBrowserApp.get(userId);
- if (!TextUtils.isEmpty(packageName)) {
+ String defaultBrowser = mDefaultBrowserApp.get(userId);
+ if (!TextUtils.isEmpty(defaultBrowser)) {
serializer.startTag(null, TAG_DEFAULT_BROWSER);
- serializer.attribute(null, ATTR_PACKAGE_NAME, packageName);
+ serializer.attribute(null, ATTR_PACKAGE_NAME, defaultBrowser);
serializer.endTag(null, TAG_DEFAULT_BROWSER);
}
+ String defaultDialer = mDefaultDialerApp.get(userId);
+ if (!TextUtils.isEmpty(defaultDialer)) {
+ serializer.startTag(null, TAG_DEFAULT_DIALER);
+ serializer.attribute(null, ATTR_PACKAGE_NAME, defaultDialer);
+ serializer.endTag(null, TAG_DEFAULT_DIALER);
+ }
serializer.endTag(null, TAG_DEFAULT_APPS);
}
diff --git a/services/core/java/com/android/server/trust/TrustManagerService.java b/services/core/java/com/android/server/trust/TrustManagerService.java
index 728e244bfb10..c1868a456641 100644
--- a/services/core/java/com/android/server/trust/TrustManagerService.java
+++ b/services/core/java/com/android/server/trust/TrustManagerService.java
@@ -53,6 +53,7 @@ import android.os.RemoteException;
import android.os.SystemClock;
import android.os.UserHandle;
import android.os.UserManager;
+import android.os.storage.StorageManager;
import android.provider.Settings;
import android.service.trust.TrustAgentService;
import android.util.ArraySet;
@@ -103,6 +104,7 @@ public class TrustManagerService extends SystemService {
private static final int MSG_SWITCH_USER = 9;
private static final int MSG_SET_DEVICE_LOCKED = 10;
private static final int MSG_FLUSH_TRUST_USUALLY_MANAGED = 11;
+ private static final int MSG_UNLOCK_USER = 12;
private static final int TRUST_USUALLY_MANAGED_FLUSH_DELAY = 2 * 60 * 1000;
@@ -253,6 +255,7 @@ public class TrustManagerService extends SystemService {
if (userInfo == null || userInfo.partial || !userInfo.isEnabled()
|| userInfo.guestToRemove) continue;
if (!userInfo.supportsSwitchToByUser()) continue;
+ if (!StorageManager.isUserKeyUnlocked(userInfo.id)) continue;
if (!mActivityManager.isUserRunning(userInfo.id)) continue;
if (!lockPatternUtils.isSecure(userInfo.id)) continue;
if (!mStrongAuthTracker.canAgentsRunForUser(userInfo.id)) continue;
@@ -527,7 +530,8 @@ public class TrustManagerService extends SystemService {
private List<ResolveInfo> resolveAllowedTrustAgents(PackageManager pm, int userId) {
List<ResolveInfo> resolveInfos = pm.queryIntentServicesAsUser(TRUST_AGENT_INTENT,
- 0 /* flags */, userId);
+ PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE,
+ userId);
ArrayList<ResolveInfo> allowedAgents = new ArrayList<>(resolveInfos.size());
for (ResolveInfo resolveInfo : resolveInfos) {
if (resolveInfo.serviceInfo == null) continue;
@@ -664,6 +668,11 @@ public class TrustManagerService extends SystemService {
mHandler.obtainMessage(MSG_SWITCH_USER, userId, 0, null).sendToTarget();
}
+ @Override
+ public void onUnlockUser(int userId) {
+ mHandler.obtainMessage(MSG_UNLOCK_USER, userId, 0, null).sendToTarget();
+ }
+
// Plumbing
private final IBinder mService = new ITrustManager.Stub() {
@@ -896,6 +905,7 @@ public class TrustManagerService extends SystemService {
break;
case MSG_START_USER:
case MSG_CLEANUP_USER:
+ case MSG_UNLOCK_USER:
refreshAgentList(msg.arg1);
break;
case MSG_SWITCH_USER:
@@ -918,6 +928,7 @@ public class TrustManagerService extends SystemService {
mLockPatternUtils.setTrustUsuallyManaged(value, userId);
}
}
+ break;
}
}
};
diff --git a/services/core/java/com/android/server/tv/TvInputHardwareManager.java b/services/core/java/com/android/server/tv/TvInputHardwareManager.java
index bf281d6fb471..5c6a69682b61 100644
--- a/services/core/java/com/android/server/tv/TvInputHardwareManager.java
+++ b/services/core/java/com/android/server/tv/TvInputHardwareManager.java
@@ -17,7 +17,6 @@
package com.android.server.tv;
import static android.media.tv.TvInputManager.INPUT_STATE_CONNECTED;
-import static android.media.tv.TvInputManager.INPUT_STATE_CONNECTED_STANDBY;
import static android.media.tv.TvInputManager.INPUT_STATE_DISCONNECTED;
import android.content.BroadcastReceiver;
@@ -110,6 +109,7 @@ class TvInputHardwareManager implements TvInputHal.Callback {
private int mCurrentIndex = 0;
private int mCurrentMaxIndex = 0;
+ // TODO: Should handle STANDBY case.
private final SparseBooleanArray mHdmiStateMap = new SparseBooleanArray();
private final List<Message> mPendingHdmiDeviceEvents = new LinkedList<>();
@@ -213,7 +213,7 @@ class TvInputHardwareManager implements TvInputHal.Callback {
String inputId = mHardwareInputIdMap.get(deviceId);
if (inputId != null) {
mHandler.obtainMessage(ListenerHandler.STATE_CHANGED,
- obtainStateFromConfigs(configs), 0, inputId).sendToTarget();
+ convertConnectedToState(configs.length > 0), 0, inputId).sendToTarget();
}
ITvInputHardwareCallback callback = connection.getCallbackLocked();
if (callback != null) {
@@ -263,13 +263,12 @@ class TvInputHardwareManager implements TvInputHal.Callback {
|| connectionCallingUid != callingUid || connectionResolvedUserId != resolvedUserId;
}
- private int obtainStateFromConfigs(TvStreamConfig[] configs) {
- for (TvStreamConfig config : configs) {
- if ((config.getFlags() & TvStreamConfig.FLAG_MASK_SIGNAL_DETECTION) != 0) {
- return INPUT_STATE_CONNECTED;
- }
+ private int convertConnectedToState(boolean connected) {
+ if (connected) {
+ return INPUT_STATE_CONNECTED;
+ } else {
+ return INPUT_STATE_DISCONNECTED;
}
- return (configs.length > 0) ? INPUT_STATE_CONNECTED_STANDBY : INPUT_STATE_DISCONNECTED;
}
public void addHardwareInput(int deviceId, TvInputInfo info) {
@@ -294,14 +293,9 @@ class TvInputHardwareManager implements TvInputHal.Callback {
}
String inputId = mHardwareInputIdMap.get(hardwareInfo.getDeviceId());
if (inputId != null && inputId.equals(info.getId())) {
- // No HDMI hotplug does not necessarily mean disconnected, as old devices may
- // not report hotplug state correctly. Using INPUT_STATE_CONNECTED_STANDBY to
- // denote unknown state.
- int state = mHdmiStateMap.valueAt(i)
- ? INPUT_STATE_CONNECTED
- : INPUT_STATE_CONNECTED_STANDBY;
- mHandler.obtainMessage(
- ListenerHandler.STATE_CHANGED, state, 0, inputId).sendToTarget();
+ mHandler.obtainMessage(ListenerHandler.STATE_CHANGED,
+ convertConnectedToState(mHdmiStateMap.valueAt(i)), 0,
+ inputId).sendToTarget();
return;
}
}
@@ -309,7 +303,7 @@ class TvInputHardwareManager implements TvInputHal.Callback {
Connection connection = mConnections.get(deviceId);
if (connection != null) {
mHandler.obtainMessage(ListenerHandler.STATE_CHANGED,
- obtainStateFromConfigs(connection.getConfigsLocked()), 0,
+ convertConnectedToState(connection.getConfigsLocked().length > 0), 0,
info.getId()).sendToTarget();
}
}
@@ -1199,14 +1193,8 @@ class TvInputHardwareManager implements TvInputHal.Callback {
if (inputId == null) {
return;
}
- // No HDMI hotplug does not necessarily mean disconnected, as old devices may
- // not report hotplug state correctly. Using INPUT_STATE_CONNECTED_STANDBY to
- // denote unknown state.
- int state = event.isConnected()
- ? INPUT_STATE_CONNECTED
- : INPUT_STATE_CONNECTED_STANDBY;
- mHandler.obtainMessage(
- ListenerHandler.STATE_CHANGED, state, 0, inputId).sendToTarget();
+ mHandler.obtainMessage(ListenerHandler.STATE_CHANGED,
+ convertConnectedToState(event.isConnected()), 0, inputId).sendToTarget();
}
}
}
diff --git a/services/core/java/com/android/server/tv/TvInputManagerService.java b/services/core/java/com/android/server/tv/TvInputManagerService.java
index b389cf55b08d..52baa609fe97 100644
--- a/services/core/java/com/android/server/tv/TvInputManagerService.java
+++ b/services/core/java/com/android/server/tv/TvInputManagerService.java
@@ -157,6 +157,18 @@ public final class TvInputManagerService extends SystemService {
mTvInputHardwareManager.onBootPhase(phase);
}
+ @Override
+ public void onUnlockUser(int userHandle) {
+ if (DEBUG) Slog.d(TAG, "onUnlockUser(userHandle=" + userHandle + ")");
+ synchronized (mLock) {
+ if (mCurrentUserId != userHandle) {
+ return;
+ }
+ buildTvInputListLocked(mCurrentUserId, null);
+ buildTvContentRatingSystemListLocked(mCurrentUserId);
+ }
+ }
+
private void registerBroadcastReceivers() {
PackageMonitor monitor = new PackageMonitor() {
private void buildTvInputList(String[] packages) {
@@ -403,7 +415,38 @@ public final class TvInputManagerService extends SystemService {
if (mCurrentUserId == userId) {
return;
}
- clearSessionAndServiceStatesLocked(mUserStates.get(mCurrentUserId));
+ UserState userState = mUserStates.get(mCurrentUserId);
+ List<SessionState> sessionStatesToRelease = new ArrayList<>();
+ for (SessionState sessionState : userState.sessionStateMap.values()) {
+ if (sessionState.session != null && !sessionState.isRecordingSession) {
+ sessionStatesToRelease.add(sessionState);
+ }
+ }
+ for (SessionState sessionState : sessionStatesToRelease) {
+ try {
+ sessionState.session.release();
+ } catch (RemoteException e) {
+ Slog.e(TAG, "error in release", e);
+ }
+ clearSessionAndNotifyClientLocked(sessionState);
+ }
+
+ for (Iterator<ComponentName> it = userState.serviceStateMap.keySet().iterator();
+ it.hasNext(); ) {
+ ComponentName component = it.next();
+ ServiceState serviceState = userState.serviceStateMap.get(component);
+ if (serviceState != null && serviceState.sessionTokens.isEmpty()) {
+ if (serviceState.callback != null) {
+ try {
+ serviceState.service.unregisterCallback(serviceState.callback);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "error in unregisterCallback", e);
+ }
+ }
+ mContext.unbindService(serviceState.connection);
+ it.remove();
+ }
+ }
mCurrentUserId = userId;
getOrCreateUserStateLocked(userId);
@@ -414,13 +457,61 @@ public final class TvInputManagerService extends SystemService {
}
}
+ private void clearSessionAndNotifyClientLocked(SessionState state) {
+ if (state.client != null) {
+ try {
+ state.client.onSessionReleased(state.seq);
+ } catch(RemoteException e) {
+ Slog.e(TAG, "error in onSessionReleased", e);
+ }
+ }
+ // If there are any other sessions based on this session, they should be released.
+ UserState userState = getOrCreateUserStateLocked(state.userId);
+ for (SessionState sessionState : userState.sessionStateMap.values()) {
+ if (state.sessionToken == sessionState.hardwareSessionToken) {
+ releaseSessionLocked(sessionState.sessionToken, Process.SYSTEM_UID, state.userId);
+ try {
+ sessionState.client.onSessionReleased(sessionState.seq);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "error in onSessionReleased", e);
+ }
+ }
+ }
+ removeSessionStateLocked(state.sessionToken, state.userId);
+ }
+
private void removeUser(int userId) {
synchronized (mLock) {
UserState userState = mUserStates.get(userId);
if (userState == null) {
return;
}
- clearSessionAndServiceStatesLocked(userState);
+ // Release all created sessions.
+ for (SessionState state : userState.sessionStateMap.values()) {
+ if (state.session != null) {
+ try {
+ state.session.release();
+ } catch (RemoteException e) {
+ Slog.e(TAG, "error in release", e);
+ }
+ }
+ }
+ userState.sessionStateMap.clear();
+
+ // Unregister all callbacks and unbind all services.
+ for (ServiceState serviceState : userState.serviceStateMap.values()) {
+ if (serviceState.service != null) {
+ if (serviceState.callback != null) {
+ try {
+ serviceState.service.unregisterCallback(serviceState.callback);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "error in unregisterCallback", e);
+ }
+ }
+ mContext.unbindService(serviceState.connection);
+ }
+ }
+ userState.serviceStateMap.clear();
// Clear everything else.
userState.inputMap.clear();
@@ -434,35 +525,6 @@ public final class TvInputManagerService extends SystemService {
}
}
- private void clearSessionAndServiceStatesLocked(UserState userState) {
- // Release created sessions.
- for (SessionState state : userState.sessionStateMap.values()) {
- if (state.session != null) {
- try {
- state.session.release();
- } catch (RemoteException e) {
- Slog.e(TAG, "error in release", e);
- }
- }
- }
- userState.sessionStateMap.clear();
-
- // Unregister all callbacks and unbind all services.
- for (ServiceState serviceState : userState.serviceStateMap.values()) {
- if (serviceState.service != null) {
- if (serviceState.callback != null) {
- try {
- serviceState.service.unregisterCallback(serviceState.callback);
- } catch (RemoteException e) {
- Slog.e(TAG, "error in unregisterCallback", e);
- }
- }
- mContext.unbindService(serviceState.connection);
- }
- }
- userState.serviceStateMap.clear();
- }
-
private ContentResolver getContentResolverForUser(int userId) {
UserHandle user = new UserHandle(userId);
Context context;
@@ -527,11 +589,6 @@ public final class TvInputManagerService extends SystemService {
false, methodName, null);
}
- private static boolean shouldMaintainConnection(ServiceState serviceState) {
- return !serviceState.sessionTokens.isEmpty() || serviceState.isHardware;
- // TODO: Find a way to maintain connection to hardware TV input service only when necessary.
- }
-
private void updateServiceConnectionLocked(ComponentName component, int userId) {
UserState userState = getOrCreateUserStateLocked(userId);
ServiceState serviceState = userState.serviceStateMap.get(component);
@@ -545,8 +602,19 @@ public final class TvInputManagerService extends SystemService {
}
serviceState.reconnecting = false;
}
- boolean maintainConnection = shouldMaintainConnection(serviceState);
- if (serviceState.service == null && maintainConnection && userId == mCurrentUserId) {
+
+ boolean shouldBind;
+ if (userId == mCurrentUserId) {
+ shouldBind = !serviceState.sessionTokens.isEmpty() || serviceState.isHardware;
+ } else {
+ // For a non-current user,
+ // if sessionTokens is not empty, it contains recording sessions only
+ // because other sessions must have been removed while switching user
+ // and non-recording sessions are not created by createSession().
+ shouldBind = !serviceState.sessionTokens.isEmpty();
+ }
+
+ if (serviceState.service == null && shouldBind) {
// This means that the service is not yet connected but its state indicates that we
// have pending requests. Then, connect the service.
if (serviceState.bound) {
@@ -563,7 +631,7 @@ public final class TvInputManagerService extends SystemService {
i, serviceState.connection,
Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE,
new UserHandle(userId));
- } else if (serviceState.service != null && !maintainConnection) {
+ } else if (serviceState.service != null && !shouldBind) {
// This means that the service is already connected but its state indicates that we have
// nothing to do with it. Then, disconnect the service.
if (DEBUG) {
@@ -799,7 +867,7 @@ public final class TvInputManagerService extends SystemService {
int oldState = inputState.state;
inputState.state = state;
if (serviceState != null && serviceState.service == null
- && shouldMaintainConnection(serviceState)) {
+ && (!serviceState.sessionTokens.isEmpty() || serviceState.isHardware)) {
// We don't notify state change while reconnecting. It should remain disconnected.
return;
}
@@ -1068,6 +1136,13 @@ public final class TvInputManagerService extends SystemService {
final long identity = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
+ if (userId != mCurrentUserId && !isRecordingSession) {
+ // A non-recording session of a backgroud (non-current) user
+ // should not be created.
+ // Let the client get onConnectionFailed callback for this case.
+ sendSessionTokenToClientLocked(client, inputId, null, null, seq);
+ return;
+ }
UserState userState = getOrCreateUserStateLocked(resolvedUserId);
TvInputState inputState = userState.inputMap.get(inputId);
if (inputState == null) {
@@ -2061,27 +2136,7 @@ public final class TvInputManagerService extends SystemService {
public void binderDied() {
synchronized (mLock) {
session = null;
- if (client != null) {
- try {
- client.onSessionReleased(seq);
- } catch(RemoteException e) {
- Slog.e(TAG, "error in onSessionReleased", e);
- }
- }
- // If there are any other sessions based on this session, they should be released.
- UserState userState = getOrCreateUserStateLocked(userId);
- for (SessionState sessionState : userState.sessionStateMap.values()) {
- if (sessionToken == sessionState.hardwareSessionToken) {
- releaseSessionLocked(sessionState.sessionToken, Process.SYSTEM_UID,
- userId);
- try {
- sessionState.client.onSessionReleased(sessionState.seq);
- } catch (RemoteException e) {
- Slog.e(TAG, "error in onSessionReleased", e);
- }
- }
- }
- removeSessionStateLocked(sessionToken, userId);
+ clearSessionAndNotifyClientLocked(this);
}
}
}
diff --git a/services/core/java/com/android/server/wm/AppWindowAnimator.java b/services/core/java/com/android/server/wm/AppWindowAnimator.java
index abb1bb193f20..49dab0a66815 100644
--- a/services/core/java/com/android/server/wm/AppWindowAnimator.java
+++ b/services/core/java/com/android/server/wm/AppWindowAnimator.java
@@ -224,6 +224,12 @@ public class AppWindowAnimator {
if (transferWinAnimator != null) {
mAllAppWinAnimators.remove(transferWinAnimator);
toAppAnimator.mAllAppWinAnimators.add(transferWinAnimator);
+ toAppAnimator.hasTransformation = transferWinAnimator.mAppAnimator.hasTransformation;
+ if (toAppAnimator.hasTransformation) {
+ toAppAnimator.transformation.set(transferWinAnimator.mAppAnimator.transformation);
+ } else {
+ toAppAnimator.transformation.clear();
+ }
transferWinAnimator.mAppAnimator = toAppAnimator;
}
}
diff --git a/services/core/java/com/android/server/wm/BoundsAnimationController.java b/services/core/java/com/android/server/wm/BoundsAnimationController.java
index 220a6de1d888..51c40456c66a 100644
--- a/services/core/java/com/android/server/wm/BoundsAnimationController.java
+++ b/services/core/java/com/android/server/wm/BoundsAnimationController.java
@@ -24,6 +24,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
import android.animation.Animator;
import android.animation.ValueAnimator;
import android.graphics.Rect;
+import android.os.Handler;
import android.os.IBinder;
import android.os.Debug;
import android.util.ArrayMap;
@@ -40,6 +41,8 @@ import android.view.WindowManagerInternal;
* the bounds of the resized object.
*
* The object that is resized needs to implement {@link AnimateBoundsUser} interface.
+ *
+ * NOTE: All calls to methods in this class should be done on the UI thread
*/
public class BoundsAnimationController {
private static final boolean DEBUG_LOCAL = false;
@@ -51,28 +54,41 @@ public class BoundsAnimationController {
// Only accessed on UI thread.
private ArrayMap<AnimateBoundsUser, BoundsAnimator> mRunningAnimations = new ArrayMap<>();
- private final WindowManagerInternal.AppTransitionListener mAppTransitionNotifier
- = new WindowManagerInternal.AppTransitionListener() {
- public void onAppTransitionCancelledLocked() {
- animationFinished();
- }
- public void onAppTransitionFinishedLocked(IBinder token) {
- animationFinished();
- }
- private void animationFinished() {
- if (mFinishAnimationAfterTransition) {
- for (int i = 0; i < mRunningAnimations.size(); i++) {
- BoundsAnimator b = mRunningAnimations.valueAt(i);
- b.onAnimationEnd(null);
- }
- }
- }
- };
+ private final class AppTransitionNotifier
+ extends WindowManagerInternal.AppTransitionListener implements Runnable {
+
+ public void onAppTransitionCancelledLocked() {
+ animationFinished();
+ }
+ public void onAppTransitionFinishedLocked(IBinder token) {
+ animationFinished();
+ }
+ private void animationFinished() {
+ if (mFinishAnimationAfterTransition) {
+ mHandler.removeCallbacks(this);
+ // This might end up calling into activity manager which will be bad since we have the
+ // window manager lock held at this point. Post a message to take care of the processing
+ // so we don't deadlock.
+ mHandler.post(this);
+ }
+ }
+
+ @Override
+ public void run() {
+ for (int i = 0; i < mRunningAnimations.size(); i++) {
+ final BoundsAnimator b = mRunningAnimations.valueAt(i);
+ b.onAnimationEnd(null);
+ }
+ }
+ }
+ private final Handler mHandler;
private final AppTransition mAppTransition;
+ private final AppTransitionNotifier mAppTransitionNotifier = new AppTransitionNotifier();
private boolean mFinishAnimationAfterTransition = false;
- BoundsAnimationController(AppTransition transition) {
+ BoundsAnimationController(AppTransition transition, Handler handler) {
+ mHandler = handler;
mAppTransition = transition;
mAppTransition.registerListenerLocked(mAppTransitionNotifier);
}
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 037eb5add22d..1fdc714dbf5a 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -603,6 +603,8 @@ class DisplayContent {
}
pw.println();
mDimLayerController.dump(prefix + " ", pw);
+ pw.println();
+ mDividerControllerLocked.dump(prefix + " ", pw);
}
@Override
diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java
index 45262d33ffb3..ca68d55dfb83 100644
--- a/services/core/java/com/android/server/wm/DockedStackDividerController.java
+++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java
@@ -44,6 +44,7 @@ import android.view.animation.PathInterpolator;
import com.android.server.wm.DimLayer.DimLayerUser;
import com.android.server.wm.WindowManagerService.H;
+import java.io.PrintWriter;
import java.util.ArrayList;
/**
@@ -377,6 +378,9 @@ public class DockedStackDividerController implements DimLayerUser {
}
private void checkMinimizeChanged(boolean animate) {
+ if (mDisplayContent.getDockedStackVisibleForUserLocked() == null) {
+ return;
+ }
final TaskStack homeStack = mDisplayContent.getHomeStack();
if (homeStack == null) {
return;
@@ -411,8 +415,7 @@ public class DockedStackDividerController implements DimLayerUser {
private void setMinimizedDockedStack(boolean minimizedDock, boolean animate) {
final boolean wasMinimized = mMinimizedDock;
mMinimizedDock = minimizedDock;
- if (minimizedDock == wasMinimized
- || mDisplayContent.getDockedStackVisibleForUserLocked() == null) {
+ if (minimizedDock == wasMinimized) {
return;
}
@@ -692,4 +695,16 @@ public class DockedStackDividerController implements DimLayerUser {
WindowState getWindow() {
return mWindow;
}
+
+ void dump(String prefix, PrintWriter pw) {
+ pw.println(prefix + "DockedStackDividerController");
+ pw.println(prefix + " mLastVisibility=" + mLastVisibility);
+ pw.println(prefix + " mMinimizedDock=" + mMinimizedDock);
+ pw.println(prefix + " mAdjustedForIme=" + mAdjustedForIme);
+ pw.println(prefix + " mAdjustedForDivider=" + mAdjustedForDivider);
+ if (mDimLayer.isDimming()) {
+ pw.println(prefix + " Dim layer is dimming: ");
+ mDimLayer.printTo(prefix + " ", pw);
+ }
+ }
}
diff --git a/services/core/java/com/android/server/wm/Session.java b/services/core/java/com/android/server/wm/Session.java
index daeb860e2ef5..08c0a4b01357 100644
--- a/services/core/java/com/android/server/wm/Session.java
+++ b/services/core/java/com/android/server/wm/Session.java
@@ -201,8 +201,8 @@ final class Session extends IWindowSession.Stub
}
@Override
- public void prepareToReplaceChildren(IBinder appToken) {
- mService.setReplacingChildren(appToken);
+ public void prepareToReplaceWindows(IBinder appToken, boolean childrenOnly) {
+ mService.setReplacingWindows(appToken, childrenOnly);
}
public int relayout(IWindow window, int seq, WindowManager.LayoutParams attrs,
diff --git a/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java b/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java
index 0979cd32a1e2..5d3cc1694e29 100644
--- a/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java
+++ b/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java
@@ -73,4 +73,7 @@ public class WindowManagerDebugConfig {
static final boolean SHOW_LIGHT_TRANSACTIONS = false || SHOW_TRANSACTIONS;
static final boolean SHOW_STACK_CRAWLS = false;
static final boolean DEBUG_WINDOW_CROP = false;
+
+ static final String TAG_KEEP_SCREEN_ON = "DebugKeepScreenOn";
+ static final boolean DEBUG_KEEP_SCREEN_ON = true;
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index cf5cdc38bf2f..5a394d03f3ab 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -221,6 +221,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS_LIGHT;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_INPUT_METHOD;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_KEYGUARD;
+import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_KEEP_SCREEN_ON;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ORIENTATION;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_RESIZE;
@@ -240,6 +241,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.SHOW_STACK_CRAWLS;
import static com.android.server.wm.WindowManagerDebugConfig.SHOW_SURFACE_ALLOC;
import static com.android.server.wm.WindowManagerDebugConfig.SHOW_TRANSACTIONS;
import static com.android.server.wm.WindowManagerDebugConfig.SHOW_VERBOSE_TRANSACTIONS;
+import static com.android.server.wm.WindowManagerDebugConfig.TAG_KEEP_SCREEN_ON;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
import static com.android.server.wm.WindowStateAnimator.DRAW_PENDING;
@@ -509,6 +511,10 @@ public class WindowManagerService extends IWindowManager.Stub
boolean mShowingBootMessages = false;
boolean mBootAnimationStopped = false;
+ // Following variables are for debugging screen wakelock only.
+ WindowState mLastWakeLockHoldingWindow = null;
+ WindowState mLastWakeLockObscuringWindow = null;
+
/** Dump of the windows and app tokens at the time of the last ANR. Cleared after
* LAST_ANR_LIFETIME_DURATION_MSECS */
String mLastANRState;
@@ -973,7 +979,8 @@ public class WindowManagerService extends IWindowManager.Stub
mAppTransition = new AppTransition(context, this);
mAppTransition.registerListenerLocked(mActivityManagerAppTransitionNotifier);
- mBoundsAnimationController = new BoundsAnimationController(mAppTransition);
+ mBoundsAnimationController =
+ new BoundsAnimationController(mAppTransition, UiThread.getHandler());
mActivityManager = ActivityManagerNative.getDefault();
mAmInternal = LocalServices.getService(ActivityManagerInternal.class);
@@ -9279,9 +9286,21 @@ public class WindowManagerService extends IWindowManager.Stub
final boolean state = mHoldingScreenWakeLock.isHeld();
if (hold != state) {
if (hold) {
+ if (DEBUG_KEEP_SCREEN_ON) {
+ Slog.d(TAG_KEEP_SCREEN_ON, "Acquiring screen wakelock due to " +
+ mWindowPlacerLocked.mHoldScreenWindow);
+ }
+ mLastWakeLockHoldingWindow = mWindowPlacerLocked.mHoldScreenWindow;
+ mLastWakeLockObscuringWindow = null;
mHoldingScreenWakeLock.acquire();
mPolicy.keepScreenOnStartedLw();
} else {
+ if (DEBUG_KEEP_SCREEN_ON) {
+ Slog.d(TAG_KEEP_SCREEN_ON, "Releasing screen wakelock, obscured by " +
+ mWindowPlacerLocked.mObsuringWindow);
+ }
+ mLastWakeLockHoldingWindow = null;
+ mLastWakeLockObscuringWindow = mWindowPlacerLocked.mObsuringWindow;
mPolicy.keepScreenOnStoppedLw();
mHoldingScreenWakeLock.release();
}
@@ -10212,6 +10231,9 @@ public class WindowManagerService extends IWindowManager.Stub
pw.print(mLastFinishedFreezeSource);
}
pw.println();
+ pw.print(" mLastWakeLockHoldingWindow=");pw.print(mLastWakeLockHoldingWindow);
+ pw.print(" mLastWakeLockObscuringWindow="); pw.print(mLastWakeLockObscuringWindow);
+ pw.println();
mInputMonitor.dump(pw, " ");
@@ -10679,12 +10701,16 @@ public class WindowManagerService extends IWindowManager.Stub
}
/**
- * Hint to a token that its children will be replaced across activity relaunch.
- * The children would otherwise be removed shortly following this as the
+ * Hint to a token that its windows will be replaced across activity relaunch.
+ * The windows would otherwise be removed shortly following this as the
* activity is torn down.
* @param token Application token for which the activity will be relaunched.
+ * @param childrenOnly Whether to mark only child windows for replacement
+ * (for the case where main windows are being preserved/
+ * reused rather than replaced).
+ *
*/
- public void setReplacingChildren(IBinder token) {
+ public void setReplacingWindows(IBinder token, boolean childrenOnly) {
AppWindowToken appWindowToken = null;
synchronized (mWindowMap) {
appWindowToken = findAppWindowToken(token);
@@ -10694,7 +10720,12 @@ public class WindowManagerService extends IWindowManager.Stub
return;
}
- appWindowToken.setReplacingChildren();
+ if (childrenOnly) {
+ appWindowToken.setReplacingChildren();
+ } else {
+ appWindowToken.setReplacingWindows(false /* animate */);
+ }
+
scheduleClearReplacingWindowIfNeeded(token, true /* replacing */);
}
}
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 304b2a76f1f7..7341e1ea1b8c 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -1781,6 +1781,12 @@ final class WindowState implements WindowManagerPolicy.WindowState {
return false;
}
+ if (mAttrs.token != mClient.asBinder()) {
+ // The window was add by a client using another client's app token. We don't want to
+ // keep the dead window around for this case since this is meant for 'real' apps.
+ return false;
+ }
+
if (mAttrs.type == TYPE_APPLICATION_STARTING) {
// We don't keep starting windows since they were added by the window manager before
// the app even launched.
@@ -1989,12 +1995,17 @@ final class WindowState implements WindowManagerPolicy.WindowState {
return mAppToken.shouldSaveSurface();
}
+ static final Region sEmptyRegion = new Region();
+
void destroyOrSaveSurface() {
mSurfaceSaved = shouldSaveSurface();
if (mSurfaceSaved) {
if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) {
Slog.v(TAG, "Saving surface: " + this);
}
+ // Previous user of the surface may have set a transparent region signaling a portion
+ // doesn't need to be composited, so reset to default empty state.
+ mSession.setTransparentRegion(mClient, sEmptyRegion);
mWinAnimator.hide("saved surface");
mWinAnimator.mDrawState = WindowStateAnimator.NO_SURFACE;
diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
index a45ae6002692..fb4be303ced3 100644
--- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
+++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
@@ -19,7 +19,6 @@ import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM;
import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_CONFIG;
import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_LAYOUT;
import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
-import static com.android.server.wm.AppWindowAnimator.PROLONG_ANIMATION_AT_START;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ADD_REMOVE;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_APP_TRANSITIONS;
@@ -32,8 +31,10 @@ import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_TOKEN_MOVEMEN
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_VISIBILITY;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WALLPAPER_LIGHT;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WINDOW_TRACE;
+import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_KEEP_SCREEN_ON;
import static com.android.server.wm.WindowManagerDebugConfig.SHOW_LIGHT_TRANSACTIONS;
import static com.android.server.wm.WindowManagerDebugConfig.SHOW_TRANSACTIONS;
+import static com.android.server.wm.WindowManagerDebugConfig.TAG_KEEP_SCREEN_ON;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
import static com.android.server.wm.WindowManagerService.H.DO_TRAVERSAL;
@@ -71,6 +72,8 @@ import android.view.View;
import android.view.WindowManager.LayoutParams;
import android.view.animation.Animation;
+import com.android.server.wm.WindowManagerService.H;
+
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -131,6 +134,12 @@ class WindowSurfacePlacer {
private boolean mSustainedPerformanceModeEnabled = false;
private boolean mSustainedPerformanceModeCurrent = false;
+ // Following variables are for debugging screen wakelock only.
+ // Last window that requires screen wakelock
+ WindowState mHoldScreenWindow = null;
+ // Last window that obscures all windows below
+ WindowState mObsuringWindow = null;
+
private static final class LayerAndToken {
public int layer;
public AppWindowToken token;
@@ -287,6 +296,8 @@ class WindowSurfacePlacer {
}
mHoldScreen = null;
+ mHoldScreenWindow = null;
+ mObsuringWindow = null;
mScreenBrightness = -1;
mButtonBrightness = -1;
mUserActivityTimeout = -1;
@@ -1052,7 +1063,7 @@ class WindowSurfacePlacer {
mService.mSkipAppTransitionAnimation = false;
mService.mNoAnimationNotifyOnTransitionFinished.clear();
- mService.mH.removeMessages(APP_TRANSITION_TIMEOUT);
+ mService.mH.removeMessages(H.APP_TRANSITION_TIMEOUT);
mService.rebuildAppWindowListLocked();
@@ -1424,12 +1435,21 @@ class WindowSurfacePlacer {
// This window completely covers everything behind it,
// so we want to leave all of them as undimmed (for
// performance reasons).
+ if (!mObscured) {
+ mObsuringWindow = w;
+ }
+
mObscured = true;
}
if (w.mHasSurface) {
if ((attrFlags&FLAG_KEEP_SCREEN_ON) != 0) {
mHoldScreen = w.mSession;
+ mHoldScreenWindow = w;
+ } else if (DEBUG_KEEP_SCREEN_ON && w == mService.mLastWakeLockHoldingWindow) {
+ Slog.d(TAG_KEEP_SCREEN_ON, "handleNotObscuredLocked: " + w + " was holding "
+ + "screen wakelock but no longer has FLAG_KEEP_SCREEN_ON!!! called by"
+ + Debug.getCallers(10));
}
if (!mSyswin && w.mAttrs.screenBrightness >= 0
&& mScreenBrightness < 0) {
@@ -1685,5 +1705,7 @@ class WindowSurfacePlacer {
public void dump(PrintWriter pw, String prefix) {
pw.print(prefix); pw.print("mTraversalScheduled="); pw.println(mTraversalScheduled);
+ pw.print(prefix); pw.print("mHoldScreenWindow="); pw.println(mHoldScreenWindow);
+ pw.print(prefix); pw.print("mObsuringWindow="); pw.println(mObsuringWindow);
}
}
diff --git a/services/core/jni/com_android_server_tv_TvInputHal.cpp b/services/core/jni/com_android_server_tv_TvInputHal.cpp
index c4316f63220d..ec4a3d330bcc 100644
--- a/services/core/jni/com_android_server_tv_TvInputHal.cpp
+++ b/services/core/jni/com_android_server_tv_TvInputHal.cpp
@@ -54,7 +54,6 @@ static struct {
jmethodID maxWidth;
jmethodID maxHeight;
jmethodID generation;
- jmethodID flags;
jmethodID build;
} gTvStreamConfigBuilderClassInfo;
@@ -240,7 +239,7 @@ public:
int addOrUpdateStream(int deviceId, int streamId, const sp<Surface>& surface);
int removeStream(int deviceId, int streamId);
- const tv_stream_config_ext_t* getStreamConfigs(int deviceId, int* numConfigs);
+ const tv_stream_config_t* getStreamConfigs(int deviceId, int* numConfigs);
void onDeviceAvailable(const tv_input_device_info_t& info);
void onDeviceUnavailable(int deviceId);
@@ -289,15 +288,10 @@ private:
sp<Looper> mLooper;
KeyedVector<int, KeyedVector<int, Connection> > mConnections;
-
- tv_stream_config_ext_t* mConfigBuffer;
- int mConfigBufferSize;
};
JTvInputHal::JTvInputHal(JNIEnv* env, jobject thiz, tv_input_device_t* device,
- const sp<Looper>& looper)
- : mConfigBuffer(NULL),
- mConfigBufferSize(0) {
+ const sp<Looper>& looper) {
mThiz = env->NewWeakGlobalRef(thiz);
mDevice = device;
mCallback.notify = &JTvInputHal::notify;
@@ -312,10 +306,6 @@ JTvInputHal::~JTvInputHal() {
JNIEnv* env = AndroidRuntime::getJNIEnv();
env->DeleteWeakGlobalRef(mThiz);
mThiz = NULL;
-
- if (mConfigBuffer != NULL) {
- delete[] mConfigBuffer;
- }
}
JTvInputHal* JTvInputHal::createInstance(JNIEnv* env, jobject thiz, const sp<Looper>& looper) {
@@ -364,14 +354,15 @@ int JTvInputHal::addOrUpdateStream(int deviceId, int streamId, const sp<Surface>
if (connection.mSourceHandle == NULL && connection.mThread == NULL) {
// Need to configure stream
int numConfigs = 0;
- const tv_stream_config_ext_t* configs = getStreamConfigs(deviceId, &numConfigs);
- if (configs == NULL) {
+ const tv_stream_config_t* configs = NULL;
+ if (mDevice->get_stream_configurations(
+ mDevice, deviceId, &numConfigs, &configs) != 0) {
ALOGE("Couldn't get stream configs");
return UNKNOWN_ERROR;
}
int configIndex = -1;
for (int i = 0; i < numConfigs; ++i) {
- if (configs[i].config.stream_id == streamId) {
+ if (configs[i].stream_id == streamId) {
configIndex = i;
break;
}
@@ -380,13 +371,13 @@ int JTvInputHal::addOrUpdateStream(int deviceId, int streamId, const sp<Surface>
ALOGE("Cannot find a config with given stream ID: %d", streamId);
return BAD_VALUE;
}
- connection.mStreamType = configs[configIndex].config.type;
+ connection.mStreamType = configs[configIndex].type;
tv_stream_t stream;
- stream.stream_id = configs[configIndex].config.stream_id;
+ stream.stream_id = configs[configIndex].stream_id;
if (connection.mStreamType == TV_STREAM_TYPE_BUFFER_PRODUCER) {
- stream.buffer_producer.width = configs[configIndex].config.max_video_width;
- stream.buffer_producer.height = configs[configIndex].config.max_video_height;
+ stream.buffer_producer.width = configs[configIndex].max_video_width;
+ stream.buffer_producer.height = configs[configIndex].max_video_height;
}
if (mDevice->open_stream(mDevice, deviceId, &stream) != 0) {
ALOGE("Couldn't add stream");
@@ -440,33 +431,12 @@ int JTvInputHal::removeStream(int deviceId, int streamId) {
return NO_ERROR;
}
-const tv_stream_config_ext_t* JTvInputHal::getStreamConfigs(int deviceId, int* numConfigs) {
- const tv_stream_config_ext_t* configs = NULL;
- if (mDevice->common.version >= TV_INPUT_DEVICE_API_VERSION_0_2) {
- if (mDevice->get_stream_configurations_ext(
- mDevice, deviceId, numConfigs, &configs) != 0) {
- ALOGE("Couldn't get stream configs");
- return NULL;
- }
- } else {
- const tv_stream_config_t* oldConfigs;
- if (mDevice->get_stream_configurations(
- mDevice, deviceId, numConfigs, &oldConfigs) != 0) {
- ALOGE("Couldn't get stream configs");
- return NULL;
- }
- if (mConfigBufferSize < *numConfigs) {
- mConfigBufferSize = (*numConfigs / 16 + 1) * 16;
- if (mConfigBuffer != NULL) {
- delete[] mConfigBuffer;
- }
- mConfigBuffer = new tv_stream_config_ext_t[mConfigBufferSize];
- }
- for (int i = 0; i < *numConfigs; ++i) {
- mConfigBuffer[i].config = oldConfigs[i];
- mConfigBuffer[i].flags = 0;
- }
- configs = mConfigBuffer;
+const tv_stream_config_t* JTvInputHal::getStreamConfigs(int deviceId, int* numConfigs) {
+ const tv_stream_config_t* configs = NULL;
+ if (mDevice->get_stream_configurations(
+ mDevice, deviceId, numConfigs, &configs) != 0) {
+ ALOGE("Couldn't get stream configs");
+ return NULL;
}
return configs;
}
@@ -659,7 +629,7 @@ static jobjectArray nativeGetStreamConfigs(JNIEnv* env, jclass clazz,
jlong ptr, jint deviceId, jint generation) {
JTvInputHal* tvInputHal = (JTvInputHal*)ptr;
int numConfigs = 0;
- const tv_stream_config_ext_t* configs = tvInputHal->getStreamConfigs(deviceId, &numConfigs);
+ const tv_stream_config_t* configs = tvInputHal->getStreamConfigs(deviceId, &numConfigs);
jobjectArray result = env->NewObjectArray(numConfigs, gTvStreamConfigClassInfo.clazz, NULL);
for (int i = 0; i < numConfigs; ++i) {
@@ -667,20 +637,15 @@ static jobjectArray nativeGetStreamConfigs(JNIEnv* env, jclass clazz,
gTvStreamConfigBuilderClassInfo.clazz,
gTvStreamConfigBuilderClassInfo.constructor);
env->CallObjectMethod(
- builder, gTvStreamConfigBuilderClassInfo.streamId, configs[i].config.stream_id);
+ builder, gTvStreamConfigBuilderClassInfo.streamId, configs[i].stream_id);
env->CallObjectMethod(
- builder, gTvStreamConfigBuilderClassInfo.type, configs[i].config.type);
+ builder, gTvStreamConfigBuilderClassInfo.type, configs[i].type);
env->CallObjectMethod(
- builder, gTvStreamConfigBuilderClassInfo.maxWidth,
- configs[i].config.max_video_width);
+ builder, gTvStreamConfigBuilderClassInfo.maxWidth, configs[i].max_video_width);
env->CallObjectMethod(
- builder, gTvStreamConfigBuilderClassInfo.maxHeight,
- configs[i].config.max_video_height);
+ builder, gTvStreamConfigBuilderClassInfo.maxHeight, configs[i].max_video_height);
env->CallObjectMethod(
builder, gTvStreamConfigBuilderClassInfo.generation, generation);
- env->CallObjectMethod(
- builder, gTvStreamConfigBuilderClassInfo.flags,
- configs[i].flags);
jobject config = env->CallObjectMethod(builder, gTvStreamConfigBuilderClassInfo.build);
@@ -772,10 +737,6 @@ int register_android_server_tv_TvInputHal(JNIEnv* env) {
gTvStreamConfigBuilderClassInfo.clazz,
"generation", "(I)Landroid/media/tv/TvStreamConfig$Builder;");
GET_METHOD_ID(
- gTvStreamConfigBuilderClassInfo.flags,
- gTvStreamConfigBuilderClassInfo.clazz,
- "flags", "(I)Landroid/media/tv/TvStreamConfig$Builder;");
- GET_METHOD_ID(
gTvStreamConfigBuilderClassInfo.build,
gTvStreamConfigBuilderClassInfo.clazz,
"build", "()Landroid/media/tv/TvStreamConfig;");
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 93fbe5cd7e7a..d0128b743767 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -1395,7 +1395,12 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
boolean storageManagerIsNonDefaultBlockEncrypted() {
- return StorageManager.isNonDefaultBlockEncrypted();
+ long identity = Binder.clearCallingIdentity();
+ try {
+ return StorageManager.isNonDefaultBlockEncrypted();
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
boolean storageManagerIsEncrypted() {
@@ -4459,7 +4464,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
* @throws UnsupportedException if the package does not support being set as always-on.
*/
@Override
- public boolean setAlwaysOnVpnPackage(ComponentName admin, String vpnPackage)
+ public boolean setAlwaysOnVpnPackage(ComponentName admin, String vpnPackage, boolean lockdown)
throws SecurityException {
synchronized (this) {
getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
@@ -4473,7 +4478,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
ConnectivityManager connectivityManager = (ConnectivityManager)
mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
- if (!connectivityManager.setAlwaysOnVpnPackageForUser(userId, vpnPackage)) {
+ if (!connectivityManager.setAlwaysOnVpnPackageForUser(userId, vpnPackage, lockdown)) {
throw new UnsupportedOperationException();
}
} finally {
@@ -8866,6 +8871,10 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
Preconditions.checkNotNull(admin);
ensureDeviceOwnerManagingSingleUser(admin);
+ if (!mContext.getResources().getBoolean(R.bool.config_supportPreRebootSecurityLogs)) {
+ return null;
+ }
+
ArrayList<SecurityEvent> output = new ArrayList<SecurityEvent>();
try {
SecurityLog.readPreviousEvents(output);
diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java
index 002b0e2dcf03..3779d8720a9d 100644
--- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java
+++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java
@@ -482,34 +482,6 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener {
return status;
}
- /**
- * Stops all recognitions active currently and clears the internal state.
- */
- void stopAllRecognitions() {
- synchronized (mLock) {
- MetricsLogger.count(mContext, "sth_stop_all_recognitions", 1);
- if (mModuleProperties == null || mModule == null) {
- return;
- }
-
- // Stop all recognition models.
- for (ModelData model : mModelDataMap.values()) {
- if (model.isModelStarted()) {
- int status = stopRecognitionLocked(model,
- false /* do not notify for synchronous calls */);
- if (status != STATUS_OK) {
- Slog.w(TAG, "Error stopping model: " + model.getHandle());
- }
- model.setStopped();
- model.setRequested(false);
- model.clearCallback();
- model.setRecognitionConfig(null);
- }
- }
- internalClearGlobalStateLocked();
- }
- }
-
public ModuleProperties getModuleProperties() {
return mModuleProperties;
}
diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerInternal.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerInternal.java
index 113431f2de7e..d05e044499ab 100644
--- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerInternal.java
+++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerInternal.java
@@ -68,13 +68,11 @@ public abstract class SoundTriggerInternal {
*/
public abstract int stopRecognition(int keyphraseId, IRecognitionStatusCallback listener);
- /**
- * Stops all recognitions active currently and clears the internal state.
- */
- public abstract void stopAllRecognitions();
-
public abstract ModuleProperties getModuleProperties();
+ /**
+ * Unloads (and stops if running) the given keyphraseId
+ */
public abstract int unloadKeyphraseModel(int keyphaseId);
public abstract void dump(FileDescriptor fd, PrintWriter pw, String[] args);
diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java
index a4c1210ba188..9bca0128cc43 100644
--- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java
+++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java
@@ -206,12 +206,6 @@ public class SoundTriggerService extends SystemService {
}
@Override
- public void stopAllRecognitions() {
- if (!isInitialized()) return;
- mSoundTriggerHelper.stopAllRecognitions();
- }
-
- @Override
public ModuleProperties getModuleProperties() {
if (!isInitialized()) return null;
return mSoundTriggerHelper.getModuleProperties();
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
index 386c3aa1b2a4..57d68fd9e37e 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
@@ -69,6 +69,7 @@ import com.android.server.UiThread;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.List;
+import java.util.TreeSet;
/**
* SystemService that publishes an IVoiceInteractionManagerService.
@@ -81,6 +82,7 @@ public class VoiceInteractionManagerService extends SystemService {
final ContentResolver mResolver;
final DatabaseHelper mDbHelper;
final ActivityManagerInternal mAmInternal;
+ final TreeSet<Integer> mLoadedKeyphraseIds;
SoundTriggerInternal mSoundTriggerInternal;
public VoiceInteractionManagerService(Context context) {
@@ -90,6 +92,7 @@ public class VoiceInteractionManagerService extends SystemService {
mDbHelper = new DatabaseHelper(context);
mServiceStub = new VoiceInteractionManagerServiceStub();
mAmInternal = LocalServices.getService(ActivityManagerInternal.class);
+ mLoadedKeyphraseIds = new TreeSet<Integer>();
PackageManagerInternal packageManagerInternal = LocalServices.getService(
PackageManagerInternal.class);
@@ -394,7 +397,7 @@ public class VoiceInteractionManagerService extends SystemService {
if (force || mImpl == null || mImpl.mUser != mCurUser
|| !mImpl.mComponent.equals(serviceComponent)) {
- mSoundTriggerInternal.stopAllRecognitions();
+ unloadAllKeyphraseModels();
if (mImpl != null) {
mImpl.shutdownLocked();
}
@@ -785,6 +788,7 @@ public class VoiceInteractionManagerService extends SystemService {
if (mImpl != null && mImpl.mService != null) {
mImpl.notifySoundModelsChangedLocked();
}
+ mLoadedKeyphraseIds.remove(keyphraseId);
}
}
Binder.restoreCallingIdentity(caller);
@@ -865,6 +869,11 @@ public class VoiceInteractionManagerService extends SystemService {
Slog.w(TAG, "No matching sound model found in startRecognition");
return SoundTriggerInternal.STATUS_ERROR;
} else {
+ // Regardless of the status of the start recognition, we need to make sure
+ // that we unload this model if needed later.
+ synchronized (this) {
+ mLoadedKeyphraseIds.add(keyphraseId);
+ }
return mSoundTriggerInternal.startRecognition(
keyphraseId, soundModel, callback, recognitionConfig);
}
@@ -893,6 +902,21 @@ public class VoiceInteractionManagerService extends SystemService {
}
}
+ private synchronized void unloadAllKeyphraseModels() {
+ for (int keyphraseId : mLoadedKeyphraseIds) {
+ final long caller = Binder.clearCallingIdentity();
+ try {
+ int status = mSoundTriggerInternal.unloadKeyphraseModel(keyphraseId);
+ if (status != SoundTriggerInternal.STATUS_OK) {
+ Slog.w(TAG, "Failed to unload keyphrase " + keyphraseId + ":" + status);
+ }
+ } finally {
+ Binder.restoreCallingIdentity(caller);
+ }
+ }
+ mLoadedKeyphraseIds.clear();
+ }
+
@Override
public ComponentName getActiveServiceComponentName() {
enforceCallingPermission(Manifest.permission.ACCESS_VOICE_INTERACTION_SERVICE);
@@ -1078,7 +1102,7 @@ public class VoiceInteractionManagerService extends SystemService {
// The user is force stopping our current interactor/recognizer.
// Clear the current settings and restore default state.
synchronized (VoiceInteractionManagerService.this) {
- mSoundTriggerInternal.stopAllRecognitions();
+ unloadAllKeyphraseModels();
if (mImpl != null) {
mImpl.shutdownLocked();
mImpl = null;
diff --git a/telephony/java/android/telephony/CellIdentityGsm.java b/telephony/java/android/telephony/CellIdentityGsm.java
index 74f11719d237..ec008e285bb2 100644
--- a/telephony/java/android/telephony/CellIdentityGsm.java
+++ b/telephony/java/android/telephony/CellIdentityGsm.java
@@ -216,7 +216,12 @@ public final class CellIdentityGsm implements Parcelable {
mLac = in.readInt();
mCid = in.readInt();
mArfcn = in.readInt();
- mBsic = in.readInt();
+ int bsic = in.readInt();
+ // In RIL BSIC is a UINT8, so 0xFF is the 'INVALID' designator
+ // for inbound parcels
+ if (bsic == 0xFF) bsic = Integer.MAX_VALUE;
+ mBsic = bsic;
+
if (DBG) log("CellIdentityGsm(Parcel): " + toString());
}
diff --git a/telephony/java/android/telephony/CellSignalStrengthCdma.java b/telephony/java/android/telephony/CellSignalStrengthCdma.java
index be13acc99dcc..047436207ada 100644
--- a/telephony/java/android/telephony/CellSignalStrengthCdma.java
+++ b/telephony/java/android/telephony/CellSignalStrengthCdma.java
@@ -145,7 +145,8 @@ public final class CellSignalStrengthCdma extends CellSignalStrength implements
int cdmaAsuLevel;
int ecioAsuLevel;
- if (cdmaDbm >= -75) cdmaAsuLevel = 16;
+ if (cdmaDbm == Integer.MAX_VALUE) cdmaAsuLevel = 99;
+ else if (cdmaDbm >= -75) cdmaAsuLevel = 16;
else if (cdmaDbm >= -82) cdmaAsuLevel = 8;
else if (cdmaDbm >= -90) cdmaAsuLevel = 4;
else if (cdmaDbm >= -95) cdmaAsuLevel = 2;
@@ -153,7 +154,8 @@ public final class CellSignalStrengthCdma extends CellSignalStrength implements
else cdmaAsuLevel = 99;
// Ec/Io are in dB*10
- if (cdmaEcio >= -90) ecioAsuLevel = 16;
+ if (cdmaEcio == Integer.MAX_VALUE) ecioAsuLevel = 99;
+ else if (cdmaEcio >= -90) ecioAsuLevel = 16;
else if (cdmaEcio >= -100) ecioAsuLevel = 8;
else if (cdmaEcio >= -115) ecioAsuLevel = 4;
else if (cdmaEcio >= -130) ecioAsuLevel = 2;
@@ -174,14 +176,16 @@ public final class CellSignalStrengthCdma extends CellSignalStrength implements
int levelDbm;
int levelEcio;
- if (cdmaDbm >= -75) levelDbm = SIGNAL_STRENGTH_GREAT;
+ if (cdmaDbm == Integer.MAX_VALUE) levelDbm = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ else if (cdmaDbm >= -75) levelDbm = SIGNAL_STRENGTH_GREAT;
else if (cdmaDbm >= -85) levelDbm = SIGNAL_STRENGTH_GOOD;
else if (cdmaDbm >= -95) levelDbm = SIGNAL_STRENGTH_MODERATE;
else if (cdmaDbm >= -100) levelDbm = SIGNAL_STRENGTH_POOR;
else levelDbm = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
// Ec/Io are in dB*10
- if (cdmaEcio >= -90) levelEcio = SIGNAL_STRENGTH_GREAT;
+ if (cdmaEcio == Integer.MAX_VALUE) levelEcio = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ else if (cdmaEcio >= -90) levelEcio = SIGNAL_STRENGTH_GREAT;
else if (cdmaEcio >= -110) levelEcio = SIGNAL_STRENGTH_GOOD;
else if (cdmaEcio >= -130) levelEcio = SIGNAL_STRENGTH_MODERATE;
else if (cdmaEcio >= -150) levelEcio = SIGNAL_STRENGTH_POOR;
@@ -201,13 +205,15 @@ public final class CellSignalStrengthCdma extends CellSignalStrength implements
int levelEvdoDbm;
int levelEvdoSnr;
- if (evdoDbm >= -65) levelEvdoDbm = SIGNAL_STRENGTH_GREAT;
+ if (evdoDbm == Integer.MAX_VALUE) levelEvdoDbm = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ else if (evdoDbm >= -65) levelEvdoDbm = SIGNAL_STRENGTH_GREAT;
else if (evdoDbm >= -75) levelEvdoDbm = SIGNAL_STRENGTH_GOOD;
else if (evdoDbm >= -90) levelEvdoDbm = SIGNAL_STRENGTH_MODERATE;
else if (evdoDbm >= -105) levelEvdoDbm = SIGNAL_STRENGTH_POOR;
else levelEvdoDbm = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
- if (evdoSnr >= 7) levelEvdoSnr = SIGNAL_STRENGTH_GREAT;
+ if (evdoSnr == Integer.MAX_VALUE) levelEvdoSnr = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ else if (evdoSnr >= 7) levelEvdoSnr = SIGNAL_STRENGTH_GREAT;
else if (evdoSnr >= 5) levelEvdoSnr = SIGNAL_STRENGTH_GOOD;
else if (evdoSnr >= 3) levelEvdoSnr = SIGNAL_STRENGTH_MODERATE;
else if (evdoSnr >= 1) levelEvdoSnr = SIGNAL_STRENGTH_POOR;
@@ -332,10 +338,11 @@ public final class CellSignalStrengthCdma extends CellSignalStrength implements
if (DBG) log("writeToParcel(Parcel, int): " + toString());
// Need to multiply CdmaDbm, CdmaEcio, EvdoDbm and EvdoEcio by -1
// to ensure consistency when reading values written here
- dest.writeInt(mCdmaDbm * -1);
- dest.writeInt(mCdmaEcio * -1);
- dest.writeInt(mEvdoDbm * -1);
- dest.writeInt(mEvdoEcio * -1);
+ // unless the value is invalid
+ dest.writeInt(mCdmaDbm * (mCdmaDbm != Integer.MAX_VALUE ? -1 : 1));
+ dest.writeInt(mCdmaEcio * (mCdmaEcio != Integer.MAX_VALUE ? -1 : 1));
+ dest.writeInt(mEvdoDbm * (mEvdoDbm != Integer.MAX_VALUE ? -1 : 1));
+ dest.writeInt(mEvdoEcio * (mEvdoEcio != Integer.MAX_VALUE ? -1 : 1));
dest.writeInt(mEvdoSnr);
}
@@ -346,11 +353,15 @@ public final class CellSignalStrengthCdma extends CellSignalStrength implements
private CellSignalStrengthCdma(Parcel in) {
// CdmaDbm, CdmaEcio, EvdoDbm and EvdoEcio are written into
// the parcel as positive values.
- // Need to convert into negative values
- mCdmaDbm = in.readInt() * -1;
- mCdmaEcio = in.readInt() * -1;
- mEvdoDbm = in.readInt() * -1;
- mEvdoEcio = in.readInt() * -1;
+ // Need to convert into negative values unless the value is invalid
+ mCdmaDbm = in.readInt();
+ if (mCdmaDbm != Integer.MAX_VALUE) mCdmaDbm *= -1;
+ mCdmaEcio = in.readInt();
+ if (mCdmaEcio != Integer.MAX_VALUE) mCdmaEcio *= -1;
+ mEvdoDbm = in.readInt();
+ if (mEvdoDbm != Integer.MAX_VALUE) mEvdoDbm *= -1;
+ mEvdoEcio = in.readInt();
+ if (mEvdoEcio != Integer.MAX_VALUE) mEvdoEcio *= -1;
mEvdoSnr = in.readInt();
if (DBG) log("CellSignalStrengthCdma(Parcel): " + toString());
}
diff --git a/telephony/java/android/telephony/CellSignalStrengthLte.java b/telephony/java/android/telephony/CellSignalStrengthLte.java
index 2606466146e3..3c0a8d6f8a38 100644
--- a/telephony/java/android/telephony/CellSignalStrengthLte.java
+++ b/telephony/java/android/telephony/CellSignalStrengthLte.java
@@ -197,7 +197,8 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P
public int getAsuLevel() {
int lteAsuLevel = 99;
int lteDbm = getDbm();
- if (lteDbm <= -140) lteAsuLevel = 0;
+ if (lteDbm == Integer.MAX_VALUE) lteAsuLevel = 99;
+ else if (lteDbm <= -140) lteAsuLevel = 0;
else if (lteDbm >= -43) lteAsuLevel = 97;
else lteAsuLevel = lteDbm + 140;
if (DBG) log("Lte Asu level: "+lteAsuLevel);
@@ -263,8 +264,9 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P
dest.writeInt(mSignalStrength);
// Need to multiply rsrp and rsrq by -1
// to ensure consistency when reading values written here
- dest.writeInt(mRsrp * -1);
- dest.writeInt(mRsrq * -1);
+ // unless the values are invalid
+ dest.writeInt(mRsrp * (mRsrp != Integer.MAX_VALUE ? -1 : 1));
+ dest.writeInt(mRsrq * (mRsrq != Integer.MAX_VALUE ? -1 : 1));
dest.writeInt(mRssnr);
dest.writeInt(mCqi);
dest.writeInt(mTimingAdvance);
@@ -277,9 +279,11 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P
private CellSignalStrengthLte(Parcel in) {
mSignalStrength = in.readInt();
// rsrp and rsrq are written into the parcel as positive values.
- // Need to convert into negative values
- mRsrp = in.readInt() * -1;
- mRsrq = in.readInt() * -1;
+ // Need to convert into negative values unless the values are invalid
+ mRsrp = in.readInt();
+ if (mRsrp != Integer.MAX_VALUE) mRsrp *= -1;
+ mRsrq = in.readInt();
+ if (mRsrq != Integer.MAX_VALUE) mRsrq *= -1;
mRssnr = in.readInt();
mCqi = in.readInt();
mTimingAdvance = in.readInt();
diff --git a/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java b/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java
index 033312b76edd..085b7aaaa9e5 100644
--- a/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java
+++ b/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java
@@ -60,6 +60,7 @@ public class AppLaunch extends InstrumentationTestCase {
// optional parameter: comma separated list of required account types before proceeding
// with the app launch
private static final String KEY_REQUIRED_ACCOUNTS = "required_accounts";
+ private static final String KEY_SKIP_INITIAL_LAUNCH = "skip_initial_launch";
private static final String WEARABLE_ACTION_GOOGLE =
"com.google.android.wearable.action.GOOGLE";
private static final int INITIAL_LAUNCH_IDLE_TIMEOUT = 60000; //60s to allow app to idle
@@ -74,6 +75,7 @@ public class AppLaunch extends InstrumentationTestCase {
private int mLaunchIterations = 10;
private Bundle mResult = new Bundle();
private Set<String> mRequiredAccounts;
+ private boolean mSkipInitialLaunch = false;
@Override
protected void setUp() throws Exception {
@@ -97,20 +99,22 @@ public class AppLaunch extends InstrumentationTestCase {
parseArgs(args);
checkAccountSignIn();
- // do initial app launch, without force stopping
- for (String app : mNameToResultKey.keySet()) {
- long launchTime = startApp(app, false);
- if (launchTime <= 0) {
- mNameToLaunchTime.put(app, -1L);
- // simply pass the app if launch isn't successful
- // error should have already been logged by startApp
- continue;
- } else {
- mNameToLaunchTime.put(app, launchTime);
+ if (!mSkipInitialLaunch) {
+ // do initial app launch, without force stopping
+ for (String app : mNameToResultKey.keySet()) {
+ long launchTime = startApp(app, false);
+ if (launchTime <= 0) {
+ mNameToLaunchTime.put(app, -1L);
+ // simply pass the app if launch isn't successful
+ // error should have already been logged by startApp
+ continue;
+ } else {
+ mNameToLaunchTime.put(app, launchTime);
+ }
+ sleep(INITIAL_LAUNCH_IDLE_TIMEOUT);
+ closeApp(app, false);
+ sleep(BETWEEN_LAUNCH_SLEEP_TIMEOUT);
}
- sleep(INITIAL_LAUNCH_IDLE_TIMEOUT);
- closeApp(app, false);
- sleep(BETWEEN_LAUNCH_SLEEP_TIMEOUT);
}
// do the real app launch now
for (int i = 0; i < mLaunchIterations; i++) {
@@ -174,6 +178,7 @@ public class AppLaunch extends InstrumentationTestCase {
mRequiredAccounts.add(accountType);
}
}
+ mSkipInitialLaunch = "true".equals(args.getString(KEY_SKIP_INITIAL_LAUNCH));
}
private boolean hasLeanback(Context context) {
diff --git a/tools/layoutlib/bridge/src/android/graphics/Bitmap_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Bitmap_Delegate.java
index 6d8ecd7c1b96..f1da3a266448 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Bitmap_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Bitmap_Delegate.java
@@ -303,6 +303,13 @@ public final class Bitmap_Delegate {
}
@LayoutlibDelegate
+ /*package*/ static Bitmap nativeCopyAshmemConfig(long nativeSrcBitmap, int nativeConfig) {
+ // Unused method; no implementation provided.
+ assert false;
+ return null;
+ }
+
+ @LayoutlibDelegate
/*package*/ static long nativeGetNativeFinalizer() {
synchronized (Bitmap_Delegate.class) {
if (sFinalizer == -1) {
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowSession.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowSession.java
index 5a6a00fc3985..7582fda6a0fb 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowSession.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowSession.java
@@ -233,7 +233,7 @@ public final class BridgeWindowSession implements IWindowSession {
}
@Override
- public void prepareToReplaceChildren(IBinder appToken) {
+ public void prepareToReplaceWindows(IBinder appToken, boolean childrenOnly) {
// pass for now.
}